1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget; 21 22 import java.awt.Dimension ; 23 import java.util.ArrayList ; 24 import java.util.List ; 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 35 public abstract class OperationWithFaultWidget<T extends Operation> extends OperationWidget<T> { 36 private List <Fault> currentFaults; 37 private List <Fault> deletedFaults; 38 private List <Fault> newFaults; 39 private Widget dummyWidget; 40 41 42 public OperationWithFaultWidget(Scene scene, T operation, Lookup lookup) { 43 super(scene, operation, lookup); 44 deletedFaults = new ArrayList (); 45 currentFaults = new ArrayList (getWSDLComponent().getFaults()); 46 dummyWidget = new Widget(scene); 47 dummyWidget.setMinimumSize(new Dimension (5, 10)); 48 } 49 50 @Override 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 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 (getWSDLComponent().getFaults()); 80 81 currentFaults.retainAll(newFaults); 83 newFaults.removeAll(currentFaults); 85 currentFaults.addAll(newFaults); 87 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); } 96 verticalWidget.addChild(dummyWidget); 97 getScene().validate(); 98 } 99 if(deletedFaults.size() > 0){ 100 List <Widget> children = new ArrayList (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 |