1 17 package org.eclipse.emf.ecore.provider; 18 19 20 import java.util.Collection ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 24 import org.eclipse.emf.common.notify.AdapterFactory; 25 import org.eclipse.emf.common.notify.Notification; 26 import org.eclipse.emf.common.util.ResourceLocator; 27 import org.eclipse.emf.ecore.EAttribute; 28 import org.eclipse.emf.ecore.EClass; 29 import org.eclipse.emf.ecore.EcorePackage; 30 import org.eclipse.emf.ecore.EDataType; 31 import org.eclipse.emf.ecore.ETypedElement; 32 import org.eclipse.emf.ecore.EReference; 33 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; 34 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; 35 import org.eclipse.emf.edit.provider.IItemLabelProvider; 36 import org.eclipse.emf.edit.provider.IItemPropertySource; 37 import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; 38 import org.eclipse.emf.edit.provider.ITreeItemContentProvider; 39 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; 40 41 42 import org.eclipse.emf.edit.provider.ViewerNotification; 43 44 50 public class ETypedElementItemProvider 51 extends ENamedElementItemProvider 52 implements 53 IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource 54 { 55 61 public ETypedElementItemProvider(AdapterFactory adapterFactory) 62 { 63 super(adapterFactory); 64 } 65 66 72 public List getPropertyDescriptors(Object object) 73 { 74 if (itemPropertyDescriptors == null) 75 { 76 super.getPropertyDescriptors(object); 77 78 addOrderedPropertyDescriptor(object); 79 addUniquePropertyDescriptor(object); 80 addLowerBoundPropertyDescriptor(object); 81 addUpperBoundPropertyDescriptor(object); 82 addManyPropertyDescriptor(object); 83 addRequiredPropertyDescriptor(object); 84 addETypePropertyDescriptor(object); 85 } 86 return itemPropertyDescriptors; 87 } 88 89 95 protected void addOrderedPropertyDescriptor(Object object) 96 { 97 itemPropertyDescriptors.add 98 (createItemPropertyDescriptor 99 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 100 getResourceLocator(), 101 getString("_UI_ETypedElement_ordered_feature"), 102 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_ordered_feature", "_UI_ETypedElement_type"), 103 EcorePackage.eINSTANCE.getETypedElement_Ordered(), 104 true, 105 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, 106 null, 107 null)); 108 } 109 110 116 protected void addUniquePropertyDescriptor(Object object) 117 { 118 itemPropertyDescriptors.add 119 (createItemPropertyDescriptor 120 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 121 getResourceLocator(), 122 getString("_UI_ETypedElement_unique_feature"), 123 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_unique_feature", "_UI_ETypedElement_type"), 124 EcorePackage.eINSTANCE.getETypedElement_Unique(), 125 true, 126 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, 127 null, 128 null)); 129 } 130 131 137 protected void addLowerBoundPropertyDescriptor(Object object) 138 { 139 itemPropertyDescriptors.add 140 (createItemPropertyDescriptor 141 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 142 getResourceLocator(), 143 getString("_UI_ETypedElement_lowerBound_feature"), 144 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_lowerBound_feature", "_UI_ETypedElement_type"), 145 EcorePackage.eINSTANCE.getETypedElement_LowerBound(), 146 true, 147 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, 148 null, 149 null)); 150 } 151 152 158 protected void addUpperBoundPropertyDescriptor(Object object) 159 { 160 itemPropertyDescriptors.add 161 (createItemPropertyDescriptor 162 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 163 getResourceLocator(), 164 getString("_UI_ETypedElement_upperBound_feature"), 165 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_upperBound_feature", "_UI_ETypedElement_type"), 166 EcorePackage.eINSTANCE.getETypedElement_UpperBound(), 167 true, 168 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, 169 null, 170 null)); 171 } 172 173 179 protected void addManyPropertyDescriptor(Object object) 180 { 181 itemPropertyDescriptors.add 182 (createItemPropertyDescriptor 183 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 184 getResourceLocator(), 185 getString("_UI_ETypedElement_many_feature"), 186 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_many_feature", "_UI_ETypedElement_type"), 187 EcorePackage.eINSTANCE.getETypedElement_Many(), 188 false, 189 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, 190 null, 191 null)); 192 } 193 194 200 protected void addRequiredPropertyDescriptor(Object object) 201 { 202 itemPropertyDescriptors.add 203 (createItemPropertyDescriptor 204 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 205 getResourceLocator(), 206 getString("_UI_ETypedElement_required_feature"), 207 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_required_feature", "_UI_ETypedElement_type"), 208 EcorePackage.eINSTANCE.getETypedElement_Required(), 209 false, 210 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, 211 null, 212 null)); 213 } 214 215 221 protected void addETypePropertyDescriptor(Object object) 222 { 223 itemPropertyDescriptors.add 224 (new ItemPropertyDescriptor 225 (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), 226 getString("_UI_ETypedElement_eType_feature"), 227 getString("_UI_PropertyDescriptor_description", "_UI_ETypedElement_eType_feature", "_UI_ETypedElement_type"), 228 EcorePackage.eINSTANCE.getETypedElement_EType(), 229 true) 230 { 231 public Collection getChoiceOfValues(Object object) 232 { 233 Collection result = super.getChoiceOfValues(object); 236 237 for (Iterator i = EcorePackage.eINSTANCE.getEClassifiers().iterator(); i.hasNext(); ) 238 { 239 Object classifier = i.next(); 240 if (!result.contains(classifier)) 241 { 242 result.add(classifier); 243 } 244 } 245 246 if (object instanceof EAttribute) 247 { 248 for (Iterator i = result.iterator(); i.hasNext(); ) 249 { 250 if (i.next() instanceof EClass) 251 { 252 i.remove(); 253 } 254 } 255 } 256 else if (object instanceof EReference) 257 { 258 for (Iterator i = result.iterator(); i.hasNext(); ) 259 { 260 if (i.next() instanceof EDataType) 261 { 262 i.remove(); 263 } 264 } 265 } 266 267 return result; 268 } 269 }); 270 } 271 272 273 279 public String getText(Object object) 280 { 281 String label = ((ETypedElement)object).getName(); 282 return label == null || label.length() == 0 ? 283 getString("_UI_ETypedElement_type") : 284 getString("_UI_ETypedElement_type") + " " + label; 285 } 286 287 294 public void notifyChanged(Notification notification) 295 { 296 updateChildren(notification); 297 298 switch (notification.getFeatureID(ETypedElement.class)) 299 { 300 case EcorePackage.ETYPED_ELEMENT__ORDERED: 301 case EcorePackage.ETYPED_ELEMENT__UNIQUE: 302 case EcorePackage.ETYPED_ELEMENT__LOWER_BOUND: 303 case EcorePackage.ETYPED_ELEMENT__UPPER_BOUND: 304 case EcorePackage.ETYPED_ELEMENT__MANY: 305 case EcorePackage.ETYPED_ELEMENT__REQUIRED: 306 case EcorePackage.ETYPED_ELEMENT__ETYPE: 307 fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); 308 return; 309 } 310 super.notifyChanged(notification); 311 } 312 313 320 protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) 321 { 322 super.collectNewChildDescriptors(newChildDescriptors, object); 323 } 324 325 331 public ResourceLocator getResourceLocator() 332 { 333 return EcoreEditPlugin.INSTANCE; 334 } 335 336 } 337 | Popular Tags |