KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > grapheditor > widget > OperationWithFaultWidget


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget;
21
22 import java.awt.Dimension JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import java.util.List JavaDoc;
25 import org.netbeans.api.visual.widget.Scene;
26 import org.netbeans.api.visual.widget.Widget;
27 import org.netbeans.modules.xml.wsdl.model.Fault;
28 import org.netbeans.modules.xml.wsdl.model.Operation;
29 import org.openide.util.Lookup;
30
31 /**
32  *
33  * @author rico
34  */

35 public abstract class OperationWithFaultWidget<T extends Operation> extends OperationWidget<T> {
36     private List JavaDoc<Fault> currentFaults;
37     private List JavaDoc<Fault> deletedFaults;
38     private List JavaDoc<Fault> newFaults;
39     private Widget dummyWidget;
40     
41     /** Creates a new instance of OperationWithFaultWidget */
42     public OperationWithFaultWidget(Scene scene, T operation, Lookup lookup) {
43         super(scene, operation, lookup);
44         deletedFaults = new ArrayList JavaDoc();
45         currentFaults = new ArrayList JavaDoc(getWSDLComponent().getFaults());
46         dummyWidget = new Widget(scene);
47         dummyWidget.setMinimumSize(new Dimension JavaDoc(5, 10));
48     }
49     
50     @Override JavaDoc
51     public void setRightSided(boolean rightSided) {
52         super.setRightSided(rightSided);
53         init();
54         populateFaults(getVerticalWidget());
55     }
56
57     protected abstract Widget getVerticalWidget();
58     protected abstract void init();
59     
60     @Override JavaDoc
61     public void updateContent() {
62         super.updateContent();
63         refreshFaults(getVerticalWidget());
64     }
65     
66     private void populateFaults(Widget verticalWidget){
67         if(currentFaults.size() > 0 ){
68             for(Fault fault : currentFaults){
69                 Widget faultWidget = WidgetFactory.getInstance().createWidget(getScene(), fault, getLookup());
70                 verticalWidget.addChild(faultWidget);
71             }
72         }
73         verticalWidget.addChild(dummyWidget);
74     }
75     
76     private void refreshFaults(Widget verticalWidget){
77         deletedFaults.clear();
78         deletedFaults.addAll(currentFaults);
79         newFaults = new ArrayList JavaDoc(getWSDLComponent().getFaults());
80         
81         //remove deleted faults
82
currentFaults.retainAll(newFaults);
83         //get new faults
84
newFaults.removeAll(currentFaults);
85         //add new faults
86
currentFaults.addAll(newFaults);
87         //get deleted faults
88
deletedFaults.removeAll(currentFaults);
89         if(newFaults.size() > 0){
90             verticalWidget.removeChild(dummyWidget);
91             for(Fault fault : newFaults){
92                 Widget faultWidget = WidgetFactory.getInstance().createWidget(getScene(),
93                         fault, getLookup());
94                  verticalWidget.addChild(faultWidget); //adjust for dummy widget. add the fault before dummy widget.
95
}
96             verticalWidget.addChild(dummyWidget);
97             getScene().validate();
98         }
99         if(deletedFaults.size() > 0){
100             List JavaDoc<Widget> children = new ArrayList JavaDoc(verticalWidget.getChildren());
101             for(Fault fault : deletedFaults){
102                 for(Widget child : children){
103                     if(child instanceof FaultWidget){
104                         FaultWidget fw = (FaultWidget)child;
105                         if(fw.getWSDLComponent() == fault){
106                             verticalWidget.removeChild(child);
107                         }
108                     }
109                 }
110             }
111             getScene().validate();
112         }
113     }
114 }
115
Popular Tags