Ignore:
Timestamp:
04/04/13 16:06:07 (11 years ago)
Author:
pharms
Message:
  • complete refactoring of task tree model with a separation of task models and task instances
  • appropriate adaptation of task tree generation process
  • appropriate adaptation of commands and task tree visualization
File:
1 edited

Legend:

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

    r1122 r1146  
    1515package de.ugoe.cs.autoquest.ui.swt; 
    1616 
     17import java.util.List; 
     18 
    1719import org.eclipse.swt.SWT; 
     20import org.eclipse.swt.custom.SashForm; 
    1821import org.eclipse.swt.events.SelectionAdapter; 
    1922import org.eclipse.swt.events.SelectionEvent; 
     
    2730import org.eclipse.swt.widgets.TreeItem; 
    2831 
    29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    30 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     32import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 
     33import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 
     34import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     35import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 
     36import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 
     37import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
     38import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 
    3139 
    3240import org.eclipse.swt.widgets.Label; 
     
    4553     
    4654    /** */ 
    47     private Tree tree; 
    48  
    49     /** */ 
    50     protected ITaskTree taskTree; 
    51  
    52     /** 
    53      *  
    54      */ 
    55     public ShowTaskTreeDialog(Shell parent, int style, ITaskTree taskTree, String taskTreeName) { 
     55    private Tree instanceTree; 
     56     
     57    /** */ 
     58    private Tree modelTree; 
     59 
     60    /** */ 
     61    protected ITaskModel taskModel; 
     62 
     63    /** 
     64     *  
     65     */ 
     66    public ShowTaskTreeDialog(Shell parent, int style, ITaskModel taskModel, String taskTreeName) { 
    5667        super(parent, style); 
    57         setText("Task Tree " + taskTreeName); 
    58         this.taskTree = taskTree; 
     68        setText("Task Model " + taskTreeName); 
     69        this.taskModel = taskModel; 
    5970    } 
    6071 
     
    8394 
    8495        shell.setLayout(new GridLayout(4, false)); 
    85  
    86         tree = new Tree(shell, SWT.BORDER | SWT.MULTI); 
    87         tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 
    88  
    89         buildTree(); 
     96         
     97        SashForm sashForm = new SashForm(shell, SWT.VERTICAL); 
     98        sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); 
     99         
     100        instanceTree = new Tree(sashForm, SWT.BORDER | SWT.MULTI); 
     101        instanceTree.addSelectionListener(new SelectionAdapter() { 
     102            @Override 
     103            public void widgetSelected(SelectionEvent e) { 
     104                modelTree.removeAll(); 
     105                TreeItem[] selectedItems = instanceTree.getSelection(); 
     106                if ((selectedItems.length == 1) && 
     107                    (selectedItems[0].getData() instanceof ITaskInstance)) 
     108                { 
     109                    buildModelTree((ITaskInstance) selectedItems[0].getData()); 
     110                } 
     111            } 
     112        }); 
     113 
     114        buildInstanceTree(); 
     115 
     116        modelTree = new Tree(sashForm, SWT.BORDER | SWT.MULTI); 
    90117 
    91118        Button btnExpandAll = new Button(shell, SWT.NONE); 
     
    93120            @Override 
    94121            public void widgetSelected(SelectionEvent e) { 
    95                 expandAll(tree, true); 
     122                expandAll(instanceTree, true); 
    96123            } 
    97124        }); 
     
    102129            @Override 
    103130            public void widgetSelected(SelectionEvent e) { 
    104                 expandAll(tree, false); 
     131                expandAll(instanceTree, false); 
    105132            } 
    106133        }); 
     
    117144     *  
    118145     */ 
    119     private void buildTree() { 
    120         ITaskTreeNode root = taskTree.getRoot(); 
    121          
    122         TreeItem child = new TreeItem(tree, SWT.NULL); 
    123         child.setText(root.getName() + " (" + root.getDescription() + ")"); 
    124         child.setData(root); 
    125         buildGuiTree(child, root); 
    126     } 
    127  
    128     /** 
    129      *  
    130      */ 
    131     private void buildGuiTree(TreeItem currentParent, ITaskTreeNode node) { 
    132         if (node.getChildren() != null) { 
    133              
    134             for (ITaskTreeNode childTask : node.getChildren()) { 
    135                 TreeItem child = new TreeItem(currentParent, SWT.NULL); 
    136                 child.setText(childTask.getName() + " (" + childTask.getDescription() + ")"); 
    137                 child.setData(childTask); 
    138                 buildGuiTree(child, childTask); 
    139             } 
     146    private void buildInstanceTree() { 
     147        List<IUserSession> sessions = taskModel.getUserSessions(); 
     148         
     149        TreeItem root = new TreeItem(instanceTree, SWT.NULL); 
     150        root.setText(sessions.size() + " sessions"); 
     151        root.setData(sessions); 
     152         
     153        for (IUserSession session : sessions) { 
     154            buildInstanceTree(root, session); 
     155        } 
     156    } 
     157 
     158    /** 
     159     *  
     160     */ 
     161    private void buildInstanceTree(TreeItem currentParent, ITaskInstanceList taskInstanceList) { 
     162        TreeItem child = new TreeItem(currentParent, SWT.NULL); 
     163        child.setText(taskInstanceList.toString()); 
     164        child.setData(taskInstanceList); 
     165         
     166        for (ITaskInstanceList childTask : taskInstanceList) { 
     167            buildInstanceTree(child, childTask); 
     168        } 
     169    } 
     170 
     171    /** 
     172     *  
     173     */ 
     174    private void buildModelTree(ITaskInstance taskInstance) { 
     175        modelTree.removeAll(); 
     176        TreeItem root = new TreeItem(modelTree, SWT.NULL); 
     177        root.setText("model of instance " + taskInstance); 
     178        root.setData(taskInstance); 
     179 
     180        buildModelTree(taskInstance.getTask(), root); 
     181        expandAll(root, true); 
     182    } 
     183 
     184    /** 
     185     *  
     186     */ 
     187    private void buildModelTree(ITask task, TreeItem parent) { 
     188        TreeItem node = new TreeItem(parent, SWT.NULL); 
     189        node.setText(task.toString()); 
     190        node.setData(task); 
     191         
     192        if (task instanceof IStructuringTemporalRelationship) { 
     193            for (ITask subTask : ((IStructuringTemporalRelationship) task).getChildren()) { 
     194                buildModelTree(subTask, node); 
     195            } 
     196        } 
     197        else if (task instanceof IMarkingTemporalRelationship) { 
     198            buildModelTree(((IMarkingTemporalRelationship) task).getMarkedTask(), node); 
    140199        } 
    141200    } 
Note: See TracChangeset for help on using the changeset viewer.