1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.model.tree.nodes;
14
15 import javax.swing.event.TreeModelEvent;
16
17 import com.eviware.soapui.SoapUI;
18 import com.eviware.soapui.model.project.Project;
19 import com.eviware.soapui.model.support.WorkspaceListenerAdapter;
20 import com.eviware.soapui.model.tree.AbstractTreeNode;
21 import com.eviware.soapui.model.tree.SoapUITreeNode;
22 import com.eviware.soapui.model.workspace.Workspace;
23
24 /***
25 * SoapUITreeNode for Workspace implementations
26 *
27 * @author Ole.Matzura
28 */
29
30 public class WorkspaceTreeNode extends AbstractTreeNode
31 {
32 private InternalWorkspaceListener internalWorkspaceListener;
33
34 public WorkspaceTreeNode( Workspace workspace )
35 {
36 super( workspace, null );
37
38 internalWorkspaceListener = new InternalWorkspaceListener();
39 workspace.addWorkspaceListener( internalWorkspaceListener );
40 }
41
42 public void release()
43 {
44 super.release();
45
46 getWorkspace().removeWorkspaceListener( internalWorkspaceListener );
47 }
48
49 public int getChildCount()
50 {
51 return getWorkspace().getProjectCount();
52 }
53
54 public Workspace getWorkspace()
55 {
56 return (Workspace) getModelItem();
57 }
58
59 public int getIndexOfChild(Object child)
60 {
61 Workspace workspace = getWorkspace();
62 for( int c = 0; c < workspace.getProjectCount(); c++ )
63 {
64 if( workspace.getProjectAt( c ).getTreeNode() == child ) return c;
65 }
66
67 return -1;
68 }
69
70 public SoapUITreeNode getChildNode(int index)
71 {
72 return getWorkspace().getProjectAt( index ).getTreeNode();
73 }
74
75 private class InternalWorkspaceListener extends WorkspaceListenerAdapter
76 {
77 public void projectAdded(Project project)
78 {
79 getTreeModel().notifyNodeInserted( project.getTreeNode() );
80 SoapUI.getInstance().selectModelItem( project );
81 }
82
83 public void projectRemoved(Project project)
84 {
85 getTreeModel().notifyNodeRemoved( project.getTreeNode() );
86 }
87
88 public void projectChanged( Project project )
89 {
90 getTreeModel().notifyStructureChanged( new TreeModelEvent( WorkspaceTreeNode.this,
91 new Object[] { WorkspaceTreeNode.this } ));
92 }
93 }
94 }