- Timestamp:
- 08/28/12 10:42:56 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java
r655 r659 1 1 2 package de.ugoe.cs.quest.ui.swt; 2 3 3 import java.util. SortedSet;4 import java.util.List; 4 5 5 6 import org.eclipse.swt.widgets.Composite; … … 14 15 15 16 import de.ugoe.cs.quest.assertions.TextEqualsAssertEventType; 17 import de.ugoe.cs.quest.assertions.TextEqualsReplay; 16 18 import de.ugoe.cs.quest.eventcore.Event; 17 import de.ugoe.cs.util.ArrayTools; 19 import de.ugoe.cs.quest.eventcore.IEventTarget; 20 import de.ugoe.cs.quest.eventcore.guimodel.GUIModel; 21 import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement; 18 22 19 23 import org.eclipse.swt.events.SelectionAdapter; … … 22 26 public class InsertTextEquals extends AbstractInsertEventComposite { 23 27 private Text expectedText; 24 private Tree targetTree; 25 private Text targetText; 28 private Tree guiTree; 26 29 27 30 /** … … 31 34 * @param style 32 35 */ 33 public InsertTextEquals(Composite parent, int style, SortedSet<String> targets) {34 super(parent, style, targets);36 public InsertTextEquals(Composite parent, int style, GUIModel guiModel) { 37 super(parent, style, guiModel); 35 38 setLayout(new GridLayout(3, false)); 36 39 … … 42 45 expectedText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); 43 46 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(); 47 guiTree = new Tree(this, SWT.BORDER); 48 guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); 49 buildGuiTree(); 72 50 new Label(this, SWT.NONE); 73 51 … … 76 54 @Override 77 55 public void widgetSelected(SelectionEvent e) { 78 expandAll( targetTree, true);56 expandAll(guiTree, true); 79 57 } 80 58 }); … … 85 63 @Override 86 64 public void widgetSelected(SelectionEvent e) { 87 expandAll( targetTree, false);65 expandAll(guiTree, false); 88 66 } 89 67 }); … … 99 77 @Override 100 78 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 */ 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 110 95 return event; 111 96 } 112 97 113 private void buildTargetTree() { 114 for (String target : targets) { 115 TreeItem currentParent = null; 116 TreeItem[] currentItems = targetTree.getItems(); 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 } 117 106 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 } 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)); 144 113 } 145 146 114 } 147 115
Note: See TracChangeset
for help on using the changeset viewer.