source: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/ModelPropertiesDialog.java @ 194

Last change on this file since 194 was 194, checked in by sherbold, 13 years ago

Work on the SWT GUI prototype. The prototype is still incomplete and should not be used.

  • Property svn:mime-type set to text/plain
File size: 4.4 KB
Line 
1package de.ugoe.cs.eventbench.swt;
2
3import org.eclipse.swt.widgets.Dialog;
4import org.eclipse.swt.widgets.Display;
5import org.eclipse.swt.widgets.MessageBox;
6import org.eclipse.swt.widgets.Shell;
7import org.eclipse.swt.widgets.List;
8import org.eclipse.swt.SWT;
9import org.eclipse.swt.widgets.Group;
10import org.eclipse.swt.widgets.Label;
11import org.eclipse.swt.widgets.Button;
12import org.eclipse.swt.layout.GridLayout;
13import org.eclipse.swt.layout.GridData;
14import org.eclipse.swt.layout.FillLayout;
15
16import de.ugoe.cs.eventbench.models.FirstOrderMarkovModel;
17import de.ugoe.cs.eventbench.models.IStochasticProcess;
18import org.eclipse.swt.events.SelectionAdapter;
19import org.eclipse.swt.events.SelectionEvent;
20
21public class ModelPropertiesDialog extends Dialog {
22
23        private IStochasticProcess process;
24       
25        protected Object result;
26        protected Shell shlModelProperties;
27
28        /**
29         * Create the dialog.
30         * @param parent
31         * @param style
32         */
33        public ModelPropertiesDialog(Shell parent, int style) {
34                super(parent, style);
35                setText("SWT Dialog");
36        }
37
38        /**
39         * Open the dialog.
40         * @return the result
41         */
42        public Object open() {
43                createContents();
44                shlModelProperties.open();
45                shlModelProperties.layout();
46                Display display = getParent().getDisplay();
47                while (!shlModelProperties.isDisposed()) {
48                        if (!display.readAndDispatch()) {
49                                display.sleep();
50                        }
51                }
52                return result;
53        }
54
55        /**
56         * Create contents of the dialog.
57         */
58        private void createContents() {
59                shlModelProperties = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.RESIZE);
60                shlModelProperties.setSize(230, 318);
61                shlModelProperties.setText("Model Properties");
62                shlModelProperties.setLayout(new GridLayout(2, false));
63               
64                Group grpEvents = new Group(shlModelProperties, SWT.NONE);
65                FillLayout fl_grpEvents = new FillLayout(SWT.HORIZONTAL);
66                fl_grpEvents.marginHeight = 5;
67                fl_grpEvents.marginWidth = 5;
68                grpEvents.setLayout(fl_grpEvents);
69                grpEvents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
70                grpEvents.setText("Events");
71               
72                List list = new List(grpEvents, SWT.BORDER | SWT.V_SCROLL);
73                for( String symbol : process.getSymbolStrings() ) {
74                        list.add(symbol);
75                }
76               
77                Group grpStatistics = new Group(shlModelProperties, SWT.NONE);
78                grpStatistics.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
79                grpStatistics.setText("Statistics");
80                grpStatistics.setLayout(new GridLayout(2, false));
81               
82                Label lblNumEvents = new Label(grpStatistics, SWT.NONE);
83                lblNumEvents.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
84                lblNumEvents.setText("Num. Events");
85               
86                Label label = new Label(grpStatistics, SWT.RIGHT);
87                label.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
88                label.setText(""+process.getNumSymbols());
89               
90                Label lblNumTrieLeafs = new Label(grpStatistics, SWT.NONE);
91                lblNumTrieLeafs.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
92                lblNumTrieLeafs.setText("Size (Flattend FOM)");
93               
94                Label label_1 = new Label(grpStatistics, SWT.RIGHT);
95                label_1.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
96                label_1.setText(""+process.getNumFOMStates());
97               
98                Label lblEntropy = new Label(grpStatistics, SWT.NONE);
99                lblEntropy.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
100                lblEntropy.setText("Entropy");
101               
102                final Label label_2 = new Label(grpStatistics, SWT.RIGHT);
103                label_2.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
104                label_2.setText("####");
105               
106                Button btnCalculateEntropy = new Button(shlModelProperties, SWT.NONE);
107                btnCalculateEntropy.addSelectionListener(new SelectionAdapter() {
108                        @Override
109                        public void widgetSelected(SelectionEvent e) {
110                                if( process instanceof FirstOrderMarkovModel) {
111                                        label_2.setText(""+((FirstOrderMarkovModel) process).calcEntropy());
112                                } else {
113                                        MessageBox messageBox = new MessageBox(shlModelProperties, SWT.NONE);
114                                        messageBox.setText("Feature Not Available");
115                                        messageBox.setMessage("The feature is currently only available for first-order Markov models.");
116                                        messageBox.open();
117                                }
118                        }
119                });
120                btnCalculateEntropy.setText("Calculate Entropy");
121               
122                Button btnClose = new Button(shlModelProperties, SWT.NONE);
123                btnClose.setText("Close");
124
125        }
126       
127        public void setStochasticProcess(IStochasticProcess process) {
128                this.process = process;
129        }
130}
Note: See TracBrowser for help on using the repository browser.