source: trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/ShowGuiModelDialog.java @ 658

Last change on this file since 658 was 658, checked in by sherbold, 12 years ago
  • extended SWT GUI such that GUI models can be displayed and browsed
  • Property svn:mime-type set to text/plain
File size: 3.7 KB
Line 
1
2package de.ugoe.cs.quest.ui.swt;
3
4import java.util.List;
5
6import org.eclipse.swt.SWT;
7import org.eclipse.swt.events.SelectionAdapter;
8import org.eclipse.swt.events.SelectionEvent;
9import org.eclipse.swt.layout.GridData;
10import org.eclipse.swt.layout.GridLayout;
11import org.eclipse.swt.widgets.Button;
12import org.eclipse.swt.widgets.Dialog;
13import org.eclipse.swt.widgets.Display;
14import org.eclipse.swt.widgets.Shell;
15import org.eclipse.swt.widgets.Tree;
16import org.eclipse.swt.widgets.TreeItem;
17
18import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
19import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
20import org.eclipse.swt.widgets.Label;
21
22/**
23 * <p>
24 * TODO comment
25 * </p>
26 *
27 * @version $Revision: $ $Date: Aug 28, 2012$
28 * @author 2012, last modified by $Author: sherbold$
29 */
30public class ShowGuiModelDialog extends Dialog {
31
32    protected Object result;
33    protected Shell shell;
34    private Tree guiTree;
35
36    protected GUIModel model;
37
38    /**
39     * Create the dialog.
40     *
41     * @param parent
42     * @param style
43     */
44    public ShowGuiModelDialog(Shell parent, int style, GUIModel model, String modelName) {
45        super(parent, style);
46        setText("GUI Model " + modelName);
47        this.model = model;
48    }
49
50    /**
51     * Open the dialog.
52     *
53     * @return the result
54     */
55    public Object open() {
56        createContents();
57        shell.open();
58        shell.layout();
59        Display display = getParent().getDisplay();
60        while (!shell.isDisposed()) {
61            if (!display.readAndDispatch()) {
62                display.sleep();
63            }
64        }
65        return result;
66    }
67
68    /**
69     * Create contents of the dialog.
70     */
71    private void createContents() {
72        shell = new Shell(getParent(), SWT.SHELL_TRIM | SWT.BORDER | SWT.APPLICATION_MODAL);
73        shell.setSize(450, 300);
74        shell.setText(getText());
75
76        shell.setLayout(new GridLayout(2, false));
77
78        guiTree = new Tree(shell, SWT.BORDER);
79        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
80
81        buildGuiTree();
82
83        Button btnExpandAll = new Button(shell, SWT.NONE);
84        btnExpandAll.addSelectionListener(new SelectionAdapter() {
85            @Override
86            public void widgetSelected(SelectionEvent e) {
87                expandAll(guiTree, true);
88            }
89        });
90        btnExpandAll.setText("Expand all");
91
92        Button btnCollapseAll = new Button(shell, SWT.NONE);
93        btnCollapseAll.addSelectionListener(new SelectionAdapter() {
94            @Override
95            public void widgetSelected(SelectionEvent e) {
96                expandAll(guiTree, false);
97            }
98        });
99        btnCollapseAll.setText("Collapse all");
100        new Label(shell, SWT.NONE);
101        new Label(shell, SWT.NONE);
102
103    }
104
105    private void buildGuiTree() {
106        for (IGUIElement element : model.getRootElements()) {
107            TreeItem child = new TreeItem(guiTree, SWT.NULL);
108            child.setText(element.toString());
109            buildGuiTree(child, model.getChildren(element));
110        }
111    }
112
113    private void buildGuiTree(TreeItem currentParent, List<IGUIElement> elements) {
114        for (IGUIElement element : elements) {
115            TreeItem child = new TreeItem(currentParent, SWT.NULL);
116            child.setText(element.toString());
117            buildGuiTree(child, model.getChildren(element));
118        }
119    }
120
121    private void expandAll(Tree tree, boolean expanded) {
122        for (TreeItem item : tree.getItems()) {
123            expandAll(item, expanded);
124        }
125    }
126
127    private void expandAll(TreeItem item, boolean expanded) {
128        item.setExpanded(expanded);
129        for (TreeItem childItem : item.getItems()) {
130            expandAll(childItem, expanded);
131        }
132    }
133
134}
Note: See TracBrowser for help on using the repository browser.