View Javadoc

1   /*
2    *  soapui, copyright (C) 2005 Ole Matzura / eviware.com 
3    *
4    *  SoapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of the GNU Lesser General Public License as published by the Free Software Foundation; 
6    *  either version 2.1 of the License, or (at your option) any later version.
7    *
8    *  SoapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
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  }