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 com.eviware.soapui.SoapUI;
16  import com.eviware.soapui.model.iface.Interface;
17  import com.eviware.soapui.model.project.Project;
18  import com.eviware.soapui.model.project.ProjectListener;
19  import com.eviware.soapui.model.testsuite.TestSuite;
20  import com.eviware.soapui.model.tree.AbstractTreeNode;
21  import com.eviware.soapui.model.tree.SoapUITreeNode;
22  
23  /***
24   * SoapUITreeNode for Project implementations
25   * 
26   * @author Ole.Matzura
27   */
28  
29  public class ProjectTreeNode extends AbstractTreeNode
30  {
31  	private InternalProjectListener internalProjectListener;
32  
33     public ProjectTreeNode(Project project )
34     {
35        super( project, SoapUI.getInstance().getWorkspace() );
36        
37        internalProjectListener = new InternalProjectListener();
38  		project.addProjectListener( internalProjectListener);
39     }
40     
41     public void release()
42     {
43     	super.release();
44     	
45     	getProject().removeProjectListener( internalProjectListener );
46     }
47  
48     public int getChildCount()
49     {
50       return getProject().getInterfaceCount() + getProject().getTestSuiteCount();
51     }
52  
53     public int getIndexOfChild(Object child)
54     {
55        Project project = getProject();
56  		for( int c = 0; c < project.getInterfaceCount(); c++ )
57        {
58           if( project.getInterfaceAt( c ).getTreeNode() == child ) return c;
59        }
60        
61        for( int c = 0; c < project.getTestSuiteCount(); c++ )
62        {
63           if( project.getTestSuiteAt( c ).getTreeNode() == child ) 
64           	return c + project.getInterfaceCount();
65        }
66        
67        return -1;
68     }
69  
70     public SoapUITreeNode getChildNode(int index)
71     {
72        Project project = getProject();
73  		if( index < project.getInterfaceCount() )
74           return project.getInterfaceAt( index ).getTreeNode();
75        else
76           return project.getTestSuiteAt( index-project.getInterfaceCount() ).getTreeNode();
77     }
78  
79     public Project getProject()
80     {
81        return (Project) getModelItem();
82     }
83     
84     private class InternalProjectListener extends InternalTreeNodeListener implements ProjectListener
85     {
86     	public InternalProjectListener()
87     	{
88     		super( getTreeModel() );
89     	}
90  
91        public void interfaceAdded(Interface iface)
92        {
93           notifyNodeInserted( iface );
94        }
95           
96        public void interfaceRemoved(Interface iface)
97        {
98           notifyNodeRemoved( iface );
99        }
100       public void testSuiteAdded(TestSuite testSuite)
101       {
102          notifyNodeInserted( testSuite );
103       }
104 
105       public void testSuiteRemoved(TestSuite testSuite)
106       {
107          notifyNodeRemoved( testSuite );
108       }
109    }
110    
111 }