/** SpagoBI - The Business Intelligence Free Platform Copyright (C) 2005-2010 Engineering Ingegneria Informatica S.p.A. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA **/ package it.eng.spagobi.studio.console.dialogs; import java.util.StringTokenizer; import java.util.Vector; import it.eng.spagobi.studio.console.model.bo.WidgetConfigElementLiveLine; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; /** * @author Marco Cortella (marco.cortella@eng.it) * */ public class LiveLinesSettingsDialog extends Dialog { private Text textRangeminvalue; private Text textRangemaxvalue; private Text textStepY; private Text textDomainvaluenumber; private Text textDomainvalues; private Text textFields; private WidgetConfigElementLiveLine widgetConfigElementLiveLine; /** * Create the dialog. * @param parentShell */ public LiveLinesSettingsDialog(Shell parentShell) { super(parentShell); } /** * Create contents of the dialog. * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); container.setLayout(new GridLayout(1, false)); Composite compositeMain = new Composite(container, SWT.NONE); compositeMain.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); compositeMain.setLayout(new GridLayout(4, false)); Label lblRangeminvalue = new Label(compositeMain, SWT.NONE); lblRangeminvalue.setSize(83, 15); lblRangeminvalue.setText("rangeMinValue:"); textRangeminvalue = new Text(compositeMain, SWT.BORDER); textRangeminvalue.setSize(76, 21); Label lblRangemaxvalue = new Label(compositeMain, SWT.NONE); lblRangemaxvalue.setSize(84, 15); lblRangemaxvalue.setText("rangeMaxValue:"); textRangemaxvalue = new Text(compositeMain, SWT.BORDER); textRangemaxvalue.setSize(76, 21); Label lblStepY = new Label(compositeMain, SWT.NONE); lblStepY.setSize(32, 15); lblStepY.setText("stepY:"); textStepY = new Text(compositeMain, SWT.BORDER); textStepY.setSize(76, 21); Label lblDomainvaluenumber = new Label(compositeMain, SWT.NONE); lblDomainvaluenumber.setSize(117, 15); lblDomainvaluenumber.setText("domainValueNumber:"); textDomainvaluenumber = new Text(compositeMain, SWT.BORDER); textDomainvaluenumber.setSize(76, 21); Composite compositeValues = new Composite(container, SWT.NONE); compositeValues.setLayout(new GridLayout(2, true)); compositeValues.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); Label lblDomainvalues = new Label(compositeValues, SWT.NONE); lblDomainvalues.setSize(78, 15); lblDomainvalues.setText("domainValues:"); Label lblFields = new Label(compositeValues, SWT.NONE); lblFields.setText("fields:"); textDomainvalues = new Text(compositeValues, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.MULTI); textDomainvalues.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); textDomainvalues.setSize(76, 21); textFields = new Text(compositeValues, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.MULTI); textFields.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); //--------------------------------------------------- //check if existing Widget is found and populate UI if (widgetConfigElementLiveLine != null){ populateUI(); } //--------------------------------------------------- return container; } public void populateUI(){ textRangeminvalue.setText(String.valueOf(widgetConfigElementLiveLine.getRangeMinValue())); textRangemaxvalue.setText(String.valueOf(widgetConfigElementLiveLine.getRangeMaxValue())); textStepY.setText(String.valueOf(widgetConfigElementLiveLine.getStepY())); textDomainvaluenumber.setText(String.valueOf(widgetConfigElementLiveLine.getDomainValueNumber())); Vector<String> domainValues = widgetConfigElementLiveLine.getDomainValues(); String domainValuesString = join(domainValues,","); textDomainvalues.setText(domainValuesString); Vector<String> fields = widgetConfigElementLiveLine.getFields(); if (fields != null){ String fieldsString = join(fields,","); textFields.setText(fieldsString); } } public static String join(Vector<String> list, String delim) { StringBuilder sb = new StringBuilder(); String loopDelim = ""; for(String s : list) { sb.append(loopDelim); sb.append(s); loopDelim = delim; } return sb.toString(); } public static String joinInteger(Vector<Integer> list, String delim) { StringBuilder sb = new StringBuilder(); String loopDelim = ""; for(Integer s : list) { String token = String.valueOf(s); sb.append(loopDelim); sb.append(token); loopDelim = delim; } return sb.toString(); } /** * Create contents of the button bar. * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { Button buttonOK = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { return new Point(450, 300); } @Override protected void okPressed() { //first check the inputs if (isValidInput()) { createWidgetConfigElementLiveLine(); super.okPressed(); } else { MessageDialog.openWarning(new Shell(), "Warning", "Please insert all the required values"); } } //create a WidgetConfigElementLiveLine object when OK is pressed public void createWidgetConfigElementLiveLine() { widgetConfigElementLiveLine = new WidgetConfigElementLiveLine(); widgetConfigElementLiveLine.setRangeMinValue(Integer.parseInt(textRangeminvalue.getText())); widgetConfigElementLiveLine.setRangeMaxValue(Integer.parseInt(textRangemaxvalue.getText())); widgetConfigElementLiveLine.setStepY(Integer.parseInt(textStepY.getText())); widgetConfigElementLiveLine.setDomainValueNumber(Integer.parseInt(textDomainvaluenumber.getText())); Vector<String> domainValues = widgetConfigElementLiveLine.getDomainValues(); StringTokenizer st = new StringTokenizer(textDomainvalues.getText(),","); while (st.hasMoreElements()) { String token = st.nextToken(); domainValues.add(token); } if (textFields.getText().length()>0){ Vector<String> fields = widgetConfigElementLiveLine.getFields(); if (fields == null){ Vector<String> newFields = new Vector<String>(); widgetConfigElementLiveLine.setFields(newFields); fields = widgetConfigElementLiveLine.getFields(); } StringTokenizer stFields = new StringTokenizer(textFields.getText(),","); while (stFields.hasMoreElements()) { String token = stFields.nextToken(); fields.add(token); } } else { //Erased the text field content but a previous fields Vector is found, remove the Vector of Fields for not serializing if (widgetConfigElementLiveLine.getFields() != null){ widgetConfigElementLiveLine.setFields(null); } } } //check if all the required input are inserted private boolean isValidInput() { boolean valid = true; if (textRangeminvalue.getText().length() == 0) { valid = false; } if (textRangemaxvalue.getText().length() == 0) { valid = false; } if (textStepY.getText().length() == 0) { valid = false; } if (textDomainvaluenumber.getText().length() == 0) { valid = false; } return valid; } /** * @return the widgetConfigElementLiveLine */ public WidgetConfigElementLiveLine getWidgetConfigElementLiveLine() { return widgetConfigElementLiveLine; } /** * @param widgetConfigElementLiveLine the widgetConfigElementLiveLine to set */ public void setWidgetConfigElementLiveLine( WidgetConfigElementLiveLine widgetConfigElementLiveLine) { this.widgetConfigElementLiveLine = widgetConfigElementLiveLine; } }