/**
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.chart.editors;
import it.eng.spagobi.studio.chart.editors.model.chart.ChartModel;
import it.eng.spagobi.studio.chart.editors.model.chart.Parameter;
import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author gavardi
*
* This class has method for the configuration parameters form creation
*/
public class ConfigurationEditor {
private static Logger logger = LoggerFactory.getLogger(ConfigurationEditor.class);
final Section sectionConf;
Composite sectionClientConf=null;
Group specificConfGroup=null;
/**
* This editor draws th configuration parameters section
*/
public ConfigurationEditor(FormToolkit toolkit, final ScrolledForm form) {
sectionConf = toolkit.createSection(form.getBody(),
Section.DESCRIPTION|Section.TITLE_BAR|Section.TWISTIE);
sectionClientConf=toolkit.createComposite(sectionConf);
}
/** Creates the form for common configuraiton parameters
*
* @param model
* @param editor
* @param toolkit
* @param form
*/
public void createConfigurationParametersForm(ChartModel model, final ChartEditor editor,FormToolkit toolkit,final ScrolledForm form) {
logger.debug("Create configuration parameters form");
TableWrapData td = new TableWrapData(TableWrapData.FILL);
td.rowspan = 3;
sectionConf.setLayoutData(td);
sectionConf.addExpansionListener(new ExpansionAdapter() {
public void expansionStateChanged(ExpansionEvent e) {
form.reflow(true);
}
});
sectionConf.setText("Chart conf settings");
sectionConf.setDescription("Below you see the chart configuration settings:");
GridLayout gl = new GridLayout();
gl.numColumns = 2;
sectionClientConf.setLayout(gl);
// run all sections
for (Iterator iteratorSec = model.getConfSectionParametersEditor().keySet().iterator(); iteratorSec.hasNext();) {
String secName = (String) iteratorSec.next();
ArrayList<String> parsInSection=model.getConfSectionParametersEditor().get(secName);
if(parsInSection!=null && !parsInSection.isEmpty()){
Label sectionLabel = new Label(sectionClientConf, SWT.BORDER | SWT.BOLD );
sectionLabel.setForeground(new Color(sectionClientConf.getDisplay(),0,0,255));
sectionLabel.setSize(12, 12);
//sectionLabel.setFont(new Font(section.getDisplay(),FontData.))
sectionLabel.setText(secName.toUpperCase());
Label spaceLabel = new Label(sectionClientConf, SWT.NULL);
spaceLabel.setText("");
// run all parameters in section
for (Iterator iterator = parsInSection.iterator(); iterator.hasNext();) {
String parName = (String) iterator.next();
logger.debug("Parameter "+parName);
final Parameter aParameter=model.getConfParametersEditor().get(parName);
ChartEditorUtils.drawParameter(model, sectionClientConf, aParameter, toolkit);
}
}
}
sectionConf.setClient(sectionClientConf);
sectionConf.setExpanded(true);
sectionConf.setExpanded(false);
sectionClientConf.pack();
sectionConf.pack();
}
/** Creates the form for specific configuraiton parameters
*
* @param model
* @param editor
* @param toolkit
* @param form
*/
public void createSpecificConfigurationParametersForm(ChartModel model, final ChartEditor editor, FormToolkit toolkit) {
logger.debug("Create specific configuration parameters form");
GridLayout gl = new GridLayout();
gl.numColumns = 2;
sectionClientConf.setLayout(gl);
if(specificConfGroup!=null){
specificConfGroup.dispose();
}
specificConfGroup=new Group(sectionClientConf, SWT.SHADOW_IN);
GridLayout gridLayout=new GridLayout();
gridLayout.numColumns=2;
specificConfGroup.setLayout(gridLayout);
specificConfGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_END));
specificConfGroup.setVisible(false);
//specificConfGroup.pack();
// run all sections
for (Iterator iteratorSec = model.getConfSpecificSectionParametersEditor().keySet().iterator(); iteratorSec.hasNext();) {
String secName = (String) iteratorSec.next();
ArrayList<String> parsInSection=model.getConfSpecificSectionParametersEditor().get(secName);
if(parsInSection!=null && !parsInSection.isEmpty()){
// run all parameters in section
int i=1;
// check how many parameters specific and resize group
int n=parsInSection.size();
//specificConfGroup.setSize(1000, n*50);
//specificConfGroup.pack();
for (Iterator iterator = parsInSection.iterator(); iterator.hasNext();) {
String parName = (String) iterator.next();
final Parameter aParameter=model.getConfSpecificParametersEditor().get(parName);
ChartEditorUtils.drawSpecificParameter(model, specificConfGroup, aParameter, toolkit,i);
i++;
}
}
String title="PARAMETERS SPECIFIC FOR "+model.getSubType().toUpperCase()+" SUBTYPE";
//add some text for title
for(int i=title.length();i<110;i++){
// if(i%2==0){
title+=" ";
// }
// else{
// title=" "+title;
// }
}
specificConfGroup.setText(title);
//specificConfGroup.pack();
specificConfGroup.setVisible(true);
sectionClientConf.redraw();
sectionClientConf.pack();
sectionConf.pack();
}
}
public Section getSectionConf() {
return sectionConf;
}
public Composite getSectionClientConf() {
return sectionClientConf;
}
public void setVisible(boolean visible){
sectionConf.setVisible(visible);
}
public boolean isVisible(){
if(sectionConf.isVisible())return true;
else return false;
}
public Group getSpecificConfGroup() {
return specificConfGroup;
}
public void setSpecificConfGroup(Group specificConfGroup) {
this.specificConfGroup = specificConfGroup;
}
}