1 19 20 package org.netbeans.modules.xml.schema.ui.nodes.schema; 21 22 import org.netbeans.modules.xml.schema.model.ElementReference; 23 import org.netbeans.modules.xml.schema.model.GlobalElement; 24 import org.netbeans.modules.xml.schema.model.LocalElement; 25 import org.netbeans.modules.xml.schema.model.SchemaComponentReference; 26 import org.netbeans.modules.xml.schema.ui.basic.editors.MaxOccursEditor; 27 import org.netbeans.modules.xml.schema.ui.nodes.*; 28 import org.netbeans.modules.xml.schema.ui.nodes.schema.properties.BaseSchemaProperty; 29 import org.netbeans.modules.xml.schema.ui.nodes.schema.properties.GlobalReferenceProperty; 30 import org.netbeans.modules.xml.schema.ui.nodes.schema.properties.NonNegativeIntegerProperty; 31 import org.openide.nodes.Children; 32 import org.openide.nodes.Node; 33 import org.openide.nodes.Node.Property; 34 import org.openide.nodes.Sheet; 35 import org.openide.util.NbBundle; 36 37 42 public class ElementReferenceNode extends SchemaComponentNode<ElementReference> 43 { 44 private static final String NAME = "element"; 45 49 public ElementReferenceNode(SchemaUIContext context, 50 SchemaComponentReference<ElementReference> reference, 51 Children children) { 52 super(context,reference,children); 53 54 setIconBaseWithExtension( 55 "org/netbeans/modules/xml/schema/ui/nodes/resources/element_reference.png"); 56 } 57 58 59 @Override 60 protected GlobalElement getSuperDefinition() 61 { 62 ElementReference sc = getReference().get(); 63 GlobalElement gt = null; 64 if(sc.getRef()!=null) 65 gt = sc.getRef().get(); 66 return gt; 67 } 68 69 73 @Override 74 public String getTypeDisplayName() { 75 return NbBundle.getMessage(LocalElementNode.class, 76 "LBL_ElementReferenceNode_TypeDisplayName"); } 78 79 @Override 80 protected Sheet createSheet() { 81 Sheet sheet = super.createSheet(); 82 Sheet.Set set = sheet.get(Sheet.PROPERTIES); 83 try { 84 87 if (getReference().get().allowsFullMultiplicity()) { 88 89 Property maxOccursProp = new BaseSchemaProperty( 91 getReference().get(), String .class, 93 ElementReference.MAX_OCCURS_PROPERTY, 94 NbBundle.getMessage(ElementReferenceNode.class,"PROP_MaxOccurs_DisplayName"), NbBundle.getMessage(ElementReferenceNode.class,"PROP_MaxOccurs_ShortDescription"), MaxOccursEditor.class 97 ); 98 set.put(new SchemaModelFlushWrapper(getReference().get(), maxOccursProp)); 99 100 } 101 102 108 Property minOccursProp = new NonNegativeIntegerProperty( 110 getReference().get(), LocalElement.MIN_OCCURS_PROPERTY, 112 NbBundle.getMessage(ElementReferenceNode.class,"PROP_MinOccurs_DisplayName"), NbBundle.getMessage(ElementReferenceNode.class,"PROP_MinOccurs_ShortDescription") ); 115 set.put(new SchemaModelFlushWrapper(getReference().get(), minOccursProp)); 116 117 Node.Property refProp = new GlobalReferenceProperty<GlobalElement>( 119 getReference().get(), 120 LocalElement.REF_PROPERTY, 121 NbBundle.getMessage(ElementReferenceNode.class, 122 "PROP_Reference_DisplayName"), NbBundle.getMessage(ElementReferenceNode.class, 124 "HINT_Element_Reference"), getTypeDisplayName(), NbBundle.getMessage(ElementReferenceNode.class, 127 "LBL_GlobalElementNode_TypeDisplayName"), GlobalElement.class 129 ); 130 set.put(new SchemaModelFlushWrapper(getReference().get(), refProp)); 131 132 set.remove(LocalElement.NAME_PROPERTY); 134 } catch (NoSuchMethodException nsme) { 135 assert false : "properties should be defined"; 136 } 137 138 return sheet; 139 } 140 141 145 @Override 146 public String getHtmlDisplayName() 147 { 148 ElementReference element=getReference().get(); 149 150 String max=element.getMaxOccursEffective(); 151 if (max.equals("unbounded")) 152 max="*"; 153 154 String decoration="["+element.getMinOccursEffective()+".."+max+"]"+" (->)"; 155 String name = getDefaultDisplayName()+" <font color='#999999'>"+decoration+"</font>"; 156 return applyHighlights(name); 157 } 158 159 163 protected void updateDisplayName() 164 { 165 GlobalElement ref = getSuperDefinition(); 166 String name = ref==null?null:ref.getName(); 167 if(name==null||name.equals("")) 168 name = NAME; 169 setDisplayName(name); 170 } 171 172 } 173 | Popular Tags |