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 treeNode.release();
57 }
58
59 public Operation getOperation()
60 {
61 return (Operation) getModelItem();
62 }
63
64 public void requestAdded(Request request)
65 {
66 RequestTreeNode requestTreeNode = new RequestTreeNode( request, getTreeModel() );
67 requestNodes.add( requestTreeNode );
68 reorder(false);
69 request.addPropertyChangeListener( Request.NAME_PROPERTY, propertyChangeListener );
70 getTreeModel().notifyNodeInserted( requestTreeNode );
71 }
72
73 public void requestRemoved(Request request)
74 {
75 SoapUITreeNode requestTreeNode = getTreeModel().getTreeNode( request );
76 if( requestNodes.contains( requestTreeNode ))
77 {
78 getTreeModel().notifyNodeRemoved( requestTreeNode );
79 requestNodes.remove( requestTreeNode );
80 request.removePropertyChangeListener( propertyChangeListener );
81 }
82 else throw new RuntimeException( "Removing unkown request" );
83 }
84 }