1 19 20 package org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.entity; 21 22 import java.awt.Image ; 23 import java.beans.PropertyChangeEvent ; 24 import java.beans.PropertyChangeListener ; 25 import org.openide.nodes.AbstractNode; 26 import org.openide.nodes.Children; 27 import javax.swing.Action ; 28 import org.openide.actions.OpenAction; 29 import org.openide.cookies.OpenCookie; 30 import org.openide.util.Utilities; 31 import org.openide.util.actions.SystemAction; 32 import org.openide.util.WeakListeners; 33 import java.io.IOException ; 34 import org.netbeans.modules.j2ee.dd.api.ejb.CmpField; 35 import org.netbeans.modules.j2ee.ejbcore.api.methodcontroller.EntityMethodController; 36 import org.netbeans.modules.j2ee.common.DDEditorNavigator; 37 import org.openide.ErrorManager; 38 import org.openide.filesystems.FileObject; 39 import org.openide.loaders.DataObject; 40 import org.openide.loaders.DataObjectNotFoundException; 41 import org.openide.util.lookup.AbstractLookup; 42 import org.openide.util.lookup.InstanceContent; 43 44 45 public class CMPFieldNode extends AbstractNode implements PropertyChangeListener , OpenCookie { 46 private CmpField field; 47 private EntityMethodController controller; 48 private static final String CMP_FIELD_ICON = "org/netbeans/modules/j2ee/ejbcore/resources/CMPFieldIcon.gif"; private FileObject ddFile; 50 51 public CMPFieldNode(CmpField field, EntityMethodController controller, FileObject ddFile) { 52 this(field, controller, ddFile, new InstanceContent()); 53 } 54 55 private CMPFieldNode(CmpField field, EntityMethodController controller, FileObject ddFile, InstanceContent instanceContent) { 56 super(Children.LEAF, new AbstractLookup(instanceContent)); 57 instanceContent.add(this); 59 this.field = field; 70 this.ddFile = ddFile; 71 this.controller = controller; 72 field.addPropertyChangeListener(WeakListeners.propertyChange(this, field)); 73 } 74 75 public String getDisplayName(){ 76 return field.getFieldName(); 77 } 78 79 public Image getIcon(int type) { 80 return Utilities.loadImage(CMP_FIELD_ICON); 81 } 82 83 public boolean canDestroy(){ 84 return true; 85 } 86 87 public void destroy() throws IOException { 88 controller.deleteField(field, ddFile); 89 super.destroy(); 90 } 91 92 public void propertyChange(PropertyChangeEvent evt) { 93 fireDisplayNameChange(null,null); 94 } 95 96 public Action [] getActions(boolean context) { 97 return new Action [] { 98 SystemAction.get(OpenAction.class), 99 null, 100 }; 103 } 104 105 public Action getPreferredAction() { 106 return SystemAction.get(OpenAction.class); 107 } 108 109 public void open() { 111 try { 112 DataObject ddFileDO = DataObject.find(ddFile); 113 Object cookie = ddFileDO.getCookie(DDEditorNavigator.class); 114 if (cookie != null) { 115 ((DDEditorNavigator) cookie).showElement(field); 116 } 117 } catch (DataObjectNotFoundException donf) { 118 ErrorManager.getDefault().notify(donf); 119 } 120 } 121 122 } 123 | Popular Tags |