/** SpagoBI, the Open Source Business Intelligence suite Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. **/ package it.eng.spagobi.studio.highchart.editors.sections; import it.eng.spagobi.studio.highchart.editors.HighChartEditor; import it.eng.spagobi.studio.highchart.model.bo.Chart; import it.eng.spagobi.studio.highchart.model.bo.HighChart; import it.eng.spagobi.studio.highchart.utils.ColorButton; import it.eng.spagobi.studio.highchart.utils.SWTUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ChartSection extends AbstractSection { private static Logger logger = LoggerFactory.getLogger(ChartSection.class); Label typeLabel; Combo typeCombo; Text styleText; ColorButton backgroundColorButton; Button animationCheck; Button shadowCheck; Text margintext; Spinner widthSpinner; Spinner heightSpinner; Spinner marginTopSpinner; Spinner marginRightSpinner; Spinner marginBottomSpinner; Spinner marginLeftSpinner; Spinner spacingTopSpinner; Spinner spacingRightSpinner; Spinner spacingBottomSpinner; Spinner spacingLeftSpinner; Button showAxesCheck; ColorButton plotBackgroundColorButton; Text plotBackgroundImageText; ColorButton plotBorderColorButton; Spinner plotBorderWidthSpinner; Button plotShadowCheck; Button ignoreHiddenSeriesCheck; Text classNameText; Button invertedCheck; Combo zoomTypeCombo; ColorButton borderColorButton; Spinner borderRadiusSpinner; Spinner borderWidthSpinner; Button alignTicksButton; Button renderToText; Group generalGroup; Group plotGroup; Group marginGroup; Group borderGroup; public ChartSection(HighChart highChart) { super(highChart); } public void addListeners(){ logger.debug("IN"); styleText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); String value = styleText.getText(); highChart.getChart().setStyle(value); } }); typeCombo.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { editor.setIsDirty(true); String value = typeCombo.getItem(typeCombo.getSelectionIndex()); highChart.getChart().setDefaultSeriesType(value); } }); borderColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = borderColorButton.handleSelctionEvent(borderColorButton.getColorLabel().getShell()); highChart.getChart().setBorderColor(colorSelected); editor.setIsDirty(true); } }); backgroundColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = backgroundColorButton.handleSelctionEvent(backgroundColorButton.getColorLabel().getShell()); highChart.getChart().setBackgroundColor(colorSelected); editor.setIsDirty(true); } }); animationCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = animationCheck.getSelection(); highChart.getChart().setAnimation(selection); editor.setIsDirty(true); } }); shadowCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = shadowCheck.getSelection(); highChart.getChart().setShadow(selection); editor.setIsDirty(true); } }); margintext.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); String value = margintext.getText(); highChart.getChart().setMargin(value); } }); widthSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = widthSpinner.getSelection(); String s = Integer.valueOf(val).toString(); highChart.getChart().setWidth(s+"%"); } }); heightSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = heightSpinner.getSelection(); String s = Integer.valueOf(val).toString(); highChart.getChart().setHeight(s+"%"); } }); marginTopSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = marginTopSpinner.getSelection(); highChart.getChart().setMarginTop(val); } }); marginRightSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = marginRightSpinner.getSelection(); highChart.getChart().setMarginRight(val); } }); marginBottomSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = marginBottomSpinner.getSelection(); highChart.getChart().setMarginBottom(val); } }); marginLeftSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = marginLeftSpinner.getSelection(); highChart.getChart().setMarginLeft(val); } }); spacingTopSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = spacingTopSpinner.getSelection(); highChart.getChart().setSpacingTop(val); } }); spacingRightSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = spacingRightSpinner.getSelection(); highChart.getChart().setSpacingRight(val); } }); spacingBottomSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = spacingBottomSpinner.getSelection(); highChart.getChart().setSpacingBottom(val); } }); spacingLeftSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = spacingLeftSpinner.getSelection(); highChart.getChart().setSpacingLeft(val); } }); showAxesCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = showAxesCheck.getSelection(); highChart.getChart().setShowAxes(selection); editor.setIsDirty(true); } }); plotBackgroundColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = plotBackgroundColorButton.handleSelctionEvent(plotBackgroundColorButton.getColorLabel().getShell()); highChart.getChart().setPlotBackgroundColor(colorSelected); editor.setIsDirty(true); } }); plotBackgroundImageText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); String value = plotBackgroundImageText.getText(); highChart.getChart().setPlotBackgroundImage(value); } }); plotBackgroundColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = plotBackgroundColorButton.handleSelctionEvent(plotBackgroundColorButton.getColorLabel().getShell()); highChart.getChart().setPlotBackgroundColor(colorSelected); editor.setIsDirty(true); } }); plotBorderColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = plotBorderColorButton.handleSelctionEvent(plotBorderColorButton.getColorLabel().getShell()); highChart.getChart().setPlotBorderColor(colorSelected); editor.setIsDirty(true); } }); plotBorderWidthSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = plotBorderWidthSpinner.getSelection(); highChart.getChart().setPlotBorderWidth(val); } }); plotShadowCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = plotShadowCheck.getSelection(); highChart.getChart().setPlotShadow(selection); editor.setIsDirty(true); } }); ignoreHiddenSeriesCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = ignoreHiddenSeriesCheck.getSelection(); highChart.getChart().setIgnoreHiddenSeries(selection); editor.setIsDirty(true); } }); classNameText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); String value = classNameText.getText(); highChart.getChart().setClassName(value); } }); invertedCheck.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = invertedCheck.getSelection(); highChart.getChart().setInverted(selection); editor.setIsDirty(true); } }); zoomTypeCombo.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { editor.setIsDirty(true); String value = zoomTypeCombo.getItem(zoomTypeCombo.getSelectionIndex()); highChart.getChart().setZoomType(value); } }); borderColorButton.getColorButton().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String colorSelected = borderColorButton.handleSelctionEvent(borderColorButton.getColorLabel().getShell()); highChart.getChart().setBorderColor(colorSelected); editor.setIsDirty(true); } }); borderRadiusSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = borderRadiusSpinner.getSelection(); highChart.getChart().setBorderRadius(val); } }); borderWidthSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); int val = borderWidthSpinner.getSelection(); highChart.getChart().setBorderWidth(val); } }); alignTicksButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = alignTicksButton.getSelection(); highChart.getChart().setAlignTicks(selection); editor.setIsDirty(true); } }); renderToText.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { boolean selection = renderToText.getSelection(); highChart.getChart().setRenderTo(selection); editor.setIsDirty(true); } }); logger.debug("OUT"); } @Override public void drawSection(final FormToolkit toolkit, final ScrolledForm form, int cols) { super.drawSection(toolkit, form, cols); // ++++++++++++++ Chart common settings section ++++++++++++++ logger.debug("IN"); final Chart chart = highChart.getChart(); section.setText("Chart section"); section.setDescription("Fill attribute regarding the chart"); //************ Margin Group ************ generalGroup = createNColGroup("General Settings: ", 8); generalGroup.setBackground(SWTUtils.getColor(generalGroup.getDisplay(), SWTUtils.LIGHT_GREEN)); toolkit.createLabel(generalGroup, "Style: "); styleText = toolkit.createText(generalGroup, chart.getStyle(), SWT.BORDER); styleText.setLayoutData(SWTUtils.getGridDataSpan(3, GridData.FILL_HORIZONTAL)); typeCombo = SWTUtils.drawCombo(generalGroup, new String[]{"", "line", "spline", "area", "areaspline", "column", "bar", "pie", "scatter"}, chart.getDefaultSeriesType(), "Default Series Type: "); typeCombo.setEnabled(false); animationCheck = SWTUtils.drawCheck(generalGroup, chart.isAnimation(), "Animation: "); shadowCheck = SWTUtils.drawCheck(generalGroup, chart.isShadow(), "Shadow: "); backgroundColorButton = SWTUtils.drawColorButton(toolkit, generalGroup, chart.getBackgroundColor(), "Background color"); widthSpinner = SWTUtils.drawSpinner(generalGroup, chart.getMarginTop(),"Width: "); heightSpinner = SWTUtils.drawSpinner(generalGroup, chart.getMarginTop(),"Height: "); plotGroup = createNColGroup("Plot Settings: ", 6); plotGroup.setBackground(SWTUtils.getColor(plotGroup.getDisplay(), SWTUtils.VERY_LIGHT_GREEN)); plotBorderWidthSpinner = SWTUtils.drawSpinner(plotGroup, chart.getPlotBorderWidth(), "Plot border Width:"); plotShadowCheck= SWTUtils.drawCheck(plotGroup, chart.isPlotShadow(), "Plot Shadow: "); showAxesCheck = SWTUtils.drawCheck(plotGroup, chart.isShowAxes(), "Show Axes: "); plotBackgroundImageText = SWTUtils.drawText(toolkit, plotGroup, chart.getPlotBackgroundImage(), "Plot background Image: "); plotBackgroundColorButton = SWTUtils.drawColorButton(toolkit, plotGroup, chart.getPlotBackgroundColor(), "Plot bck color"); plotBorderColorButton = SWTUtils.drawColorButton(toolkit, plotGroup, chart.getPlotBorderColor(), "Plot Border Color"); marginGroup = createNColGroup("Margins and Spacings: ", 8); marginGroup.setBackground(SWTUtils.getColor(marginGroup.getDisplay(), SWTUtils.VERY_LIGHT_GREEN)); margintext = SWTUtils.drawText(toolkit, marginGroup, chart.getMargin(), "Margin: "); margintext.setLayoutData(SWTUtils.getGridDataSpan(7, -1)); marginTopSpinner = SWTUtils.drawSpinner(marginGroup, chart.getMarginTop(), "Top margin: "); marginBottomSpinner = SWTUtils.drawSpinner(marginGroup, chart.getMarginBottom(), "Bottom margin: "); marginLeftSpinner = SWTUtils.drawSpinner(marginGroup, chart.getMarginLeft(), "Left margin: "); marginRightSpinner = SWTUtils.drawSpinner(marginGroup, chart.getMarginRight(), "Right margin: "); marginBottomSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setMarginBottom(marginBottomSpinner.getSelection()); } }); marginTopSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setMarginTop(marginTopSpinner.getSelection()); } }); marginLeftSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setMarginBottom(marginLeftSpinner.getSelection()); } }); marginRightSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setMarginBottom(marginRightSpinner.getSelection()); } }); spacingTopSpinner = SWTUtils.drawSpinner(marginGroup, chart.getSpacingTop(), "Top spacing: "); spacingBottomSpinner = SWTUtils.drawSpinner(marginGroup, chart.getSpacingBottom(), "Bottom spacing: "); spacingLeftSpinner = SWTUtils.drawSpinner(marginGroup, chart.getSpacingLeft(), "Left spacing: "); spacingRightSpinner = SWTUtils.drawSpinner(marginGroup, chart.getSpacingRight(), "Right spacing: "); spacingBottomSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setSpacingBottom(spacingBottomSpinner.getSelection()); } }); spacingTopSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setSpacingTop(spacingTopSpinner.getSelection()); } }); spacingLeftSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setSpacingBottom(spacingLeftSpinner.getSelection()); } }); spacingRightSpinner.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { editor.setIsDirty(true); chart.setSpacingBottom(spacingRightSpinner.getSelection()); } }); borderGroup = createNColGroup("Borders and others: ", 6); borderGroup.setBackground(SWTUtils.getColor(borderGroup.getDisplay(), SWTUtils.LIGHT_GREEN)); borderColorButton = SWTUtils.drawColorButton(toolkit, borderGroup, chart.getBorderColor(), "Border Color: "); plotBorderColorButton = SWTUtils.drawColorButton(toolkit, borderGroup, chart.getPlotBorderColor(), "Plot Border color"); zoomTypeCombo = SWTUtils.drawCombo(borderGroup, new String[]{"", "x", "y", "xy"}, chart.getZoomType(), "Zoom type: "); classNameText = SWTUtils.drawText(toolkit, borderGroup, chart.getClassName(), "Class Name: "); borderRadiusSpinner = SWTUtils.drawSpinner(borderGroup, chart.getBorderRadius(), "Border radius: "); borderWidthSpinner = SWTUtils.drawSpinner(borderGroup, chart.getBorderWidth(), "Border width: "); invertedCheck = SWTUtils.drawCheck(borderGroup, chart.isInverted(), "Inverted: "); renderToText = SWTUtils.drawCheck(borderGroup, chart.isRenderTo(), "Render to: "); alignTicksButton = SWTUtils.drawCheck(borderGroup, chart.isAlignTicks(), "Align Ticks"); ignoreHiddenSeriesCheck = SWTUtils.drawCheck(borderGroup, chart.isIgnoreHiddenSeries(), "Ignore Hidden Series: "); section.setClient(composite); addListeners(); logger.debug("OUT"); } public HighChartEditor getEditor() { return editor; } public void setEditor(HighChartEditor editor) { this.editor = editor; } }