1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.model.tree.nodes;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import com.eviware.soapui.model.iface.Operation;
19 import com.eviware.soapui.model.iface.Request;
20 import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
21 import com.eviware.soapui.model.tree.SoapUITreeModel;
22 import com.eviware.soapui.model.tree.SoapUITreeNode;
23 import com.eviware.soapui.settings.UISettings;
24
25 /***
26 * SoapUITreeNode for Operation implementations
27 *
28 * @author Ole.Matzura
29 */
30
31 public class OperationTreeNode extends AbstractModelItemTreeNode<Operation>
32 {
33 private List<RequestTreeNode> requestNodes = new ArrayList<RequestTreeNode>();
34 private ReorderPropertyChangeListener propertyChangeListener = new ReorderPropertyChangeListener();
35
36 public OperationTreeNode( Operation operation, SoapUITreeModel treeModel )
37 {
38 super( operation, operation.getInterface(), treeModel );
39
40 for( int c = 0; c < operation.getRequestCount(); c++ )
41 {
42 Request request = operation.getRequestAt( c );
43 request.addPropertyChangeListener( Request.NAME_PROPERTY, propertyChangeListener );
44 requestNodes.add( new RequestTreeNode( request, getTreeModel() ) );
45 }
46
47 initOrdering( requestNodes, UISettings.ORDER_REQUESTS );
48 treeModel.mapModelItems( requestNodes );
49 }
50
51 public void release()
52 {
53 super.release();
54
55 for( RequestTreeNode treeNode : requestNodes )
56 {
57 treeNode.getModelItem().removePropertyChangeListener( Request.NAME_PROPERTY, propertyChangeListener );
58 treeNode.release();
59 }
60 }
61
62 public Operation getOperation()
63 {
64 return ( Operation )getModelItem();
65 }
66
67 public void requestAdded( Request request )
68 {
69 RequestTreeNode requestTreeNode = new RequestTreeNode( request, getTreeModel() );
70 requestNodes.add( requestTreeNode );
71 reorder( false );
72 request.addPropertyChangeListener( Request.NAME_PROPERTY, propertyChangeListener );
73 getTreeModel().notifyNodeInserted( requestTreeNode );
74 }
75
76 public void requestRemoved( Request request )
77 {
78 SoapUITreeNode requestTreeNode = getTreeModel().getTreeNode( request );
79 if( requestNodes.contains( requestTreeNode ) )
80 {
81 getTreeModel().notifyNodeRemoved( requestTreeNode );
82 requestNodes.remove( requestTreeNode );
83 request.removePropertyChangeListener( propertyChangeListener );
84 }
85 else
86 throw new RuntimeException( "Removing unknown request" );
87 }
88 }