|
@@ -0,0 +1,299 @@
|
|
|
+/**
|
|
|
+ * <copyright>
|
|
|
+ * </copyright>
|
|
|
+ *
|
|
|
+ * $Id$
|
|
|
+ */
|
|
|
+package org.yakindu.base.types.provider;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collection;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+import org.yakindu.base.types.util.TypesAdapterFactory;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 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 TypesItemProviderAdapterFactory extends TypesAdapterFactory 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 TypesItemProviderAdapterFactory() {
|
|
|
+ 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.yakindu.base.types.Type} instances.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ protected TypeItemProvider typeItemProvider;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This creates an adapter for a {@link org.yakindu.base.types.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.yakindu.base.types.Operation} instances.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ protected OperationItemProvider operationItemProvider;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This creates an adapter for a {@link org.yakindu.base.types.Operation}.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Adapter createOperationAdapter() {
|
|
|
+ if (operationItemProvider == null) {
|
|
|
+ operationItemProvider = new OperationItemProvider(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ return operationItemProvider;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This keeps track of the one adapter used for all {@link org.yakindu.base.types.Property} instances.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ protected PropertyItemProvider propertyItemProvider;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This creates an adapter for a {@link org.yakindu.base.types.Property}.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Adapter createPropertyAdapter() {
|
|
|
+ if (propertyItemProvider == null) {
|
|
|
+ propertyItemProvider = new PropertyItemProvider(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ return propertyItemProvider;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This keeps track of the one adapter used for all {@link org.yakindu.base.types.Parameter} instances.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ protected ParameterItemProvider parameterItemProvider;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This creates an adapter for a {@link org.yakindu.base.types.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.yakindu.base.types.Library} instances.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ protected LibraryItemProvider libraryItemProvider;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This creates an adapter for a {@link org.yakindu.base.types.Library}.
|
|
|
+ * <!-- begin-user-doc -->
|
|
|
+ * <!-- end-user-doc -->
|
|
|
+ * @generated
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Adapter createLibraryAdapter() {
|
|
|
+ if (libraryItemProvider == null) {
|
|
|
+ libraryItemProvider = new LibraryItemProvider(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ return libraryItemProvider;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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 (operationItemProvider != null) operationItemProvider.dispose();
|
|
|
+ if (propertyItemProvider != null) propertyItemProvider.dispose();
|
|
|
+ if (parameterItemProvider != null) parameterItemProvider.dispose();
|
|
|
+ if (libraryItemProvider != null) libraryItemProvider.dispose();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|