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

Last change on this file since 655 was 655, checked in by pharms, 12 years ago
  • removed old copyright file header
  • Property svn:mime-type set to text/plain
File size: 5.9 KB
Line 
1package de.ugoe.cs.quest.ui.swt;
2
3import java.util.SortedSet;
4
5import org.eclipse.swt.widgets.Composite;
6import org.eclipse.swt.layout.GridLayout;
7import org.eclipse.swt.widgets.Label;
8import org.eclipse.swt.SWT;
9import org.eclipse.swt.widgets.Text;
10import org.eclipse.swt.layout.GridData;
11import org.eclipse.swt.widgets.Tree;
12import org.eclipse.swt.widgets.Button;
13import org.eclipse.swt.widgets.TreeItem;
14
15import de.ugoe.cs.quest.assertions.TextEqualsAssertEventType;
16import de.ugoe.cs.quest.eventcore.Event;
17import de.ugoe.cs.util.ArrayTools;
18
19import org.eclipse.swt.events.SelectionAdapter;
20import org.eclipse.swt.events.SelectionEvent;
21
22public class InsertTextEquals extends AbstractInsertEventComposite {
23    private Text expectedText;
24    private Tree targetTree;
25    private Text targetText;
26
27    /**
28     * Create the composite.
29     *
30     * @param parent
31     * @param style
32     */
33    public InsertTextEquals(Composite parent, int style, SortedSet<String> targets) {
34        super(parent, style, targets);
35        setLayout(new GridLayout(3, false));
36
37        Label lblExpectedValue = new Label(this, SWT.NONE);
38        lblExpectedValue.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
39        lblExpectedValue.setText("Expected Value:");
40
41        expectedText = new Text(this, SWT.BORDER);
42        expectedText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
43
44        Label lblTargetWidget = new Label(this, SWT.NONE);
45        lblTargetWidget.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
46        lblTargetWidget.setText("Target Widget:");
47
48        targetText = new Text(this, SWT.BORDER);
49        targetText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
50        new Label(this, SWT.NONE);
51
52        targetTree = new Tree(this, SWT.BORDER);
53        targetTree.addSelectionListener(new SelectionAdapter() {
54            @Override
55            public void widgetSelected(SelectionEvent e) {
56                TreeItem[] selection = targetTree.getSelection();
57                if (selection.length == 1) {
58                    TreeItem item = selection[0];
59                    String targetString = item.getText();
60                    item = item.getParentItem();
61                    while (item != null) {
62                        // TODO the "." is hard coded for the JFCMonitor. should be flexible
63                        targetString = item.getText() + "." + targetString;
64                        item = item.getParentItem();
65                    }
66                    targetText.setText(targetString);
67                }
68            }
69        });
70        targetTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
71        buildTargetTree();
72        new Label(this, SWT.NONE);
73
74        Button btnExpandAll = new Button(this, SWT.NONE);
75        btnExpandAll.addSelectionListener(new SelectionAdapter() {
76            @Override
77            public void widgetSelected(SelectionEvent e) {
78                expandAll(targetTree, true);
79            }
80        });
81        btnExpandAll.setText("Expand all");
82
83        Button btnCollapseAll = new Button(this, SWT.NONE);
84        btnCollapseAll.addSelectionListener(new SelectionAdapter() {
85            @Override
86            public void widgetSelected(SelectionEvent e) {
87                expandAll(targetTree, false);
88            }
89        });
90        btnCollapseAll.setText("Collapse all");
91
92    }
93
94    @Override
95    protected void checkSubclass() {
96        // Disable the check that prevents subclassing of SWT components
97    }
98
99    @Override
100    public Event getEvent() {
101        // TODO make compatible to new event core
102        /*
103         * IEventTarget target = targetText.getText(); TextEqualsReplay replay = new
104         * TextEqualsReplay(expectedText.getText(), target);
105         */
106        Event event = new Event(new TextEqualsAssertEventType());
107        /*
108         * event.setTarget(target); event.addReplayable(replay);
109         */
110        return event;
111    }
112
113    private void buildTargetTree() {
114        for (String target : targets) {
115            TreeItem currentParent = null;
116            TreeItem[] currentItems = targetTree.getItems();
117
118            // TODO needs rule for target splitting. currently its hard coded for JFCEvent targets.
119            String[] targetParts = target.split("\\.\\[");
120            for (String targetPart : targetParts) {
121                String[] currentTexts = new String[currentItems.length];
122                for (int i = 0; i < currentItems.length; i++) {
123                    currentTexts[i] = currentItems[i].getText();
124                }
125                if (currentParent != null) {
126                    targetPart = "[" + targetPart;
127                }
128                int index = ArrayTools.findIndex(currentTexts, targetPart);
129                if (index >= 0) {
130                    currentParent = currentItems[index];
131                }
132                else {
133                    if (currentParent == null) {
134                        currentParent = new TreeItem(targetTree, SWT.NULL);
135                        currentParent.setText(targetPart);
136                    }
137                    else {
138                        currentParent = new TreeItem(currentParent, SWT.NULL);
139                        currentParent.setText(targetPart);
140                    }
141                }
142                currentItems = currentParent.getItems();
143            }
144        }
145
146    }
147
148    private void expandAll(Tree tree, boolean expanded) {
149        for (TreeItem item : tree.getItems()) {
150            expandAll(item, expanded);
151        }
152    }
153
154    private void expandAll(TreeItem item, boolean expanded) {
155        item.setExpanded(expanded);
156        for (TreeItem childItem : item.getItems()) {
157            expandAll(childItem, expanded);
158        }
159    }
160
161}
Note: See TracBrowser for help on using the repository browser.