edit plugin
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/.classpath b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/.project b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.project
new file mode 100644
index 0000000..5eb3233
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.dltk.javascript.core.edit</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/.settings/org.eclipse.jdt.core.prefs b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..aaa0cd7
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Sat Feb 27 18:01:51 NOVT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/META-INF/MANIFEST.MF b/javascript/tools/org.eclipse.dltk.javascript.core.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..902f111
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.dltk.javascript.core.edit;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.dltk.javascript.internal.model.references.provider.ReferencesEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.dltk.javascript.internal.model.references.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.dltk.javascript.core;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/build.properties b/javascript/tools/org.eclipse.dltk.javascript.core.edit/build.properties
new file mode 100644
index 0000000..fe27f07
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/build.properties
@@ -0,0 +1,20 @@
+# Copyright (c) 2010 xored software, Inc.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# xored software, Inc. - initial API and Implementation (Alex Panchenko)
+#
+# $Id: build.properties,v 1.1 2010/02/27 12:11:32 apanchenk Exp $
+
+bin.includes = .,\
+ icons/,\
+ plugin.xml,\
+ plugin.properties,\
+ META-INF/
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateMethod_parameters_Parameter.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateMethod_parameters_Parameter.gif
new file mode 100644
index 0000000..14d7832
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateMethod_parameters_Parameter.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Method.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Method.gif
new file mode 100644
index 0000000..159895b
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Method.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Property.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Property.gif
new file mode 100644
index 0000000..2c857d7
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/ctool16/CreateType_members_Property.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Method.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Method.gif
new file mode 100644
index 0000000..134551b
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Method.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Parameter.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Parameter.gif
new file mode 100644
index 0000000..a3908bc
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Parameter.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Property.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Property.gif
new file mode 100644
index 0000000..136e3b2
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Property.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Type.gif b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Type.gif
new file mode 100644
index 0000000..b1f8afa
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/icons/full/obj16/Type.gif
Binary files differ
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.properties b/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.properties
new file mode 100644
index 0000000..76a7c07
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.properties
@@ -0,0 +1,44 @@
+# Copyright (c) 2010 xored software, Inc.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# xored software, Inc. - initial API and Implementation (Alex Panchenko)
+#
+# $Id: plugin.properties,v 1.1 2010/02/27 12:11:32 apanchenk Exp $
+
+pluginName = References Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Type_type = Type
+_UI_Member_type = Member
+_UI_Method_type = Method
+_UI_Parameter_type = Parameter
+_UI_Property_type = Property
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Type_name_feature = Name
+_UI_Type_members_feature = Members
+_UI_Member_name_feature = Name
+_UI_Member_type_feature = Type
+_UI_Member_description_feature = Description
+_UI_Method_parameters_feature = Parameters
+_UI_Parameter_name_feature = Name
+_UI_Parameter_type_feature = Type
+_UI_Parameter_optional_feature = Optional
+_UI_Unknown_feature = Unspecified
+
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.xml b/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.xml
new file mode 100644
index 0000000..5600ec8
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2010 xored software, Inc.
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+ xored software, Inc. - initial API and Implementation (Alex Panchenko)
+
+ $Id: plugin.xml,v 1.1 2010/02/27 12:11:32 apanchenk Exp $
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <factory
+ uri="http://www.eclipse.org/dltk/javascript/references.ecore"
+ class="org.eclipse.dltk.javascript.internal.model.references.provider.ReferenceModelItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+</plugin>
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MemberItemProvider.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MemberItemProvider.java
new file mode 100644
index 0000000..cb53fd6
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MemberItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: MemberItemProvider.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.dltk.javascript.internal.model.references.Member;
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Member} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MemberItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MemberItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addTypePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Member_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Member_name_feature", "_UI_Member_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.MEMBER__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Member_type_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Member_type_feature", "_UI_Member_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.MEMBER__TYPE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Member_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Member_description_feature", "_UI_Member_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.MEMBER__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Member)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Member_type") : //$NON-NLS-1$
+ getString("_UI_Member_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Member.class)) {
+ case ReferenceModelPackage.MEMBER__NAME:
+ case ReferenceModelPackage.MEMBER__DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ReferencesEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MethodItemProvider.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MethodItemProvider.java
new file mode 100644
index 0000000..d999cb5
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/MethodItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: MethodItemProvider.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.dltk.javascript.internal.model.references.Method;
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelFactory;
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Method} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MethodItemProvider
+ extends MemberItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MethodItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ReferenceModelPackage.Literals.METHOD__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Method.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Method")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Method)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Method_type") : //$NON-NLS-1$
+ label + "()"; //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Method.class)) {
+ case ReferenceModelPackage.METHOD__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ReferenceModelPackage.Literals.METHOD__PARAMETERS,
+ ReferenceModelFactory.eINSTANCE.createParameter()));
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ParameterItemProvider.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ParameterItemProvider.java
new file mode 100644
index 0000000..6d580ae
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ParameterItemProvider.java
@@ -0,0 +1,215 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: ParameterItemProvider.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.dltk.javascript.internal.model.references.Parameter;
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Parameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ParameterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addTypePropertyDescriptor(object);
+ addOptionalPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Parameter_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Parameter_name_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.PARAMETER__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Parameter_type_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Parameter_type_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.PARAMETER__TYPE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Optional feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOptionalPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Parameter_optional_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Parameter_optional_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.PARAMETER__OPTIONAL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Parameter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Parameter")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Parameter)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Parameter_type") : //$NON-NLS-1$
+ getString("_UI_Parameter_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Parameter.class)) {
+ case ReferenceModelPackage.PARAMETER__NAME:
+ case ReferenceModelPackage.PARAMETER__OPTIONAL:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ReferencesEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/PropertyItemProvider.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/PropertyItemProvider.java
new file mode 100644
index 0000000..3d94512
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/PropertyItemProvider.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: PropertyItemProvider.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.dltk.javascript.internal.model.references.Property;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Property} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyItemProvider
+ extends MemberItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Property.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Property")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Property)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Property_type") : //$NON-NLS-1$
+ label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferenceModelItemProviderAdapterFactory.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferenceModelItemProviderAdapterFactory.java
new file mode 100644
index 0000000..2cd5bd3
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferenceModelItemProviderAdapterFactory.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: ReferenceModelItemProviderAdapterFactory.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.dltk.javascript.internal.model.references.util.ReferenceModelAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ReferenceModelItemProviderAdapterFactory extends ReferenceModelAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReferenceModelItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.dltk.javascript.internal.model.references.Type} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeItemProvider typeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Type}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTypeAdapter() {
+ if (typeItemProvider == null) {
+ typeItemProvider = new TypeItemProvider(this);
+ }
+
+ return typeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.dltk.javascript.internal.model.references.Method} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MethodItemProvider methodItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Method}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createMethodAdapter() {
+ if (methodItemProvider == null) {
+ methodItemProvider = new MethodItemProvider(this);
+ }
+
+ return methodItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.dltk.javascript.internal.model.references.Parameter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ParameterItemProvider parameterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Parameter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createParameterAdapter() {
+ if (parameterItemProvider == null) {
+ parameterItemProvider = new ParameterItemProvider(this);
+ }
+
+ return parameterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.dltk.javascript.internal.model.references.Property} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyItemProvider propertyItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Property}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyAdapter() {
+ if (propertyItemProvider == null) {
+ propertyItemProvider = new PropertyItemProvider(this);
+ }
+
+ return propertyItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (typeItemProvider != null) typeItemProvider.dispose();
+ if (methodItemProvider != null) methodItemProvider.dispose();
+ if (parameterItemProvider != null) parameterItemProvider.dispose();
+ if (propertyItemProvider != null) propertyItemProvider.dispose();
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferencesEditPlugin.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferencesEditPlugin.java
new file mode 100644
index 0000000..49b2b3d
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/ReferencesEditPlugin.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: ReferencesEditPlugin.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the References edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ReferencesEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ReferencesEditPlugin INSTANCE = new ReferencesEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReferencesEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/TypeItemProvider.java b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/TypeItemProvider.java
new file mode 100644
index 0000000..174baaf
--- /dev/null
+++ b/javascript/tools/org.eclipse.dltk.javascript.core.edit/src/org/eclipse/dltk/javascript/internal/model/references/provider/TypeItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2010 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *
+ * $Id: TypeItemProvider.java,v 1.1 2010/02/27 12:11:31 apanchenk Exp $
+ */
+package org.eclipse.dltk.javascript.internal.model.references.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelFactory;
+import org.eclipse.dltk.javascript.internal.model.references.ReferenceModelPackage;
+import org.eclipse.dltk.javascript.internal.model.references.Type;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.dltk.javascript.internal.model.references.Type} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Type_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Type_name_feature", "_UI_Type_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ReferenceModelPackage.Literals.TYPE__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ReferenceModelPackage.Literals.TYPE__MEMBERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Type.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Type")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Type)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Type_type") : //$NON-NLS-1$
+ getString("_UI_Type_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Type.class)) {
+ case ReferenceModelPackage.TYPE__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ReferenceModelPackage.TYPE__MEMBERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ReferenceModelPackage.Literals.TYPE__MEMBERS,
+ ReferenceModelFactory.eINSTANCE.createMethod()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ReferenceModelPackage.Literals.TYPE__MEMBERS,
+ ReferenceModelFactory.eINSTANCE.createProperty()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ReferencesEditPlugin.INSTANCE;
+ }
+
+}