Ignore:
Timestamp:
09/21/12 11:06:24 (12 years ago)
Author:
sherbold
Message:
  • added interface to the GUIModel to merge nodes from the outside
  • added functionality to the SWT GUI to merge nodes of the GUI model manually
File:
1 edited

Legend:

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

    r777 r846  
    1212import org.eclipse.swt.widgets.Dialog; 
    1313import org.eclipse.swt.widgets.Display; 
     14import org.eclipse.swt.widgets.MessageBox; 
    1415import org.eclipse.swt.widgets.Shell; 
    1516import org.eclipse.swt.widgets.Tree; 
     
    1819import de.ugoe.cs.quest.eventcore.guimodel.GUIModel; 
    1920import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement; 
     21import de.ugoe.cs.util.console.Console; 
     22 
    2023import org.eclipse.swt.widgets.Label; 
    2124 
     
    7275        shell.setText(getText()); 
    7376 
    74         shell.setLayout(new GridLayout(2, false)); 
     77        shell.setLayout(new GridLayout(3, false)); 
    7578 
    76         guiTree = new Tree(shell, SWT.BORDER); 
    77         guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); 
     79        guiTree = new Tree(shell, SWT.BORDER | SWT.MULTI); 
     80        guiTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1)); 
    7881 
    7982        buildGuiTree(); 
     
    9699        }); 
    97100        btnCollapseAll.setText("Collapse all"); 
     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"); 
     110         
     111        //new Label(shell, SWT.NONE); 
     112        new Label(shell, SWT.NONE); 
    98113        new Label(shell, SWT.NONE); 
    99114        new Label(shell, SWT.NONE); 
     
    105120            TreeItem child = new TreeItem(guiTree, SWT.NULL); 
    106121            child.setText(element.toString()); 
     122            child.setData(element); 
    107123            buildGuiTree(child, model.getChildren(element)); 
    108124        } 
     
    113129            TreeItem child = new TreeItem(currentParent, SWT.NULL); 
    114130            child.setText(element.toString()); 
     131            child.setData(element); 
    115132            buildGuiTree(child, model.getChildren(element)); 
    116133        } 
     
    129146        } 
    130147    } 
     148     
     149    private void mergeSelectedNode(Tree tree) { 
     150        TreeItem[] selectedNodes = tree.getSelection(); 
     151        if( selectedNodes.length<2 ) { 
     152            MessageBox messageBox = new MessageBox(shell, SWT.ERROR); 
     153            messageBox.setMessage("Must select at least two nodes to merge!"); 
     154            messageBox.setText("Error"); 
     155            messageBox.open(); 
     156            return; 
     157        } 
     158         
     159        TreeItem firstParent = selectedNodes[0].getParentItem(); 
     160        for( int i=1 ; i<selectedNodes.length ; i++ ) { 
     161            if( firstParent!=selectedNodes[i].getParentItem() ) { 
     162                MessageBox messageBox = new MessageBox(shell, SWT.ERROR); 
     163                messageBox.setMessage("All selected nodes must have the same parent!"); 
     164                messageBox.setText("Error"); 
     165                messageBox.open(); 
     166                return; 
     167            } 
     168        } 
     169         
     170        try { 
     171            // try to merge the elements 
     172            IGUIElement firstElement = (IGUIElement) selectedNodes[0].getData(); 
     173            for( int i=1 ; i<selectedNodes.length ; i++ ) { 
     174                model.mergeGUIElements(firstElement, (IGUIElement) selectedNodes[i].getData()); 
     175            } 
     176        } catch( IllegalArgumentException e) { 
     177            Console.logException(e); 
     178        } 
     179         
     180        // update visualization of the model 
     181        firstParent.removeAll(); 
     182        buildGuiTree(firstParent, model.getChildren((IGUIElement) firstParent.getData())); 
     183        firstParent.setExpanded(true); 
     184    } 
    131185 
    132186} 
Note: See TracChangeset for help on using the changeset viewer.