source: trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/InsertTextEquals.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: 4.3 KB
Line 
1
2package de.ugoe.cs.autoquest.ui.swt;
3
4import java.util.List;
5
6import org.eclipse.swt.widgets.Composite;
7import org.eclipse.swt.layout.GridLayout;
8import org.eclipse.swt.widgets.Label;
9import org.eclipse.swt.SWT;
10import org.eclipse.swt.widgets.Text;
11import org.eclipse.swt.layout.GridData;
12import org.eclipse.swt.widgets.Tree;
13import org.eclipse.swt.widgets.Button;
14import org.eclipse.swt.widgets.TreeItem;
15
16import de.ugoe.cs.autoquest.assertions.TextEqualsAssertEventType;
17import de.ugoe.cs.autoquest.assertions.TextEqualsReplay;
18import de.ugoe.cs.autoquest.eventcore.Event;
19import de.ugoe.cs.autoquest.eventcore.IEventTarget;
20import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel;
21import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
22
23import org.eclipse.swt.events.SelectionAdapter;
24import org.eclipse.swt.events.SelectionEvent;
25
26public class InsertTextEquals extends AbstractInsertEventComposite {
27    private Text expectedText;
28    private Tree guiTree;
29
30    /**
31     * Create the composite.
32     *
33     * @param parent
34     * @param style
35     */
36    public InsertTextEquals(Composite parent, int style, GUIModel guiModel) {
37        super(parent, style, guiModel);
38        setLayout(new GridLayout(3, false));
39
40        Label lblExpectedValue = new Label(this, SWT.NONE);
41        lblExpectedValue.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
42        lblExpectedValue.setText("Expected Value:");
43
44        expectedText = new Text(this, SWT.BORDER);
45        expectedText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
46
47        guiTree = new Tree(this, SWT.BORDER);
48        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
49        buildGuiTree();
50        new Label(this, SWT.NONE);
51
52        Button btnExpandAll = new Button(this, SWT.NONE);
53        btnExpandAll.addSelectionListener(new SelectionAdapter() {
54            @Override
55            public void widgetSelected(SelectionEvent e) {
56                expandAll(guiTree, true);
57            }
58        });
59        btnExpandAll.setText("Expand all");
60
61        Button btnCollapseAll = new Button(this, SWT.NONE);
62        btnCollapseAll.addSelectionListener(new SelectionAdapter() {
63            @Override
64            public void widgetSelected(SelectionEvent e) {
65                expandAll(guiTree, false);
66            }
67        });
68        btnCollapseAll.setText("Collapse all");
69
70    }
71
72    @Override
73    protected void checkSubclass() {
74        // Disable the check that prevents subclassing of SWT components
75    }
76
77    @Override
78    public Event getEvent() {
79        // TODO possibly display error if no target is selected
80        TreeItem[] selection = guiTree.getSelection();
81        IEventTarget target = null;
82        TextEqualsReplay replay = null;
83        if (selection.length == 1) {
84            target = (IEventTarget) selection[0].getData();
85            replay = new TextEqualsReplay(expectedText.getText(), target.toString());
86        }
87
88        Event event = new Event(new TextEqualsAssertEventType(), target);
89
90        event.setTarget(target);
91        if (replay != null) {
92            event.addReplayable(replay);
93        }
94
95        return event;
96    }
97
98    private void buildGuiTree() {
99        for (IGUIElement element : guiModel.getRootElements()) {
100            TreeItem child = new TreeItem(guiTree, SWT.NULL);
101            child.setText(element.toString());
102            child.setData(element);
103            buildGuiTree(child, guiModel.getChildren(element));
104        }
105    }
106
107    private void buildGuiTree(TreeItem currentParent, List<IGUIElement> elements) {
108        for (IGUIElement element : elements) {
109            TreeItem child = new TreeItem(currentParent, SWT.NULL);
110            child.setText(element.toString());
111            child.setData(element);
112            buildGuiTree(child, guiModel.getChildren(element));
113        }
114    }
115
116    private void expandAll(Tree tree, boolean expanded) {
117        for (TreeItem item : tree.getItems()) {
118            expandAll(item, expanded);
119        }
120    }
121
122    private void expandAll(TreeItem item, boolean expanded) {
123        item.setExpanded(expanded);
124        for (TreeItem childItem : item.getItems()) {
125            expandAll(childItem, expanded);
126        }
127    }
128
129}
Note: See TracBrowser for help on using the repository browser.