]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/examples/org/simantics/databoard/example/DataboardFormExample.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.databoard / examples / org / simantics / databoard / example / DataboardFormExample.java
index 61c411291d4399a4426c42c3aeecb35151b3a77f..a35c19a5069611b0c0884dace9addab7effee355 100644 (file)
-package org.simantics.databoard.example;\r
-\r
-import java.util.List;\r
-import java.util.Random;\r
-\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.Control;\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.accessor.reference.ChildReference;\r
-import org.simantics.databoard.binding.RecordBinding;\r
-import org.simantics.databoard.binding.error.BindingException;\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 DataboardFormExample {\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
-           RecordType fileOptions = new RecordType(); \r
-           fileOptions.metadata.put("style", "no-border");\r
-           fileOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);\r
-           fileOptions.addComponent("case1_h.pdf", DataboardForm.fileSaveDialog(".pdf", "*.pdf"));\r
-           fileOptions.addComponent("case1_h.aprosModel", DataboardForm.fileSaveDialog(".aprosModel", "*.aprosModel"));\r
-           fileOptions.addComponent("Chart.csv", DataboardForm.fileSaveDialog(".csv", "*.csv"));           \r
-\r
-           RecordType dirOptions = new RecordType(); \r
-           dirOptions.metadata.put("style", "no-border");\r
-           dirOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);\r
-           dirOptions.addComponent("Export location", DataboardForm.directoryDialog());\r
-\r
-           RecordType zipOptions = new RecordType(); \r
-           zipOptions.metadata.put("style", "no-border");\r
-           zipOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);\r
-           zipOptions.addComponent("Export to .zip", DataboardForm.fileSaveDialog(".zip", "*.zip"));\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
-           UnionType publisherType = UnionType.newEnum("File", "Dir", "Zip", "Smartplant Foundation", "Webserver");\r
-           outputOptions.addComponent("Publish to", publisherType);        \r
-\r
-           // Output format\r
-           RecordType outputOptions2 = new RecordType(); \r
-           RecordType tabType = new RecordType();          \r
-           tabType.metadata.put("style", "tabbed");\r
-           tabType.addComponent("File", fileOptions);\r
-           tabType.addComponent("Dir", dirOptions);\r
-           tabType.addComponent("Zip", zipOptions);\r
-           outputOptions2.addComponent("Output2", tabType);\r
-           \r
-           // Diagram layers\r
-           RecordType diagramOptions = new RecordType();\r
-           Datatype second = new DoubleType("s");\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
-           // 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
-           \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, "File", fileOptions);\r
-//             form.addField(composite, "Dir", dirOptions);\r
-//             form.addField(composite, "Zip", zipOptions);\r
-               \r
-               form.addField(composite, "Output Options", outputOptions);\r
-               form.addField(composite, "Output Options2", outputOptions2);\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
-               \r
-               form.addListener(composite, form.type(), new Listener() {\r
-                       public void handleEvent(Event event) {\r
-                               System.out.println(event);\r
-                       } } );\r
-               \r
-               // Find control by reference\r
-               ChildReference ref = ChildReference.parsePath("Output Options/Publish to");\r
-               Control c = form.getControl(composite, ref );\r
-               System.out.println( ref+" = "+c );\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.getMutableBinding( 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.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.Control;
+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.accessor.reference.ChildReference;
+import org.simantics.databoard.binding.RecordBinding;
+import org.simantics.databoard.binding.error.BindingException;
+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 DataboardFormExample {
+
+       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");
+
+           RecordType fileOptions = new RecordType(); 
+           fileOptions.metadata.put("style", "no-border");
+           fileOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);
+           fileOptions.addComponent("case1_h.pdf", DataboardForm.fileSaveDialog(".pdf", "*.pdf"));
+           fileOptions.addComponent("case1_h.aprosModel", DataboardForm.fileSaveDialog(".aprosModel", "*.aprosModel"));
+           fileOptions.addComponent("Chart.csv", DataboardForm.fileSaveDialog(".csv", "*.csv"));           
+
+           RecordType dirOptions = new RecordType(); 
+           dirOptions.metadata.put("style", "no-border");
+           dirOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);
+           dirOptions.addComponent("Export location", DataboardForm.directoryDialog());
+
+           RecordType zipOptions = new RecordType(); 
+           zipOptions.metadata.put("style", "no-border");
+           zipOptions.addComponent("Overwrite file(s)", Datatypes.BOOLEAN);
+           zipOptions.addComponent("Export to .zip", DataboardForm.fileSaveDialog(".zip", "*.zip"));
+           
+           // 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);
+           UnionType publisherType = UnionType.newEnum("File", "Dir", "Zip", "Smartplant Foundation", "Webserver");
+           outputOptions.addComponent("Publish to", publisherType);        
+
+           // Output format
+           RecordType outputOptions2 = new RecordType(); 
+           RecordType tabType = new RecordType();          
+           tabType.metadata.put("style", "tabbed");
+           tabType.addComponent("File", fileOptions);
+           tabType.addComponent("Dir", dirOptions);
+           tabType.addComponent("Zip", zipOptions);
+           outputOptions2.addComponent("Output2", tabType);
+           
+           // Diagram layers
+           RecordType diagramOptions = new RecordType();
+           Datatype second = new DoubleType("s");
+           
+           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);
+           
+           // 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)"));
+
+           
+           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, "File", fileOptions);
+//             form.addField(composite, "Dir", dirOptions);
+//             form.addField(composite, "Zip", zipOptions);
+               
+               form.addField(composite, "Output Options", outputOptions);
+               form.addField(composite, "Output Options2", outputOptions2);
+               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.addListener(composite, form.type(), new Listener() {
+                       public void handleEvent(Event event) {
+                               System.out.println(event);
+                       } } );
+               
+               // Find control by reference
+               ChildReference ref = ChildReference.parsePath("Output Options/Publish to");
+               Control c = form.getControl(composite, ref );
+               System.out.println( ref+" = "+c );
+               
+               // 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.getMutableBinding( 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 ();
+       }
+               
+}