/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ro.nextreports.server.web.chart; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.validation.validator.RangeValidator; import org.springframework.beans.factory.annotation.Required; import ro.nextreports.server.domain.Chart; import ro.nextreports.server.domain.DataSource; import ro.nextreports.server.report.next.NextUtil; import ro.nextreports.server.service.StorageService; import ro.nextreports.server.util.ChartUtil; import ro.nextreports.server.web.common.util.ZeroRangeValidator; import ro.nextreports.server.web.dashboard.WidgetRuntimeModel; import ro.nextreports.server.web.report.DynamicParameterRuntimePanel; import ro.nextreports.engine.Report; import ro.nextreports.engine.i18n.I18nLanguage; import ro.nextreports.engine.i18n.I18nUtil; /** * User: mihai.panaitescu * Date: 01-Feb-2010 * Time: 15:08:21 */ public class ChartRuntimePanel extends DynamicParameterRuntimePanel { private Chart chart; @SpringBean StorageService storageService; public ChartRuntimePanel(String id, final Chart chart, WidgetRuntimeModel runtimeModel) { super(id, false); this.chart = chart; if (runtimeModel.getChartType() == null) { runtimeModel.setChartType(ChartUtil.CHART_LINE); } init(runtimeModel); } @SuppressWarnings("unchecked") public void addWicketComponents() { ChoiceRenderer<String> typeRenderer = new ChoiceRenderer<String>() { @Override public Object getDisplayValue(String chartType) { if (chartType == null) { return ChartUtil.CHART_NONE; } else if (chartType.equals(ChartUtil.CHART_BAR)) { return getString("chart.bar"); } else if (chartType.equals(ChartUtil.CHART_NEGATIVE_BAR)) { return getString("chart.negativebar"); } else if (chartType.equals(ChartUtil.CHART_BAR_COMBO)) { return getString("chart.barcombo"); } else if (chartType.equals(ChartUtil.CHART_HORIZONTAL_BAR)) { return getString("chart.horizontalbar"); } else if (chartType.equals(ChartUtil.CHART_STACKED_BAR)) { return getString("chart.stackedbar"); } else if (chartType.equals(ChartUtil.CHART_STACKED_BAR_COMBO)) { return getString("chart.stackedbarcombo"); } else if (chartType.equals(ChartUtil.CHART_HORIZONTAL_STACKED_BAR)) { return getString("chart.horizontalstackedbar"); } else if (chartType.equals(ChartUtil.CHART_PIE)) { return getString("chart.pie"); } else if (chartType.equals(ChartUtil.CHART_LINE)) { return getString("chart.line"); } else if (chartType.equals(ChartUtil.CHART_AREA)) { return getString("chart.area"); } else if (chartType.equals(ChartUtil.CHART_BUBBLE)) { return getString("chart.bubble"); } else { return ChartUtil.CHART_NONE; } } }; DropDownChoice exportChoice = new DropDownChoice("chartType", new PropertyModel(runtimeModel, "chartType"), ChartUtil.CHART_TYPES, typeRenderer); exportChoice.setRequired(true); add(exportChoice); TextField<Integer> refreshText = new TextField<Integer>("refreshTime", new PropertyModel(runtimeModel, "refreshTime")); refreshText.add(new ZeroRangeValidator(10, 3600)); refreshText.setRequired(true); add(refreshText); TextField<Integer> timeoutText = new TextField<Integer>("timeout", new PropertyModel(runtimeModel, "timeout")); timeoutText.add(new RangeValidator<Integer>(5, 600)); timeoutText.setLabel(new Model<String>("Timeout")); timeoutText.setRequired(true); add(timeoutText); } public Report getNextReport() { return NextUtil.getNextReport(storageService.getSettings(), chart); } public I18nLanguage getLocaleLanguage() { return I18nUtil.getLocaleLanguage(NextUtil.getNextChart(chart)); } public DataSource getDataSource() { return chart.getDataSource(); } @Required public void setStorageService(StorageService storageService) { this.storageService = storageService; } }