/**
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.model.bo.HighChart;
import it.eng.spagobi.studio.highchart.model.bo.Legend;
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.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.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 LegendSection extends AbstractSection {
private static Logger logger = LoggerFactory.getLogger(LegendSection.class);
Group positionGroup;
Group styleGroup;
// Position group
Combo verticalAlignCombo;
Combo alignCombo;
Spinner xSpinner;
Spinner ySpinner;
Button floatingCheck;
Combo layoutCombo;
Text labelFormatterText;
Spinner lineHeightSpinner;
Spinner marginSpinner;
Button reversedCheck;
Spinner symbolPaddingSpinner;
Spinner symbolWidthSpinner;
Spinner widthSpinner;
//Style
ColorButton backgroundColorButton;
ColorButton borderColorButton;
Spinner borderRadiusSpinner;
Spinner borderWidthSpinner;
Text itemHiddenStyleText;
Text itemHoverStyleText;
Text itemStyleText;
Text styleText;
Spinner itemWidthSpinner;
Button shadowCheck;
public LegendSection(HighChart highChart) {
super(highChart);
}
public void addListeners(){
logger.debug("IN");
verticalAlignCombo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
editor.setIsDirty(true);
String value = verticalAlignCombo.getItem(verticalAlignCombo.getSelectionIndex());
highChart.getLegend().setVerticalAlign(value);
}
});
alignCombo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
editor.setIsDirty(true);
String value = alignCombo.getItem(alignCombo.getSelectionIndex());
highChart.getLegend().setAlign(value);
}
});
layoutCombo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
editor.setIsDirty(true);
String value = layoutCombo.getItem(layoutCombo.getSelectionIndex());
highChart.getLegend().setLayout(value);
}
});
xSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = xSpinner.getSelection();
highChart.getLegend().setX(val);
}
});
ySpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = ySpinner.getSelection();
highChart.getLegend().setY(val);
}
});
lineHeightSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = lineHeightSpinner.getSelection();
highChart.getLegend().setLineHeight(val);
}
});
marginSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = marginSpinner.getSelection();
highChart.getLegend().setMargin(val);
}
});
symbolPaddingSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = symbolPaddingSpinner.getSelection();
highChart.getLegend().setSymbolPadding(val);
}
});
symbolWidthSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = symbolWidthSpinner.getSelection();
highChart.getLegend().setSymbolWidth(val);
}
});
widthSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = widthSpinner.getSelection();
highChart.getLegend().setWidth(val);
}
});
borderRadiusSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = borderRadiusSpinner.getSelection();
highChart.getLegend().setBorderRadius(val);
}
});
borderWidthSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = borderWidthSpinner.getSelection();
highChart.getLegend().setBorderWidth(val);
}
});
itemWidthSpinner.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
int val = itemWidthSpinner.getSelection();
highChart.getLegend().setItemWidth(val);
}
});
floatingCheck.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
boolean selection = floatingCheck.getSelection();
highChart.getLegend().setFloating(selection);
editor.setIsDirty(true);
}
});
reversedCheck.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
boolean selection = reversedCheck.getSelection();
highChart.getLegend().setReversed(selection);
editor.setIsDirty(true);
}
});
shadowCheck.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
boolean selection = shadowCheck.getSelection();
highChart.getLegend().setShadow(selection);
editor.setIsDirty(true);
}
});
labelFormatterText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
String value = labelFormatterText.getText();
highChart.getLegend().setLabelFormatter(value);
}
});
itemHiddenStyleText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
String value = itemHiddenStyleText.getText();
highChart.getLegend().setItemHiddenStyle(value);
}
});
itemHoverStyleText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
String value = itemHoverStyleText.getText();
highChart.getLegend().setItemHoverStyle(value);
}
});
itemStyleText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
String value = itemStyleText.getText();
highChart.getLegend().setItemStyle(value);
}
});
styleText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
editor.setIsDirty(true);
String value = styleText.getText();
highChart.getLegend().setStyle(value);
}
});
backgroundColorButton.getColorButton().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String colorSelected = backgroundColorButton.handleSelctionEvent(backgroundColorButton.getColorLabel().getShell());
highChart.getLegend().setBackgroundColor(colorSelected);
editor.setIsDirty(true);
}
});
borderColorButton.getColorButton().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String colorSelected = borderColorButton.handleSelctionEvent(borderColorButton.getColorLabel().getShell());
highChart.getLegend().setBorderColor(colorSelected);
editor.setIsDirty(true);
}
});
logger.debug("OUT");
}
public void drawSection(final FormToolkit toolkit, final ScrolledForm form, int cols) {
super.drawSection(toolkit, form, cols);
logger.debug("IN");
final Legend legend= highChart.getLegend();
section.setText("Legend section");
section.setDescription("Fill attribute regarding the Legend");
positionGroup = createNColGroup("Position and Dimensions: ", 16);
positionGroup.setBackground(SWTUtils.getColor(positionGroup.getDisplay(), SWTUtils.LIGHT_RED));
marginSpinner = SWTUtils.drawSpinner(positionGroup, legend.getMargin(), "Margin: ");
lineHeightSpinner = SWTUtils.drawSpinner(positionGroup, legend.getLineHeight(), "Line Height: ");
symbolPaddingSpinner =SWTUtils.drawSpinner(positionGroup, legend.getSymbolPadding(), "Symbol Padding: ");
symbolWidthSpinner =SWTUtils.drawSpinner(positionGroup, legend.getSymbolWidth(), "Symbol Width: ");
widthSpinner = SWTUtils.drawSpinner(positionGroup, legend.getWidth(), "Width: ");
itemWidthSpinner = SWTUtils.drawSpinner(positionGroup, legend.getItemWidth(), "Item Width: ");
xSpinner = SWTUtils.drawSpinner(positionGroup, legend.getX(), "X: ");
ySpinner = SWTUtils.drawSpinner(positionGroup, legend.getY(), "Y: ");
verticalAlignCombo= SWTUtils.drawCombo(positionGroup, new String[]{"", "top", "middle","bottom"}, legend.getVerticalAlign(), "Vertical Align: ");
alignCombo = SWTUtils.drawCombo(positionGroup, new String[]{"", "left", "center","right"}, legend.getAlign(), "Align: ");
layoutCombo = SWTUtils.drawCombo(positionGroup, new String[]{"horizontal","vertical"}, legend.getLayout(), "Layout: ");
reversedCheck = SWTUtils.drawCheck(positionGroup, legend.isReversed(), "Reversed: ");
floatingCheck = SWTUtils.drawCheck(positionGroup, legend.isFloating(), "Floating");
labelFormatterText = SWTUtils.drawText(toolkit, positionGroup, legend.getLabelFormatter(), "Label Formatter: ");
styleGroup = createNColGroup("Style: ", 9);
styleGroup.setBackground(SWTUtils.getColor(styleGroup.getDisplay(), SWTUtils.LIGHT_RED));
itemStyleText = SWTUtils.drawText(toolkit, styleGroup, legend.getItemStyle(), "Item style: ");
itemHiddenStyleText = SWTUtils.drawText(toolkit, styleGroup, legend.getItemHiddenStyle(), "Item hidden style: ");
itemHoverStyleText = SWTUtils.drawText(toolkit, styleGroup, legend.getItemHoverStyle(), "Item hover style: ");
styleText = SWTUtils.drawText(toolkit, styleGroup, legend.getStyle(), "Style: ");
toolkit.createLabel(styleGroup, "");
backgroundColorButton = SWTUtils.drawColorButton(toolkit, styleGroup, legend.getBackgroundColor(), "background Color: ");
borderColorButton = SWTUtils.drawColorButton(toolkit, styleGroup, legend.getBorderColor(), "Border Color: ");
borderRadiusSpinner = SWTUtils.drawSpinner(styleGroup, legend.getBorderRadius(), "Border Radius: ");
borderWidthSpinner = SWTUtils.drawSpinner(styleGroup, legend.getBorderWidth(), "Border Width: ");
shadowCheck = SWTUtils.drawCheck(styleGroup, legend.isShadow(), "Shadow: ");
section.setClient(composite);
addListeners();
logger.debug("OUT");
}
}