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

Last change on this file since 659 was 659, checked in by sherbold, 12 years ago
  • modified adding of assertions to work with GUI models. As a side effect, it is currently impossible to add assertions to sequences whose event targets are not based on a GUI model
  • Property svn:mime-type set to text/plain
File size: 4.3 KB
RevLine 
[659]1
[526]2package de.ugoe.cs.quest.ui.swt;
3
[659]4import java.util.List;
[526]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
[548]16import de.ugoe.cs.quest.assertions.TextEqualsAssertEventType;
[659]17import de.ugoe.cs.quest.assertions.TextEqualsReplay;
[526]18import de.ugoe.cs.quest.eventcore.Event;
[659]19import de.ugoe.cs.quest.eventcore.IEventTarget;
20import de.ugoe.cs.quest.eventcore.guimodel.GUIModel;
21import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
[526]22
23import org.eclipse.swt.events.SelectionAdapter;
24import org.eclipse.swt.events.SelectionEvent;
25
26public class InsertTextEquals extends AbstractInsertEventComposite {
[570]27    private Text expectedText;
[659]28    private Tree guiTree;
[526]29
[570]30    /**
31     * Create the composite.
32     *
33     * @param parent
34     * @param style
35     */
[659]36    public InsertTextEquals(Composite parent, int style, GUIModel guiModel) {
37        super(parent, style, guiModel);
[570]38        setLayout(new GridLayout(3, false));
[526]39
[570]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:");
[526]43
[570]44        expectedText = new Text(this, SWT.BORDER);
45        expectedText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
[526]46
[659]47        guiTree = new Tree(this, SWT.BORDER);
48        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
49        buildGuiTree();
[570]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) {
[659]56                expandAll(guiTree, true);
[570]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) {
[659]65                expandAll(guiTree, false);
[570]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() {
[659]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
[570]95        return event;
96    }
97
[659]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    }
[570]106
[659]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));
[570]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
[526]129}
Note: See TracBrowser for help on using the repository browser.