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