Ignore:
Timestamp:
05/19/17 11:31:29 (7 years ago)
Author:
pharms
Message:
  • refactored GUI model so that hierarchical event target structures can also be used and created by plugins not being strictly for GUIs
Location:
trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/AbstractInsertEventComposite.java

    r927 r2146  
    1818 
    1919import de.ugoe.cs.autoquest.eventcore.Event; 
    20 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     20import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    2121 
    2222abstract public class AbstractInsertEventComposite extends Composite { 
    2323 
    24     protected GUIModel guiModel; 
     24    protected IHierarchicalEventTargetModel<?> eventTargetModel; 
    2525 
    26     public AbstractInsertEventComposite(Composite parent, int style, GUIModel guiModel) { 
     26    public AbstractInsertEventComposite(Composite parent, int style, IHierarchicalEventTargetModel<?> eventTargetModel) { 
    2727        super(parent, style); 
    28         this.guiModel = guiModel; 
     28        this.eventTargetModel = eventTargetModel; 
    2929    } 
    3030 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/EditSequenceDialog.java

    r927 r2146  
    3232 
    3333import de.ugoe.cs.autoquest.eventcore.Event; 
    34 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     34import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3535 
    3636public class EditSequenceDialog extends Dialog { 
     
    4343 
    4444    private java.util.List<Event> sequence; 
    45     private GUIModel guiModel; 
     45    private IHierarchicalEventTargetModel<?> eventTargetModel; 
    4646 
    4747    /** 
     
    5151     * @param style 
    5252     */ 
    53     public EditSequenceDialog(Shell parent, int style, GUIModel guiModel) { 
     53    public EditSequenceDialog(Shell parent, int style, IHierarchicalEventTargetModel<?> eventTargetModel) { 
    5454        super(parent, style); 
    5555        setText("SWT Dialog"); 
    56         this.guiModel = guiModel; 
     56        this.eventTargetModel = eventTargetModel; 
    5757    } 
    5858 
     
    206206 
    207207    private void openInsertDialog(int position) { 
    208         if (guiModel == null) { 
     208        if (eventTargetModel == null) { 
    209209            MessageBox messageBox = new MessageBox(shell, SWT.ERROR); 
    210210            messageBox.setMessage("Operation not supported!\nOnly works for GUI sequences."); 
     
    212212            messageBox.open(); 
    213213        } else { 
    214             InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell, SWT.NONE, guiModel); 
     214            InsertAssertionDialog insertDialog = 
     215                new InsertAssertionDialog(shell, SWT.NONE, eventTargetModel); 
     216             
    215217            Event event = insertDialog.open(); 
    216218            if (event != null) { 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/GuiModelTabComposite.java

    r1275 r2146  
    2525import org.eclipse.swt.widgets.List; 
    2626 
     27import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTarget; 
     28import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    2729import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
    2830import de.ugoe.cs.util.console.GlobalDataContainer; 
     
    5254     * </p> 
    5355     */ 
    54     private void createContents() { 
     56    private <T extends IHierarchicalEventTarget> void createContents() { 
    5557        setLayout(new GridLayout(5, false)); 
    5658 
     
    6870                } 
    6971                String modelName = selectedStrings[0]; 
    70                 GUIModel model = (GUIModel) GlobalDataContainer.getInstance().getData(modelName); 
     72                 
     73                @SuppressWarnings("unchecked") 
     74                IHierarchicalEventTargetModel<T> model = 
     75                    (IHierarchicalEventTargetModel<T>) GlobalDataContainer.getInstance().getData(modelName); 
    7176 
    72                 ShowGuiModelDialog showGuiModelDialog = 
    73                     new ShowGuiModelDialog(getShell(), SWT.NONE, model, modelName); 
     77                ShowGuiModelDialog<T> showGuiModelDialog = 
     78                    new ShowGuiModelDialog<T>(getShell(), SWT.NONE, model, modelName); 
     79                 
    7480                showGuiModelDialog.open(); 
    7581            } 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/InsertAssertionDialog.java

    r927 r2146  
    3131 
    3232import de.ugoe.cs.autoquest.eventcore.Event; 
    33 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     33import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3434 
    3535public class InsertAssertionDialog extends Dialog { 
     
    4141 
    4242    List<AbstractInsertEventComposite> insertEventComposites; 
    43     GUIModel guiModel; 
     43    IHierarchicalEventTargetModel<?> eventTargetModel; 
    4444 
    4545    /** 
     
    4949     * @param style 
    5050     */ 
    51     public InsertAssertionDialog(Shell parent, int style, GUIModel guiModel) { 
     51    public InsertAssertionDialog(Shell parent, int style, IHierarchicalEventTargetModel<?> eventTargetModel) { 
    5252        super(parent, style); 
    5353        setText("SWT Dialog"); 
    54         this.guiModel = guiModel; 
     54        this.eventTargetModel = eventTargetModel; 
    5555    } 
    5656 
     
    9090        tbtmTextEquals.setText("TextEquals"); 
    9191        AbstractInsertEventComposite compTextEquals = 
    92             new InsertTextEquals(tabFolder, SWT.NO_BACKGROUND, guiModel); 
     92            new InsertTextEquals(tabFolder, SWT.NO_BACKGROUND, eventTargetModel); 
    9393        tbtmTextEquals.setControl(compTextEquals); 
    9494        insertEventComposites.add(compTextEquals); 
     
    9797        tbtmFileEquals.setText("FileEquals"); 
    9898        AbstractInsertEventComposite compFileEquals = 
    99             new InsertFileEquals(tabFolder, SWT.NO_BACKGROUND, guiModel); 
     99            new InsertFileEquals(tabFolder, SWT.NO_BACKGROUND, eventTargetModel); 
    100100        tbtmFileEquals.setControl(compFileEquals); 
    101101        insertEventComposites.add(compFileEquals); 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/InsertFileEquals.java

    r927 r2146  
    2727import de.ugoe.cs.autoquest.assertions.FileEqualsReplay; 
    2828import de.ugoe.cs.autoquest.eventcore.Event; 
    29 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     29import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3030 
    3131import org.eclipse.swt.events.SelectionAdapter; 
     
    4646     * @param style 
    4747     */ 
    48     public InsertFileEquals(Composite parent, int style, GUIModel guiModel) { 
    49         super(parent, style, guiModel); 
     48    public InsertFileEquals(Composite parent, int style, IHierarchicalEventTargetModel<?> eventTargetModel) { 
     49        super(parent, style, eventTargetModel); 
    5050        setLayout(new GridLayout(3, false)); 
    5151 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/InsertTextEquals.java

    r927 r2146  
    3131import de.ugoe.cs.autoquest.eventcore.Event; 
    3232import de.ugoe.cs.autoquest.eventcore.IEventTarget; 
    33 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
    34 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; 
     33import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTarget; 
     34import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3535 
    3636import org.eclipse.swt.events.SelectionAdapter; 
     
    4747     * @param style 
    4848     */ 
    49     public InsertTextEquals(Composite parent, int style, GUIModel guiModel) { 
    50         super(parent, style, guiModel); 
     49    public InsertTextEquals(Composite parent, int style, IHierarchicalEventTargetModel<?> eventTargetModel) { 
     50        super(parent, style, eventTargetModel); 
    5151        setLayout(new GridLayout(3, false)); 
    5252 
     
    6060        guiTree = new Tree(this, SWT.BORDER); 
    6161        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); 
    62         buildGuiTree(); 
     62        buildGuiTree(eventTargetModel); 
    6363        new Label(this, SWT.NONE); 
    6464 
     
    109109    } 
    110110 
    111     private void buildGuiTree() { 
    112         for (IGUIElement element : guiModel.getRootElements()) { 
     111    private <T extends IHierarchicalEventTarget> void buildGuiTree(IHierarchicalEventTargetModel<T> eventTargetModel) { 
     112        for (T element : eventTargetModel.getRootElements()) { 
    113113            TreeItem child = new TreeItem(guiTree, SWT.NULL); 
    114114            child.setText(element.toString()); 
    115115            child.setData(element); 
    116             buildGuiTree(child, guiModel.getChildren(element)); 
     116            buildGuiTree(child, eventTargetModel.getChildren(element), eventTargetModel); 
    117117        } 
    118118    } 
    119119 
    120     private void buildGuiTree(TreeItem currentParent, List<IGUIElement> elements) { 
    121         for (IGUIElement element : elements) { 
     120    private <T extends IHierarchicalEventTarget> void buildGuiTree(TreeItem                         currentParent, 
     121                                                                   List<T>                          list, 
     122                                                                   IHierarchicalEventTargetModel<T> eventTargetModel) 
     123    { 
     124        for (T element : list) { 
    122125            TreeItem child = new TreeItem(currentParent, SWT.NULL); 
    123126            child.setText(element.toString()); 
    124127            child.setData(element); 
    125             buildGuiTree(child, guiModel.getChildren(element)); 
     128            buildGuiTree(child, eventTargetModel.getChildren(element), eventTargetModel); 
    126129        } 
    127130    } 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/SequencesDialog.java

    r927 r2146  
    2929import de.ugoe.cs.autoquest.SequenceInstanceOf; 
    3030import de.ugoe.cs.autoquest.eventcore.Event; 
    31 import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     31import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3232import de.ugoe.cs.util.console.GlobalDataContainer; 
    3333 
     
    4141    private List sequenceList; 
    4242    private Collection<java.util.List<Event>> sequences; 
    43     private GUIModel guiModel; 
     43    private IHierarchicalEventTargetModel<?> eventTargetModel; 
    4444 
    4545    protected Shell shell; 
     
    9999                else { 
    100100                    EditSequenceDialog editSequenceDialog = 
    101                         new EditSequenceDialog(shell, SWT.NONE, guiModel); 
     101                        new EditSequenceDialog(shell, SWT.NONE, eventTargetModel); 
    102102                    int counter = 0; 
    103103                    java.util.List<Event> selectedSequence = null; 
     
    143143            Object targetObject = 
    144144                GlobalDataContainer.getInstance().getData(sequencesName + "_targets"); 
    145             guiModel = null; 
    146             if (targetObject instanceof GUIModel) { 
    147                 guiModel = (GUIModel) targetObject; 
     145            eventTargetModel = null; 
     146            if (targetObject instanceof IHierarchicalEventTargetModel) { 
     147                eventTargetModel = (IHierarchicalEventTargetModel<?>) targetObject; 
    148148            } 
    149149        } 
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowGuiModelDialog.java

    r1261 r2146  
    2828import org.eclipse.swt.widgets.TreeItem; 
    2929 
     30import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTarget; 
     31import de.ugoe.cs.autoquest.eventcore.IHierarchicalEventTargetModel; 
    3032import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
    3133import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; 
     
    3436import org.eclipse.swt.widgets.Label; 
    3537 
    36 public class ShowGuiModelDialog extends Dialog { 
     38public class ShowGuiModelDialog<T extends IHierarchicalEventTarget> extends Dialog { 
    3739 
    3840    protected Shell shell; 
    39     private Tree guiTree; 
    40  
    41     protected GUIModel model; 
    42  
    43     public ShowGuiModelDialog(Shell parent, int style, GUIModel model, String modelName) { 
     41    private Tree targetTree; 
     42 
     43    protected IHierarchicalEventTargetModel<T> model; 
     44 
     45    public ShowGuiModelDialog(Shell parent, int style, IHierarchicalEventTargetModel<T> model, String modelName) { 
    4446        super(parent, style); 
    4547        setText("GUI Model " + modelName); 
     
    6668        shell.setLayout(new GridLayout(4, false)); 
    6769 
    68         guiTree = new Tree(shell, SWT.BORDER | SWT.MULTI); 
    69         guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 
    70  
    71         buildGuiTree(); 
     70        targetTree = new Tree(shell, SWT.BORDER | SWT.MULTI); 
     71        targetTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 
     72 
     73        buildTargetTree(); 
    7274 
    7375        Button btnExpandAll = new Button(shell, SWT.NONE); 
     
    7577            @Override 
    7678            public void widgetSelected(SelectionEvent e) { 
    77                 expandAll(guiTree, true); 
     79                expandAll(targetTree, true); 
    7880            } 
    7981        }); 
     
    8486            @Override 
    8587            public void widgetSelected(SelectionEvent e) { 
    86                 expandAll(guiTree, false); 
     88                expandAll(targetTree, false); 
    8789            } 
    8890        }); 
    8991        btnCollapseAll.setText("Collapse all"); 
    9092         
    91         Button btnCondense = new Button(shell, SWT.NONE); 
    92         btnCondense.addSelectionListener(new SelectionAdapter() { 
    93             @Override 
    94             public void widgetSelected(SelectionEvent e) { 
    95                 model.condenseModel(); 
    96                 guiTree.removeAll(); 
    97                 buildGuiTree(); 
    98             } 
    99         }); 
    100         btnCondense.setText("Condense"); 
    101          
    102         Button btnMerge = new Button(shell, SWT.NONE); 
    103         btnMerge.addSelectionListener(new SelectionAdapter() { 
    104             @Override 
    105             public void widgetSelected(SelectionEvent e) { 
    106                 mergeSelectedNode(guiTree); 
    107             } 
    108         }); 
    109         btnMerge.setText("Merge nodes"); 
     93        if (model instanceof GUIModel) { 
     94            Button btnCondense = new Button(shell, SWT.NONE); 
     95            btnCondense.addSelectionListener(new SelectionAdapter() { 
     96                @Override 
     97                public void widgetSelected(SelectionEvent e) { 
     98                    ((GUIModel) model).condenseModel(); 
     99                    targetTree.removeAll(); 
     100                    buildTargetTree(); 
     101                } 
     102            }); 
     103            btnCondense.setText("Condense"); 
     104 
     105            Button btnMerge = new Button(shell, SWT.NONE); 
     106            btnMerge.addSelectionListener(new SelectionAdapter() { 
     107                @Override 
     108                public void widgetSelected(SelectionEvent e) { 
     109                    mergeSelectedNode(targetTree); 
     110                } 
     111            }); 
     112            btnMerge.setText("Merge nodes"); 
     113        } 
    110114         
    111115        //new Label(shell, SWT.NONE); 
     
    116120    } 
    117121 
    118     private void buildGuiTree() { 
    119         GUIModel.Traverser traverser = model.getTraverser(); 
    120          
    121         IGUIElement root = traverser.firstChild(); 
     122    private void buildTargetTree() { 
     123        IHierarchicalEventTargetModel.Traverser<T> traverser = model.getTraverser(); 
     124         
     125        IHierarchicalEventTarget root = traverser.firstChild(); 
    122126         
    123127        while (root != null) { 
    124             TreeItem child = new TreeItem(guiTree, SWT.NULL); 
     128            TreeItem child = new TreeItem(targetTree, SWT.NULL); 
    125129            child.setText(root.toString()); 
    126130            child.setData(root); 
    127             buildGuiTree(child, traverser); 
     131            buildTargetTree(child, traverser); 
    128132            root = traverser.nextSibling(); 
    129133        } 
    130134    } 
    131135 
    132     private void buildGuiTree(TreeItem currentParent, GUIModel.Traverser traverser) { 
     136    private void buildTargetTree(TreeItem                                   currentParent, 
     137                                 IHierarchicalEventTargetModel.Traverser<T> traverser) 
     138    { 
    133139        if (traverser.hasFirstChild()) { 
    134             IGUIElement childElement = traverser.firstChild(); 
     140            T childElement = traverser.firstChild(); 
    135141         
    136142            while (childElement != null) { 
     
    138144                child.setText(childElement.toString()); 
    139145                child.setData(childElement); 
    140                 buildGuiTree(child, traverser); 
     146                buildTargetTree(child, traverser); 
    141147                childElement = traverser.nextSibling(); 
    142148            } 
     
    159165    } 
    160166     
     167    @SuppressWarnings("unchecked") 
    161168    private void mergeSelectedNode(Tree tree) { 
    162169        TreeItem[] selectedNodes = tree.getSelection(); 
     
    184191            IGUIElement firstElement = (IGUIElement) selectedNodes[0].getData(); 
    185192            for( int i=1 ; i<selectedNodes.length ; i++ ) { 
    186                 model.mergeGUIElements(firstElement, (IGUIElement) selectedNodes[i].getData()); 
    187             } 
    188         } catch( IllegalArgumentException e) { 
     193                ((GUIModel) model).mergeEventTargets 
     194                    (firstElement, (IGUIElement) selectedNodes[i].getData()); 
     195            } 
     196        } 
     197        catch( IllegalArgumentException e) { 
    189198            Console.logException(e); 
    190199        } 
     
    193202        if (firstParent != null) { 
    194203            firstParent.removeAll(); 
    195             buildGuiTree(firstParent, model.getTraverser((IGUIElement) firstParent.getData())); 
     204            buildTargetTree(firstParent, model.getTraverser((T) firstParent.getData())); 
    196205            firstParent.setExpanded(true); 
    197206        } 
    198207        else { 
    199             guiTree.removeAll(); 
    200             buildGuiTree(); 
     208            targetTree.removeAll(); 
     209            buildTargetTree(); 
    201210        } 
    202211    } 
Note: See TracChangeset for help on using the changeset viewer.