-package org.simantics.databoard.example;\r
-\r
-import java.util.List;\r
-import java.util.Random;\r
-\r
-import org.eclipse.jface.window.Window;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.ScrolledComposite;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.layout.FillLayout;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Event;\r
-import org.eclipse.swt.widgets.Listener;\r
-import org.eclipse.swt.widgets.MessageBox;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Datatypes;\r
-import org.simantics.databoard.accessor.error.AccessorConstructionException;\r
-import org.simantics.databoard.accessor.error.AccessorException;\r
-import org.simantics.databoard.binding.RecordBinding;\r
-import org.simantics.databoard.binding.error.BindingException;\r
-import org.simantics.databoard.forms.DataboardDialog;\r
-import org.simantics.databoard.forms.DataboardForm;\r
-import org.simantics.databoard.forms.DataboardForm.Problem;\r
-import org.simantics.databoard.type.Datatype;\r
-import org.simantics.databoard.type.DoubleType;\r
-import org.simantics.databoard.type.RecordType;\r
-import org.simantics.databoard.type.StringType;\r
-import org.simantics.databoard.type.UnionType;\r
-\r
-\r
-public class DataboardFormDialogExample {\r
-\r
- public static void main(String [] args) throws BindingException, AccessorConstructionException, AccessorException {\r
- final Display display = new Display ();\r
- final Shell shell = new Shell (display);\r
- shell.setLayout(new FillLayout());\r
-\r
- UnionType experiments = UnionType.newEnum("Result 1 - 5.11.2011 12:50", "Result 2 - 5.11.2011 13:40", "Result 3 - 5.11.2011 15:40" ); \r
- //UnionType mergeType = UnionType.newEnum("One file", "Many files");\r
- \r
- \r
- //mergeType = UnionType.newEnum("Merge to one file", "Separate files");\r
-\r
- Datatype second = new DoubleType("s");\r
- \r
- // Diagram layers\r
- RecordType diagramOptions = new RecordType();\r
- \r
- RecordType layers = new RecordType();\r
- layers.metadata.put("style", "Dialog");\r
- layers.addComponent("Layer 1", Datatypes.BOOLEAN);\r
- layers.addComponent("Layer 2", Datatypes.BOOLEAN);\r
- layers.addComponent("Layer 3", Datatypes.BOOLEAN);\r
- diagramOptions.addComponent("Layers", layers);\r
- \r
- // Dialog\r
- {\r
- RecordBinding b = Bindings.getMutableBinding(layers);\r
- Object o = b.createDefault();\r
- DataboardDialog dialog = new DataboardDialog(\r
- display.getActiveShell(),\r
- "Layer Selection",\r
- b, \r
- o);\r
- int code = dialog.open();\r
- if ( code == Window.OK ) {\r
- Object result = dialog.getResult();\r
- System.out.println( b.toString(result, true) );\r
- }\r
- }\r
- \r
- // Diagram PDF Export Format options\r
- diagramOptions.addComponent("Fit to content", Datatypes.BOOLEAN);\r
-\r
- // Experiment options\r
- RecordType experimentOptions = new RecordType(); \r
- experimentOptions.addComponent("Start Time", second); \r
- experimentOptions.addComponent("End Time", second); \r
- experimentOptions.addComponent("Experiment", experiments); \r
- \r
- // CSV Export\r
- RecordType csvOptions = new RecordType(); \r
- csvOptions.addComponent("Step Size", second);\r
-\r
- // Chart options\r
- RecordType chartOptions = new RecordType(); \r
- chartOptions.addComponent("Autoscale", UnionType.newEnum("Stacked", "Overlapping"));\r
- chartOptions.addComponent("TimeFormat", UnionType.newEnum("Decimal", "Time"));\r
- chartOptions.addComponent("ValueFormat", UnionType.newEnum("Currency", "Scientific", "Engineering", "Default"));\r
- \r
- // PDF options\r
- RecordType pdfOptions = new RecordType();\r
- // PDF metadata \r
- pdfOptions.addComponent("Title", Datatypes.STRING );\r
- pdfOptions.addComponent("Author", Datatypes.STRING );\r
- pdfOptions.addComponent("Subject", Datatypes.STRING );\r
- pdfOptions.addComponent("Keywords", DataboardForm.TEXTBOX ); \r
- // PDF Encryption\r
- StringType privatekeys = DataboardForm.fileOpenDialog("PKCS#12 keystore (.p12)", ".p12", "PFX (.pfx)", ".pfx"); \r
- pdfOptions.addComponent("Private Key", privatekeys);\r
- pdfOptions.addComponent("Keystore Password", DataboardForm.PASSWORD);\r
- pdfOptions.addComponent("Private Key Password", DataboardForm.PASSWORD); \r
- // Formatter options \r
- pdfOptions.addComponent("Compression", UnionType.newEnum("0 (No compression)", "1", "2", "3", "4", "5", "6", "7", "8", "9 (Best)"));\r
-\r
- // Output format\r
- RecordType outputOptions = new RecordType(); \r
- UnionType mergeType = new UnionType();\r
- mergeType.metadata.put("style", "no-border");\r
- mergeType.addComponent("One file", DataboardForm.fileSaveDialog("Comma Separated Value (.csv)", ".csv"));\r
- mergeType.addComponent("Separate files", DataboardForm.directoryDialog());\r
- outputOptions.addComponent("Output", mergeType);\r
-\r
- \r
- ScrolledComposite scroll = new ScrolledComposite(shell, SWT.V_SCROLL);\r
- final Composite composite = new Composite(scroll, 0);\r
- scroll.setContent(composite);\r
- scroll.setExpandHorizontal(true);\r
- scroll.setExpandVertical(false);\r
- final DataboardForm form = new DataboardForm();\r
- form.setFirstColumnWidth(150); \r
- \r
- composite.setLayout( new GridLayout(3, false) ); \r
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1)); \r
- \r
- form.addField(composite, "Diagram", diagramOptions);\r
- form.addField(composite, "Experiment", experimentOptions);\r
- form.addField(composite, "Comma Separated Value (CSV)", csvOptions);\r
- form.addField(composite, "Chart", chartOptions);\r
- form.addField(composite, "Portable Document Format (PDF)", pdfOptions);\r
- form.addField(composite, "Output Options", outputOptions);\r
- \r
- form.addListener(composite, form.type(), new Listener() {\r
- public void handleEvent(Event event) {\r
- System.out.println(event);\r
- } } );\r
- \r
- // Button that validates all fields\r
- Button validate = new Button(composite, SWT.DEFAULT);\r
- validate.setText( "Validate" );\r
- validate.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- List<Problem> problems = form.validate(composite);\r
- StringBuilder sb = new StringBuilder();\r
- if ( problems.isEmpty() ) {\r
- sb.append("No problemo!");\r
- } else {\r
- for (Problem problem : problems) {\r
- sb.append(problem.fieldReference+": "+problem.error);\r
- sb.append("\n");\r
- }\r
- }\r
- \r
- MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK| SWT.CANCEL);\r
- dialog.setText("Form");\r
- dialog.setMessage( sb.toString() );\r
- dialog.open(); \r
- }\r
- });\r
- \r
- \r
- // Button that reads all fields\r
- Button read = new Button(composite, SWT.DEFAULT);\r
- read.setText( "Read" );\r
- read.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- // Read result values\r
- try {\r
- RecordBinding binding = (RecordBinding) Bindings.getBinding( form.type() );\r
- Object formValues = binding.createDefault();\r
- form.readFields(composite, binding, formValues);\r
- String txt = binding.toString(formValues, false);\r
- \r
- MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK| SWT.CANCEL);\r
- dialog.setText("Form");\r
- dialog.setMessage(txt);\r
- dialog.open(); \r
- \r
- } catch (AccessorConstructionException e1) {\r
- e1.printStackTrace();\r
- } catch (AccessorException e1) {\r
- e1.printStackTrace();\r
- } catch (BindingException e1) {\r
- e1.printStackTrace();\r
- }\r
- }\r
- });\r
-\r
- // Button that writes fields\r
- Button write = new Button(composite, SWT.DEFAULT);\r
- write.setText( "Write" );\r
- write.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(SelectionEvent e) {\r
- try {\r
- RecordType type = form.type();\r
- RecordBinding binding = (RecordBinding) Bindings.getBinding( type ); \r
- Object values = binding.createRandom( new Random() );\r
- form.writeFields(composite, binding, values);\r
- } catch (AccessorConstructionException e1) {\r
- e1.printStackTrace();\r
- } catch (AccessorException e1) {\r
- e1.printStackTrace();\r
- } catch (BindingException e1) {\r
- e1.printStackTrace();\r
- }\r
- \r
- }\r
- });\r
- \r
- Button modal = new Button(composite, SWT.DEFAULT);\r
- modal.setText("Modal");\r
- modal.addSelectionListener( new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- Shell dialogShell = new Shell(display, SWT.DIALOG_TRIM);\r
- // populate dialogShell\r
- dialogShell.open();\r
- while (!dialogShell.isDisposed()) {\r
- if (!display.readAndDispatch()) {\r
- display.sleep();\r
- }\r
- }\r
- }\r
- });\r
- \r
- composite.pack();\r
- \r
- shell.setSize(800,400);\r
- //shell.layout();\r
- shell.open ();\r
- while (!shell.isDisposed()) {\r
- if (!display.readAndDispatch ()) display.sleep ();\r
- }\r
- \r
- display.dispose ();\r
- }\r
- \r
-}\r
+package org.simantics.databoard.example;
+
+import java.util.List;
+import java.util.Random;
+
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Datatypes;
+import org.simantics.databoard.accessor.error.AccessorConstructionException;
+import org.simantics.databoard.accessor.error.AccessorException;
+import org.simantics.databoard.binding.RecordBinding;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.forms.DataboardDialog;
+import org.simantics.databoard.forms.DataboardForm;
+import org.simantics.databoard.forms.DataboardForm.Problem;
+import org.simantics.databoard.type.Datatype;
+import org.simantics.databoard.type.DoubleType;
+import org.simantics.databoard.type.RecordType;
+import org.simantics.databoard.type.StringType;
+import org.simantics.databoard.type.UnionType;
+
+
+public class DataboardFormDialogExample {
+
+ public static void main(String [] args) throws BindingException, AccessorConstructionException, AccessorException {
+ final Display display = new Display ();
+ final Shell shell = new Shell (display);
+ shell.setLayout(new FillLayout());
+
+ UnionType experiments = UnionType.newEnum("Result 1 - 5.11.2011 12:50", "Result 2 - 5.11.2011 13:40", "Result 3 - 5.11.2011 15:40" );
+ //UnionType mergeType = UnionType.newEnum("One file", "Many files");
+
+
+ //mergeType = UnionType.newEnum("Merge to one file", "Separate files");
+
+ Datatype second = new DoubleType("s");
+
+ // Diagram layers
+ RecordType diagramOptions = new RecordType();
+
+ RecordType layers = new RecordType();
+ layers.metadata.put("style", "Dialog");
+ layers.addComponent("Layer 1", Datatypes.BOOLEAN);
+ layers.addComponent("Layer 2", Datatypes.BOOLEAN);
+ layers.addComponent("Layer 3", Datatypes.BOOLEAN);
+ diagramOptions.addComponent("Layers", layers);
+
+ // Dialog
+ {
+ RecordBinding b = Bindings.getMutableBinding(layers);
+ Object o = b.createDefault();
+ DataboardDialog dialog = new DataboardDialog(
+ display.getActiveShell(),
+ "Layer Selection",
+ b,
+ o);
+ int code = dialog.open();
+ if ( code == Window.OK ) {
+ Object result = dialog.getResult();
+ System.out.println( b.toString(result, true) );
+ }
+ }
+
+ // Diagram PDF Export Format options
+ diagramOptions.addComponent("Fit to content", Datatypes.BOOLEAN);
+
+ // Experiment options
+ RecordType experimentOptions = new RecordType();
+ experimentOptions.addComponent("Start Time", second);
+ experimentOptions.addComponent("End Time", second);
+ experimentOptions.addComponent("Experiment", experiments);
+
+ // CSV Export
+ RecordType csvOptions = new RecordType();
+ csvOptions.addComponent("Step Size", second);
+
+ // Chart options
+ RecordType chartOptions = new RecordType();
+ chartOptions.addComponent("Autoscale", UnionType.newEnum("Stacked", "Overlapping"));
+ chartOptions.addComponent("TimeFormat", UnionType.newEnum("Decimal", "Time"));
+ chartOptions.addComponent("ValueFormat", UnionType.newEnum("Currency", "Scientific", "Engineering", "Default"));
+
+ // PDF options
+ RecordType pdfOptions = new RecordType();
+ // PDF metadata
+ pdfOptions.addComponent("Title", Datatypes.STRING );
+ pdfOptions.addComponent("Author", Datatypes.STRING );
+ pdfOptions.addComponent("Subject", Datatypes.STRING );
+ pdfOptions.addComponent("Keywords", DataboardForm.TEXTBOX );
+ // PDF Encryption
+ StringType privatekeys = DataboardForm.fileOpenDialog("PKCS#12 keystore (.p12)", ".p12", "PFX (.pfx)", ".pfx");
+ pdfOptions.addComponent("Private Key", privatekeys);
+ pdfOptions.addComponent("Keystore Password", DataboardForm.PASSWORD);
+ pdfOptions.addComponent("Private Key Password", DataboardForm.PASSWORD);
+ // Formatter options
+ pdfOptions.addComponent("Compression", UnionType.newEnum("0 (No compression)", "1", "2", "3", "4", "5", "6", "7", "8", "9 (Best)"));
+
+ // Output format
+ RecordType outputOptions = new RecordType();
+ UnionType mergeType = new UnionType();
+ mergeType.metadata.put("style", "no-border");
+ mergeType.addComponent("One file", DataboardForm.fileSaveDialog("Comma Separated Value (.csv)", ".csv"));
+ mergeType.addComponent("Separate files", DataboardForm.directoryDialog());
+ outputOptions.addComponent("Output", mergeType);
+
+
+ ScrolledComposite scroll = new ScrolledComposite(shell, SWT.V_SCROLL);
+ final Composite composite = new Composite(scroll, 0);
+ scroll.setContent(composite);
+ scroll.setExpandHorizontal(true);
+ scroll.setExpandVertical(false);
+ final DataboardForm form = new DataboardForm();
+ form.setFirstColumnWidth(150);
+
+ composite.setLayout( new GridLayout(3, false) );
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1));
+
+ form.addField(composite, "Diagram", diagramOptions);
+ form.addField(composite, "Experiment", experimentOptions);
+ form.addField(composite, "Comma Separated Value (CSV)", csvOptions);
+ form.addField(composite, "Chart", chartOptions);
+ form.addField(composite, "Portable Document Format (PDF)", pdfOptions);
+ form.addField(composite, "Output Options", outputOptions);
+
+ form.addListener(composite, form.type(), new Listener() {
+ public void handleEvent(Event event) {
+ System.out.println(event);
+ } } );
+
+ // Button that validates all fields
+ Button validate = new Button(composite, SWT.DEFAULT);
+ validate.setText( "Validate" );
+ validate.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ List<Problem> problems = form.validate(composite);
+ StringBuilder sb = new StringBuilder();
+ if ( problems.isEmpty() ) {
+ sb.append("No problemo!");
+ } else {
+ for (Problem problem : problems) {
+ sb.append(problem.fieldReference+": "+problem.error);
+ sb.append("\n");
+ }
+ }
+
+ MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK| SWT.CANCEL);
+ dialog.setText("Form");
+ dialog.setMessage( sb.toString() );
+ dialog.open();
+ }
+ });
+
+
+ // Button that reads all fields
+ Button read = new Button(composite, SWT.DEFAULT);
+ read.setText( "Read" );
+ read.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ // Read result values
+ try {
+ RecordBinding binding = (RecordBinding) Bindings.getBinding( form.type() );
+ Object formValues = binding.createDefault();
+ form.readFields(composite, binding, formValues);
+ String txt = binding.toString(formValues, false);
+
+ MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK| SWT.CANCEL);
+ dialog.setText("Form");
+ dialog.setMessage(txt);
+ dialog.open();
+
+ } catch (AccessorConstructionException e1) {
+ e1.printStackTrace();
+ } catch (AccessorException e1) {
+ e1.printStackTrace();
+ } catch (BindingException e1) {
+ e1.printStackTrace();
+ }
+ }
+ });
+
+ // Button that writes fields
+ Button write = new Button(composite, SWT.DEFAULT);
+ write.setText( "Write" );
+ write.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ RecordType type = form.type();
+ RecordBinding binding = (RecordBinding) Bindings.getBinding( type );
+ Object values = binding.createRandom( new Random() );
+ form.writeFields(composite, binding, values);
+ } catch (AccessorConstructionException e1) {
+ e1.printStackTrace();
+ } catch (AccessorException e1) {
+ e1.printStackTrace();
+ } catch (BindingException e1) {
+ e1.printStackTrace();
+ }
+
+ }
+ });
+
+ Button modal = new Button(composite, SWT.DEFAULT);
+ modal.setText("Modal");
+ modal.addSelectionListener( new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Shell dialogShell = new Shell(display, SWT.DIALOG_TRIM);
+ // populate dialogShell
+ dialogShell.open();
+ while (!dialogShell.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ }
+ });
+
+ composite.pack();
+
+ shell.setSize(800,400);
+ //shell.layout();
+ shell.open ();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch ()) display.sleep ();
+ }
+
+ display.dispose ();
+ }
+
+}