1 19 package org.netbeans.modules.j2ee.websphere6.dd.loaders.ejbbnd; 20 21 import java.io.IOException ; 22 import org.netbeans.modules.j2ee.websphere6.dd.beans.EjbBindingsType; 23 import org.netbeans.modules.j2ee.websphere6.dd.beans.WSEjbBnd; 24 import org.netbeans.modules.j2ee.websphere6.dd.loaders.WSMultiViewDataObject; 25 import org.netbeans.modules.xml.multiview.*; 26 import org.netbeans.modules.xml.multiview.ui.*; 27 import org.openide.nodes.*; 28 import org.openide.util.RequestProcessor; 29 import org.openide.util.NbBundle; 30 import org.netbeans.modules.xml.multiview.Error; 31 35 public class WSEjbBndToolBarMVElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener { 36 private ToolBarDesignEditor comp; 37 private SectionView view; 38 private WSEjbBndDataObject dObj; 39 private PanelFactory factory; 40 private RequestProcessor.Task repaintingTask; 41 private boolean needInit=true; 42 private javax.swing.Action addBindingAction, removeBindingAction; 43 private static final long serialVersionUID = 76737428339792L; 44 private static final String EJBBND_MV_ID = WSMultiViewDataObject.MULTIVIEW_EJBBND + 45 WSMultiViewDataObject.DD_MULTIVIEW_POSTFIX; 46 47 public WSEjbBndToolBarMVElement(WSEjbBndDataObject dObj) { 48 super(dObj); 49 this.dObj=dObj; 50 comp = new ToolBarDesignEditor(); 51 factory=new PanelFactory(comp,dObj); 52 53 addBindingAction = new AddBindingAction(NbBundle.getMessage(WSEjbBndToolBarMVElement.class,"LBL_addEjbBinding")); 54 removeBindingAction = new RemoveBindingAction(NbBundle.getMessage(WSEjbBndToolBarMVElement.class,"LBL_removeEjbBinding")); 55 56 setVisualEditor(comp); 57 repaintingTask = RequestProcessor.getDefault().create(new Runnable () { 58 public void run() { 59 javax.swing.SwingUtilities.invokeLater(new Runnable () { 60 public void run() { 61 repaintView(); 62 } 63 }); 64 } 65 }); 66 } 67 68 private void repaintView() { 69 view =new WSEjbBndView(dObj); 70 comp.setContentView(view); 71 Object lastActive = comp.getLastActive(); 72 if (lastActive!=null) { 73 ((SectionView)view).openPanel(lastActive); 74 } else { 75 } 77 view.checkValidity(); 78 } 80 81 82 83 public SectionView getSectionView() { 84 return view; 85 } 86 public WSEjbBndView getEjbBndView() { 87 return (WSEjbBndView)view; 88 } 89 90 public void componentShowing() { 91 super.componentShowing(); 92 if (needInit) { 93 repaintView(); 94 needInit=false; 95 } 96 comp.setContentView(view); 98 try { 99 ((SectionView)view).openPanel(dObj.getEjbBnd()); 100 } catch(java.io.IOException e) { 101 } 102 view.checkValidity(); 103 } 104 105 public void componentOpened() { 106 super.componentOpened(); 107 try { 108 dObj.getEjbBnd().addPropertyChangeListener(this); 109 } catch(IOException ex) { 110 ex=null; 111 } 112 } 113 114 public void componentClosed() { 115 super.componentClosed(); 116 try { 117 dObj.getEjbBnd().removePropertyChangeListener(this); 118 } catch(IOException ex) { 119 ex=null; 120 } 121 } 122 123 public void propertyChange(java.beans.PropertyChangeEvent evt) { 124 if (!dObj.isChangedFromUI()) { 125 String name = evt.getPropertyName(); 126 if ( name.indexOf("EjbJarBnd")>0 ) { if (EJBBND_MV_ID.equals(dObj.getSelectedPerspective().preferredID())) { 129 repaintingTask.schedule(100); 130 } else { 131 needInit=true; 132 } 133 } 134 } 135 } 136 137 private class WSEjbBndView extends SectionView { 138 private SectionContainer bindingsCont; 139 private WSEjbBnd ejbbnd; 140 WSEjbBndView(WSEjbBndDataObject dObj) { 141 super(factory); 142 143 Children rootChildren = new Children.Array(); 144 Node root = new AbstractNode(rootChildren); 145 try { 146 this.ejbbnd=dObj.getEjbBnd(); 147 rootChildren.add(new Node[]{ 148 createEjbBndAttrNode(), 149 createEjbBindingsNode() 150 }); 151 } catch (java.io.IOException ex) { 152 System.out.println("ex="+ex); 153 root.setDisplayName("Invalid EjbBnd"); 154 } finally { 155 setRoot(root); 156 } 157 158 } 159 160 161 public SectionContainer getEjbBindingsContainer() { 162 return bindingsCont; 163 } 164 165 private Node createEjbBndAttrNode() { 166 Node ejbbndNode = new WSEjbBndNode(dObj); 167 addSection(new SectionPanel(this,ejbbndNode,ejbbnd)); 169 return ejbbndNode; 170 } 171 private Node createEjbBindingsNode() { 172 173 EjbBindingsType[] bindings = ejbbnd.getEjbBindings(); 174 Children extch = new Children.Array(); 175 Node[] bindingNodes=null; 176 177 if(bindings!=null && bindings.length>0) { 178 bindingNodes = new Node[bindings.length]; 179 for (int i=0;i<bindings.length;i++) { 180 bindingNodes[i] = new BindingNode(); 181 bindingNodes[i].setDisplayName("Ejb Binding #"+(i+1)); 182 } 183 extch.add(bindingNodes); 184 } 185 186 Node bindingsNode = new SectionContainerNode(extch); 187 bindingsNode.setDisplayName("Ejb Bindings"); 188 189 190 bindingsCont = new SectionContainer(this,bindingsNode,"Ejb Bindings"); 191 bindingsCont.setHeaderActions(new javax.swing.Action []{addBindingAction}); 192 193 194 if(bindings!=null) { 196 SectionPanel[] pan = new SectionPanel[bindings.length]; 197 198 for (int i=0;i<bindings.length;i++) { 199 pan[i] = new SectionPanel(this, bindingNodes[i], bindings[i]); 200 pan[i].setHeaderActions(new javax.swing.Action []{removeBindingAction}); 201 bindingsCont.addSection(pan[i]); 202 } 203 } 204 addSection(bindingsCont); 205 206 return bindingsNode; 207 } 208 209 } 210 211 private class AddBindingAction extends javax.swing.AbstractAction { 212 213 AddBindingAction(String actionName) { 214 super(actionName); 215 } 218 public void actionPerformed(java.awt.event.ActionEvent evt) { 219 220 try{ 221 dObj.setChangedFromUI(true); 222 long time_id=java.lang.System.currentTimeMillis(); 223 WSEjbBnd ejbbnd=dObj.getEjbBnd(); 224 int number=ejbbnd.sizeEjbBindings()+1; 225 226 227 EjbBindingsType ejbBinding=new EjbBindingsType(); 228 ejbBinding.setEnterpriseBean(""); 229 230 ejbBinding.setJndiName("Binding_"+time_id); 231 ejbBinding.setXmiId("Binding_"+time_id); 232 ejbBinding.setHref("EnterpriseBean_"+time_id); 233 234 235 ejbbnd.addEjbBindings(ejbBinding); 237 Node bindingNode = new BindingNode(); 239 view.getRoot().getChildren().add(new Node[]{bindingNode}); 240 bindingNode.setDisplayName(bindingNode.getDisplayName()+number); 241 dObj.setChangedFromUI(true); 242 dObj.modelUpdatedFromUI(); 243 SectionPanel sectionPanel=new SectionPanel(view,bindingNode,ejbBinding); 245 sectionPanel.setHeaderActions(new javax.swing.Action []{removeBindingAction}); 246 247 ((WSEjbBndView)view).getEjbBindingsContainer().addSection(sectionPanel,true); 248 dObj.setChangedFromUI(false); 249 250 } catch (java.io.IOException ex) { 251 } catch (java.lang.IllegalArgumentException ex) { 252 } 253 } 254 } 255 private class RemoveBindingAction extends javax.swing.AbstractAction { 256 257 RemoveBindingAction(String actionName) { 258 super(actionName); 259 } 262 263 public void actionPerformed(java.awt.event.ActionEvent evt) { 264 265 SectionPanel sectionPanel = ((SectionPanel.HeaderButton)evt.getSource()).getSectionPanel(); 266 EjbBindingsType ejbBinding = (EjbBindingsType)sectionPanel.getKey(); 267 269 try { 270 dObj.setChangedFromUI(true); 271 dObj.getEjbBnd().removeEjbBindings(ejbBinding); 272 sectionPanel.getSectionView().removeSection(sectionPanel.getNode()); 273 sectionPanel.getSectionView().updateUI(); 274 sectionPanel.updateUI(); 275 276 dObj.modelUpdatedFromUI(); 277 278 } catch (java.io.IOException ec) { 279 280 } finally { 281 dObj.setChangedFromUI(false); 282 } 283 284 } 285 } 286 287 288 public Error validateView() { 289 351 return null; 352 } 353 354 355 public static class WSEjbBndNode extends org.openide.nodes.AbstractNode { 356 WSEjbBndNode(WSEjbBndDataObject ejbbnd) { 357 super(org.openide.nodes.Children.LEAF); 358 setDisplayName("Binding Deployment Information"); 360 } 362 } 363 364 public static class BindingNode extends org.openide.nodes.AbstractNode { 365 366 public BindingNode() { 367 super(org.openide.nodes.Children.LEAF); 368 setDisplayName("Ejb Binding #"); 369 371 } 372 } 373 374 400 } 401 | Popular Tags |