Hi, I have the following code:
*LearningCurveChartPanel* *public* LearningCurveChartPanel(String aId, IModel<AnnotatorState> aModel) { *super*(aId); model = aModel; //initially the chart is empty. passing empty model chartPanel = *new* ChartPanel(*MID_CHART_CONTAINER*, LoadableDetachableModel.*of*(*this*::renderChart)); chartPanel.setOutputMarkupId(*true*); add(chartPanel); } @OnEvent *public* *void* onRenderAnnotations(RenderAnnotationsEvent aEvent) { LOG.trace("rendered annotation event"); aEvent.getRequestHandler().add(*this*); } *ChartPanel* *public* ChartPanel(String aId, LoadableDetachableModel<LearningCurve> loadableDetachableModel) { *super*(aId); chartModel = (loadableDetachableModel); chart = *new* WebMarkupContainer(*MID_CHART_CONTAINER*); chart.setMarkupId("canvas"); chart.setOutputMarkupId(*true*); add(chart); chartAjaxBejavior = *new* ChartAjaxBejavior(); add(chartAjaxBejavior); } Here I am adding ChartPanel in the constructor of LearningCurveChartPanel and as the LearningCurveChartPanel loads the chart panel is loaded with the data that is returned by renderChart. I want to do such that the ChartPanel only renders when I click a button. How do I change the below line to chartPanel = *new* ChartPanel(*MID_CHART_CONTAINER*, LoadableDetachableModel.*of*(*this*::renderChart)); And how do I define such thing in the onClick event?