source: trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/MainWindow.java @ 922

Last change on this file since 922 was 922, checked in by sherbold, 12 years ago
  • renaming of packages from de.ugoe.cs.quest to de.ugoe.cs.autoquest
  • Property svn:mime-type set to text/plain
File size: 8.4 KB
Line 
1package de.ugoe.cs.autoquest.ui.swt;
2
3import java.util.List;
4import java.util.logging.Level;
5
6import org.eclipse.swt.widgets.Display;
7import org.eclipse.swt.widgets.Shell;
8import org.eclipse.swt.widgets.Menu;
9import org.eclipse.swt.SWT;
10import org.eclipse.swt.widgets.FileDialog;
11import org.eclipse.swt.widgets.MenuItem;
12import org.eclipse.swt.widgets.TabFolder;
13import org.eclipse.swt.widgets.TabItem;
14import org.eclipse.swt.layout.GridLayout;
15import org.eclipse.swt.layout.GridData;
16import org.eclipse.swt.events.SelectionAdapter;
17import org.eclipse.swt.events.SelectionEvent;
18
19import de.ugoe.cs.util.console.CommandExecuter;
20
21/**
22 * <p>
23 * Main window of the SWT GUI.
24 * </p>
25 *
26 * @author Steffen Herbold
27 * @version 1.0
28 */
29public class MainWindow {
30
31    private List<String> startupCommands;
32   
33    private final Level traceLevel;
34
35    protected Shell shlEventbenchConsole;
36
37    protected TabItem consoleTab;
38    protected TabItem sequencesTab;
39    protected TabItem modelsTab;
40    protected TabItem guiModelsTab;
41    protected TabItem dataTab;
42    protected ConsoleTabComposite consoleTabComposite;
43    protected SequencesTabComposite sequencesTabComposite;
44    protected ModelsTabComposite modelsTabComposite;
45    protected GuiModelTabComposite guiModelTabComposite;
46    protected DataTabComposite dataTabComposite;
47
48    protected CommandHistoryDialog historyDialog;
49
50    public MainWindow(List<String> startupCommands, Level traceLevel) {
51        this.startupCommands = startupCommands;
52        this.traceLevel = traceLevel;
53    }
54
55    /**
56     * <p>
57     * Open the window.
58     * </p>
59     *
60     * @wbp.parser.entryPoint
61     */
62    public void open() {
63        Display display = Display.getDefault();
64        createContents();
65        new SWTConsole(consoleTabComposite.textConsoleOutput, traceLevel);
66        historyDialog = new CommandHistoryDialog(shlEventbenchConsole, SWT.NONE);
67        shlEventbenchConsole.open();
68        shlEventbenchConsole.layout();
69        for (String command : startupCommands) {
70            CommandExecuter.getInstance().exec(command);
71        }
72        while (!shlEventbenchConsole.isDisposed()) {
73            if (!display.readAndDispatch()) {
74                display.sleep();
75            }
76        }
77    }
78
79    /**
80     * <p>
81     * Create contents of the window.
82     * </p>
83     */
84    protected void createContents() {
85        shlEventbenchConsole = new Shell();
86        shlEventbenchConsole.setSize(800, 600);
87        shlEventbenchConsole.setText("EventBench Console");
88        shlEventbenchConsole.setLayout(new GridLayout(1, false));
89
90        createMenu();
91        createTabs();
92    }
93
94    /**
95     * </p> Creates the menu of the window. </p>
96     */
97    private void createMenu() {
98        Menu menu = new Menu(shlEventbenchConsole, SWT.BAR);
99        shlEventbenchConsole.setMenuBar(menu);
100
101        MenuItem mntmFile = new MenuItem(menu, SWT.CASCADE);
102        mntmFile.setText("File");
103
104        Menu menu_1 = new Menu(mntmFile);
105        mntmFile.setMenu(menu_1);
106
107        MenuItem mntmShowHistory = new MenuItem(menu_1, SWT.NONE);
108        mntmShowHistory.addSelectionListener(new SelectionAdapter() {
109            @Override
110            public void widgetSelected(SelectionEvent e) {
111                if (!historyDialog.isOpen()) {
112                    historyDialog.open();
113                }
114            }
115        });
116        mntmShowHistory.setText("Show History");
117
118        MenuItem mntmExecBatchFile = new MenuItem(menu_1, SWT.NONE);
119        mntmExecBatchFile.addSelectionListener(new SelectionAdapter() {
120            @Override
121            public void widgetSelected(SelectionEvent e) {
122                FileDialog fileDialog = new FileDialog(shlEventbenchConsole, SWT.OPEN);
123                String filename = fileDialog.open();
124                if (filename != null) {
125                    String command = "exec '" + filename + "'";
126                    CommandExecuter.getInstance().exec(command);
127                }
128            }
129        });
130        mntmExecBatchFile.setText("Exec. Batch File");
131
132        new MenuItem(menu_1, SWT.SEPARATOR);
133
134        MenuItem mntmLoad = new MenuItem(menu_1, SWT.NONE);
135        mntmLoad.addSelectionListener(new SelectionAdapter() {
136            @Override
137            public void widgetSelected(SelectionEvent e) {
138                FileDialog fileDialog = new FileDialog(shlEventbenchConsole, SWT.OPEN);
139                String filename = fileDialog.open();
140                if (filename != null) {
141                    String command = "load '" + filename + "'";
142                    CommandExecuter.getInstance().exec(command);
143                }
144            }
145        });
146        mntmLoad.setText("Load...");
147
148        MenuItem mntmSave = new MenuItem(menu_1, SWT.NONE);
149        mntmSave.addSelectionListener(new SelectionAdapter() {
150            @Override
151            public void widgetSelected(SelectionEvent e) {
152                FileDialog fileDialog = new FileDialog(shlEventbenchConsole, SWT.SAVE);
153                String filename = fileDialog.open();
154                if (filename != null) {
155                    String command = "save '" + filename + "'";
156                    CommandExecuter.getInstance().exec(command);
157                }
158            }
159        });
160        mntmSave.setText("Save...");
161
162        new MenuItem(menu_1, SWT.SEPARATOR);
163
164        MenuItem mntmExit = new MenuItem(menu_1, SWT.NONE);
165        mntmExit.addSelectionListener(new SelectionAdapter() {
166            @Override
167            public void widgetSelected(SelectionEvent e) {
168                shlEventbenchConsole.dispose();
169            }
170        });
171        mntmExit.setText("Exit");
172
173        MenuItem mntmHelp = new MenuItem(menu, SWT.CASCADE);
174        mntmHelp.setText("Help");
175
176        Menu menu_2 = new Menu(mntmHelp);
177        mntmHelp.setMenu(menu_2);
178
179        MenuItem mntmAbout = new MenuItem(menu_2, SWT.NONE);
180        mntmAbout.addSelectionListener(new SelectionAdapter() {
181            @Override
182            public void widgetSelected(SelectionEvent e) {
183                AboutDialog aboutDialog = new AboutDialog(shlEventbenchConsole, SWT.NONE);
184                aboutDialog.open();
185            }
186        });
187        mntmAbout.setText("About");
188    }
189
190    /**
191     * <p>
192     * Creates the central TabFolder of the window.
193     * </p>
194     */
195    private void createTabs() {
196        TabFolder tabFolder = new TabFolder(shlEventbenchConsole, SWT.NONE);
197        tabFolder.addSelectionListener(new SelectionAdapter() {
198            @Override
199            public void widgetSelected(SelectionEvent e) {
200                if (e.item == sequencesTab) {
201                    sequencesTabComposite.updateSequenceList();
202                }
203                else if (e.item == modelsTab) {
204                    modelsTabComposite.updateModelList();
205                }
206                else if (e.item == guiModelsTab) {
207                    guiModelTabComposite.updateModelList();
208                }
209                else if (e.item == dataTab) {
210                    dataTabComposite.updateDataList();
211                }
212            }
213        });
214        tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
215
216        consoleTab = new TabItem(tabFolder, SWT.NONE);
217        consoleTab.setText("Console");
218
219        consoleTabComposite = new ConsoleTabComposite(tabFolder, SWT.NO_BACKGROUND);
220        consoleTab.setControl(consoleTabComposite);
221
222        sequencesTab = new TabItem(tabFolder, SWT.NONE);
223        sequencesTab.setText("Sequences");
224
225        sequencesTabComposite = new SequencesTabComposite(tabFolder, SWT.NO_BACKGROUND);
226        sequencesTab.setControl(sequencesTabComposite);
227
228        modelsTab = new TabItem(tabFolder, SWT.NONE);
229        modelsTab.setText("Models");
230
231        modelsTabComposite = new ModelsTabComposite(tabFolder, SWT.NO_BACKGROUND);
232        modelsTab.setControl(modelsTabComposite);
233       
234        guiModelsTab = new TabItem(tabFolder, SWT.NONE);
235        guiModelsTab.setText("GUI Models");
236
237        guiModelTabComposite = new GuiModelTabComposite(tabFolder, SWT.NO_BACKGROUND);
238        guiModelsTab.setControl(guiModelTabComposite);
239
240        dataTab = new TabItem(tabFolder, SWT.NONE);
241        dataTab.setText("Data");
242
243        dataTabComposite = new DataTabComposite(tabFolder, SWT.NO_BACKGROUND);
244        dataTab.setControl(dataTabComposite);
245    }
246}
Note: See TracBrowser for help on using the repository browser.