diff --git a/edu.kit.ipd.descartes.core.edit/.classpath b/edu.kit.ipd.descartes.core.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.core.edit/.project b/edu.kit.ipd.descartes.core.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..cb428e68d0f990be8512587ff9a7daa27f748853 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.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/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..afdeffb40dee62fff0d6130f2f14a22c98889641 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF @@ -0,0 +1,17 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.core.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.core.provider.CoreEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.core.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.core;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.core.edit/build.properties b/edu.kit.ipd.descartes.core.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..528395856233aa160a073146fc888e8ee3673020 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/build.properties @@ -0,0 +1,9 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.core.edit/plugin.properties b/edu.kit.ipd.descartes.core.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..76afd017a203b928c822e62f7d70a962c8b162a4 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/plugin.properties @@ -0,0 +1,25 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Core 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_NamedElement_type = Named Element +_UI_Entity_type = Entity +_UI_Connector_type = Connector +_UI_AdaptableEntity_type = Adaptable Entity +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_NamedElement_name_feature = Name +_UI_Unknown_feature = Unspecified + diff --git a/edu.kit.ipd.descartes.core.edit/plugin.xml b/edu.kit.ipd.descartes.core.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..a76a8758c498c419d93c0040baa34602c2d31a9a --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/core/0.1" + class="edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.core.edit/pom.xml b/edu.kit.ipd.descartes.core.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..01346e66878ec872f44f9410e8fb264f4236eba8 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.core.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b9d4c985f9345fd209ac83a74c14812ed9e6ece7 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java @@ -0,0 +1,100 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + + +import edu.kit.ipd.descartes.core.AdaptableEntity; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.core.AdaptableEntity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptableEntityItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptableEntityItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AdaptableEntity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptableEntity_type") : + getString("_UI_AdaptableEntity_type") + " " + 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/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9648a80f36722c911dedd48ed352c805d16cdc18 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java @@ -0,0 +1,100 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + + +import edu.kit.ipd.descartes.core.Connector; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.core.Connector} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ConnectorItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ConnectorItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Connector)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Connector_type") : + getString("_UI_Connector_type") + " " + 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/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..532a9845e9df8078bbc23cd5d6cc123c922bc4fc --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java @@ -0,0 +1,93 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Core edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class CoreEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final CoreEditPlugin INSTANCE = new CoreEditPlugin(); + + /** + * 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 CoreEditPlugin() { + super + (new ResourceLocator [] { + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f5ff6fc754f170da55941be616771ae54a27924a --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java @@ -0,0 +1,176 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + +import edu.kit.ipd.descartes.core.util.CoreAdapterFactory; + +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; + +/** + * 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 CoreItemProviderAdapterFactory extends CoreAdapterFactory 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 CoreItemProviderAdapterFactory() { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + } + + /** + * 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() { + } + +} diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d24ad4378699dbff5a2df66b2eec77e26e250cce --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java @@ -0,0 +1,148 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + + +import edu.kit.ipd.descartes.core.CorePackage; +import edu.kit.ipd.descartes.core.Entity; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProvider; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.core.Entity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EntityItemProvider + extends IdentifierItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EntityItemProvider(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_NamedElement_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"), + CorePackage.Literals.NAMED_ELEMENT__NAME, + 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 = ((Entity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Entity_type") : + getString("_UI_Entity_type") + " " + 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); + + switch (notification.getFeatureID(Entity.class)) { + case CorePackage.ENTITY__NAME: + 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 CoreEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2f224858e65f79b40d932f9503d4307ed2df94d3 --- /dev/null +++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java @@ -0,0 +1,147 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.core.provider; + + +import edu.kit.ipd.descartes.core.CorePackage; +import edu.kit.ipd.descartes.core.NamedElement; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.core.NamedElement} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class NamedElementItemProvider + 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 NamedElementItemProvider(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_NamedElement_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"), + CorePackage.Literals.NAMED_ELEMENT__NAME, + 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 = ((NamedElement)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_NamedElement_type") : + getString("_UI_NamedElement_type") + " " + 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); + + switch (notification.getFeatureID(NamedElement.class)) { + case CorePackage.NAMED_ELEMENT__NAME: + 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 CoreEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.identifier.edit/.classpath b/edu.kit.ipd.descartes.identifier.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.identifier.edit/.project b/edu.kit.ipd.descartes.identifier.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..4643ed57e822b2931bfa8a8d3a36a8bbc9cf4d61 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.identifier.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/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..9fce12207332a334f66b4f79da77702eded40fdb --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.identifier.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.identifier.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.identifier.edit/build.properties b/edu.kit.ipd.descartes.identifier.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..528395856233aa160a073146fc888e8ee3673020 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/build.properties @@ -0,0 +1,9 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.identifier.edit/plugin.properties b/edu.kit.ipd.descartes.identifier.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..a6e8947ab73ad2b4984884e50020fb460509cdac --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/plugin.properties @@ -0,0 +1,22 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Identifier 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_Identifier_type = Identifier +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_Identifier_id_feature = Id +_UI_Unknown_feature = Unspecified + diff --git a/edu.kit.ipd.descartes.identifier.edit/plugin.xml b/edu.kit.ipd.descartes.identifier.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..c616dec0a18064ec22bf9e79f80e48ee6ecc8a45 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/identifier/0.1" + class="edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.identifier.edit/pom.xml b/edu.kit.ipd.descartes.identifier.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..1df918fc612bfefc9703c3952df483f7fd272a49 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.identifier.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..cc1eb63cffba5acd4bb9fc998efcd4d6da9a6495 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java @@ -0,0 +1,97 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.identifier.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Identifier edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class IdentifierEditPlugin extends EMFPlugin { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT"; + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final IdentifierEditPlugin INSTANCE = new IdentifierEditPlugin(); + + /** + * 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 IdentifierEditPlugin() { + 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/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3d2c584b84c24f8102a2b3daf6c2ed59eb41b59f --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java @@ -0,0 +1,154 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.identifier.provider; + + +import edu.kit.ipd.descartes.identifier.Identifier; +import edu.kit.ipd.descartes.identifier.IdentifierPackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.identifier.Identifier} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IdentifierItemProvider + extends ItemProviderAdapter + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT"; + + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IdentifierItemProvider(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); + + addIdPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Id feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addIdPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Identifier_id_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Identifier_id_feature", "_UI_Identifier_type"), + IdentifierPackage.Literals.IDENTIFIER__ID, + 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 = ((Identifier)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_Identifier_type") : + getString("_UI_Identifier_type") + " " + 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); + + switch (notification.getFeatureID(Identifier.class)) { + case IdentifierPackage.IDENTIFIER__ID: + 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 IdentifierEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..bc9a8f17ae7e6aa4515726c79fc188fd04af5b50 --- /dev/null +++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java @@ -0,0 +1,183 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.identifier.provider; + +import edu.kit.ipd.descartes.identifier.util.IdentifierAdapterFactory; + +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; + +/** + * 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 IdentifierItemProviderAdapterFactory extends IdentifierAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT"; + + /** + * 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 IdentifierItemProviderAdapterFactory() { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + } + + /** + * 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() { + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath b/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..fb24f81843ea9fea4bd88210fb59799dc55d2a59 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="src-man"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/.project b/edu.kit.ipd.descartes.mm.adaptation.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..059cadd0b9abb53e295ebec2e7b2652abc6ff9e3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.adaptation.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/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..81f5ad0095d0da2c668021cd1df145cfa0c025d7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptation.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.adaptation.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.adaptation;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.adaptationpoints;visibility:=reexport, + edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.perfdatarepo;visibility:=reexport, + edu.kit.ipd.descartes.perfdatarepo.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties b/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..4c518d702bb857cf6dcd7a7d8e70508f18776858 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties @@ -0,0 +1,11 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/,\ + src-man/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif new file mode 100644 index 0000000000000000000000000000000000000000..e10818d6968ea640b9caea9abc8da8fca1a593bd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b07f693b58dd6007ddbb1f3328b72e048869213 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif new file mode 100644 index 0000000000000000000000000000000000000000..df228332e97da0002a4d37014bffad23c9bd1140 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..a17c76f85589d5314721cf04e34a791ecafa9b68 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7c5af79864fea79bd032d317f21d20186d9c0c8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..5643b74f35289f8ebdd6dc51ba377623fb10581f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b07f693b58dd6007ddbb1f3328b72e048869213 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb0eee99169cd347715dca1f30378d424a9d0ef7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif new file mode 100644 index 0000000000000000000000000000000000000000..17f115f632be56636be274451f037d05afdcf170 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..05dffc0a5ca466028783f0ab8ede814763b8e6fe Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb0eee99169cd347715dca1f30378d424a9d0ef7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a6adcc9632f94e3f7f6f9c3df1711833b187d1e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..e206651033fb95bef54b4531656c6e8bbce64d46 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a59694a811e0f7bd281b90d08436d79a03d3b55 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif new file mode 100644 index 0000000000000000000000000000000000000000..931730f4ef93e1cb04ad77c9a368044a7c7b0161 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d7c59b0d4aa9464846f6db28d495511066a9e67 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..af3a295d908347198e73b116d7fab1e5e57d2c04 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..f14828dda92c203483cc21aece8c47152792bde1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b5901d2142d6aaac4868bc7a97b8efe5e730a43 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif new file mode 100644 index 0000000000000000000000000000000000000000..d748696ff3a4d760ebf4dd9d0c6af30c9a96e944 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif new file mode 100644 index 0000000000000000000000000000000000000000..d748696ff3a4d760ebf4dd9d0c6af30c9a96e944 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..6083e651fc97b8be3e843f837bd07f52a6251b84 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..6083e651fc97b8be3e843f837bd07f52a6251b84 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif new file mode 100644 index 0000000000000000000000000000000000000000..051fac7db4dc28ebcb9f8d75ba28af74268860c6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9e5fa823dae523cbf28d74b8e4f586df9098150 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif new file mode 100644 index 0000000000000000000000000000000000000000..064dd753f37e2cb898d8ce99bbaf2b968d7d6529 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..1571ae8334e424a299d1aeef74e6747bac5aab0f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif new file mode 100644 index 0000000000000000000000000000000000000000..788a4f2ce6eb526e832bb0b2b074a27683352908 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif new file mode 100644 index 0000000000000000000000000000000000000000..de9650f4d1f0f8d387b79a61a0ec2457bd30562e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..98225e0fd06f77676be846bb565f58034d0833ef Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif new file mode 100644 index 0000000000000000000000000000000000000000..7938130156d8e423a667cdcb3270b4ab76550849 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..99ae7757087e188240ff3538daedfcda470fe09c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7e0ea73df17734ebd060b0c1f3638ea7af0126e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..997e434522761bb0741f11f33b621c2db8f51096 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f8c2018a1c8f73a9321b5aab5c542bdb17ca0b2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9e96e9954d6d4bf70cf208a74232237b172f7d6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..870d2b208f05123cec95dcfa3e92e1f61f09dcfb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d5fa98a50e056bfd2e555f6deffb89791f2bd5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif new file mode 100644 index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif new file mode 100644 index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif new file mode 100644 index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a5c70cbd74c87cb3b1df383e0c242ede4660c3b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4b530eca173b1070d5d876a0154bc370d8896b4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif new file mode 100644 index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif new file mode 100644 index 0000000000000000000000000000000000000000..2124f3e3ab2646fd6aec35b94fe003b565ba4c2c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3908bcf7b4ec0b29040bb1ef944c4d5a93fbb32 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6925602975de13459862ee32e1b0d97549bf67 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4fb30e96873d2484faec9d508dcbdd69e73d82e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif new file mode 100644 index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..57fc9e13e5f8fda7ef4c350146669af763be56c2 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties @@ -0,0 +1,166 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Adaptation 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_Strategy_type = Strategy +_UI_WeightingFunction_type = Weighting Function +_UI_WeightedTactic_type = Weighted Tactic +_UI_Objective_type = Objective +_UI_Tactic_type = Tactic +_UI_AbstractControlFlowElement_type = Abstract Control Flow Element +_UI_Start_type = Start +_UI_Stop_type = Stop +_UI_Loop_type = Loop +_UI_Branch_type = Branch +_UI_ActionReference_type = Action Reference +_UI_AdaptationPlan_type = Plan +_UI_Event_type = Event +_UI_Action_type = Action +_UI_Repository_type = Repository +_UI_OverallGoal_type = Overall Goal +_UI_Parameter_type = Parameter +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_Strategy_objective_feature = Objective +_UI_Strategy_triggeringEvents_feature = Triggering Events +_UI_Strategy_tactics_feature = Tactics +_UI_Strategy_weightingFunction_feature = Weighting Function +_UI_WeightingFunction_function_feature = Function +_UI_WeightedTactic_uses_feature = Uses +_UI_WeightedTactic_weight_feature = Weight +_UI_Objective_specification_feature = Specification +_UI_Tactic_implementedPlan_feature = Implemented Plan +_UI_Tactic_inputParams_feature = Input Params +_UI_Tactic_outputParam_feature = Output Param +_UI_AbstractControlFlowElement_predecessor_feature = Predecessor +_UI_AbstractControlFlowElement_successor_feature = Successor +_UI_Loop_counter_feature = Counter +_UI_Loop_body_feature = Body +_UI_Branch_condition_feature = Condition +_UI_Branch_branches_feature = Branches +_UI_ActionReference_refersTo_feature = Refers To +_UI_AdaptationPlan_steps_feature = Steps +_UI_Event_triggers_feature = Triggers +_UI_Action_outputParam_feature = Output Param +_UI_Action_inputParams_feature = Input Params +_UI_Action_referredAdaptationPoint_feature = Referred Adaptation Point +_UI_Repository_tactics_feature = Tactics +_UI_Repository_actions_feature = Actions +_UI_Repository_strategies_feature = Strategies +_UI_Repository_parameters_feature = Parameters +_UI_OverallGoal_hasObjective_feature = Has Objective +_UI_OverallGoal_description_feature = Description +_UI_Parameter_name_feature = Name +_UI_Parameter_type_feature = Type +_UI_Unknown_feature = Unspecified + +_UI_StaRepository_type = Sta Repository +_UI_StaRepository_tactics_feature = Tactics +_UI_StaRepository_actions_feature = Actions +_UI_StaRepository_strategies_feature = Strategies +_UI_StaRepository_parameters_feature = Parameters +_UI_WeightedTactic_currentWeight_feature = Current Weight +_UI_WeightedTactic_defaultWeight_feature = Default Weight +_UI_WeightedTactic_usedTactic_feature = Used Tactic +_UI_Action_operationType_feature = Operation Type +_UI_StartAction_type = Start Action +_UI_StopAction_type = Stop Action +_UI_LoopAction_type = Loop Action +_UI_BranchAction_type = Branch Action +_UI_LoopAction_counter_feature = Counter +_UI_LoopAction_body_feature = Body +_UI_BranchAction_condition_feature = Condition +_UI_BranchAction_branches_feature = Branches +_UI_WeightedMetric_type = Weighted Metric +_UI_WeightingFunction_weightedMetrics_feature = Weighted Metrics +_UI_WeightingFunction_calculatedImpact_feature = Calculated Impact +_UI_WeightedMetric_value_feature = Value +_UI_WeightedMetric_weightForMetric_feature = Weight For Metric +_UI_WeightedTactic_lastImpact_feature = Last Impact +_UI_StaRepository_goal_feature = Goal +_UI_OverallGoal_objectives_feature = Objectives +_UI_WeightedMetric_weight_feature = Weight +_UI_WeightedMetric_metricType_feature = Metric Type +_UI_AdaptationProcess_type = Process +_UI_AdaptationProcess_tactics_feature = Tactics +_UI_AdaptationProcess_actions_feature = Actions +_UI_AdaptationProcess_strategies_feature = Strategies +_UI_AdaptationProcess_parameters_feature = Parameters +_UI_AdaptationProcess_goal_feature = Goal +_UI_BranchAction_trueBranch_feature = True Branch +_UI_BranchAction_falseBranch_feature = False Branch +_UI_BranchAction_conditionTrueBranch_feature = Condition True Branch +_UI_BranchAction_conditionFalseBranch_feature = Condition False Branch +_UI_BranchAction_context_feature = Context +_UI_AdaptationOperation_NOT_SET_literal = NOT_SET +_UI_AdaptationOperation_SCALE_UP_literal = SCALE_UP +_UI_AdaptationOperation_SCALE_DOWN_literal = SCALE_DOWN +_UI_AdaptationOperation_SCALE_OUT_literal = SCALE_OUT +_UI_AdaptationOperation_SCALE_IN_literal = SCALE_IN +_UI_AdaptationOperation_MIGRATE_literal = MIGRATE +_UI_AdaptationOperation_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST +_UI_AdaptationOperation_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST +_UI_AdaptationOperation_RANDOM_literal = RANDOM +_UI_Action_adaptationActionScope_feature = Adaptation Action Scope +_UI_Action_adaptationActionDirection_feature = Adaptation Action Direction +_UI_AdaptationScope_ALL_literal = ALL +_UI_AdaptationScope_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST +_UI_AdaptationScope_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST +_UI_AdaptationScope_RANDOM_literal = RANDOM +_UI_AdaptationDirection_NOT_SET_literal = NOT_SET +_UI_AdaptationDirection_INCREASE_literal = INCREASE +_UI_AdaptationDirection_DECREASE_literal = DECREASE +_UI_AdaptationDirection_MIGRATE_literal = MIGRATE +_UI_AdaptationDirection_ANY_literal = ANY +_UI_Action_adaptationOperation_feature = Adaptation Operation +_UI_AdaptationOperation_ALL_literal = ALL +_UI_AdaptationOperation_type = Operation +_UI_AdaptationOperation_adaptationActionScope_feature = Adaptation Action Scope +_UI_AdaptationOperation_adaptationActionDirection_feature = Adaptation Action Direction +_UI_Parameter_NOT_SET_literal = NOT_SET +_UI_Parameter_SCALE_UP_literal = SCALE_UP +_UI_Parameter_SCALE_DOWN_literal = SCALE_DOWN +_UI_Parameter_SCALE_OUT_literal = SCALE_OUT +_UI_Parameter_SCALE_IN_literal = SCALE_IN +_UI_Parameter_MIGRATE_literal = MIGRATE +_UI_Parameter_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST +_UI_Parameter_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST +_UI_Parameter_RANDOM_literal = RANDOM +_UI_AdaptationActionOperation_type = Action Operation +_UI_Action_adaptationActionOperation_feature = Adaptation Action Operation +_UI_AdaptationActionOperation_adaptationOperationScope_feature = Adaptation Operation Scope +_UI_AdaptationActionOperation_adaptationOperationDirection_feature = Adaptation Operation Direction +_UI_AdaptationScope_NOT_SET_literal = NOT_SET +_UI_AdaptationScope_THIS_literal = THIS +_UI_WeightedTactic_parentStrategy_feature = Parent Strategy +_UI_Specification_type = Specification +_UI_Specification_metricType_feature = Metric Type +_UI_Specification_value_feature = Value +_UI_Specification_operator_feature = Operator +_UI_Specification_relationalOperator_feature = Relational Operator +_UI_RelationalOperator_EQUAL_literal = EQUAL +_UI_RelationalOperator_NOT_EQUAL_literal = NOT_EQUAL +_UI_RelationalOperator_GREATER_literal = GREATER +_UI_RelationalOperator_GREATER_EQUAL_literal = GREATER_EQUAL +_UI_RelationalOperator_LESS_literal = LESS +_UI_RelationalOperator_LESS_EQUAL_literal = LESS_EQUAL +_UI_Objective_specifications_feature = Specifications +_UI_WeightingFunction_WeightingFunction_feature = Weighting Function +_UI_WeightingFunction_WeightingFunctionImplementation_feature = Weighting Function Implementation +_UI_WeightingFunction_weightingFunctionImplementation_feature = Weighting Function Implementation +_UI_Parameter_value_feature = Value +_UI_ImportDeclaration_type = Import Declaration +_UI_AdaptationProcess_importDeclaration_feature = Import Declaration +_UI_ImportDeclaration_importURI_feature = Import URI diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..1d5cf4e1323152dcd67f932a308cc171350ea432 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/adaptation/0.1" + class="edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml b/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a2471e495233b55b936794bace41c60f16e4f14 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.adaptation.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..f2516f3b835622e87d630238e4efe336e56b0b9e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java @@ -0,0 +1,26 @@ +package edu.kit.ipd.descartes.mm.adaptation.provider; + +import org.eclipse.emf.common.notify.AdapterFactory; + +import edu.kit.ipd.descartes.mm.adaptation.Action; +import edu.kit.ipd.descartes.mm.adaptation.ActionReference; + +public class ActionReferenceItemProviderExtension extends ActionReferenceItemProvider { + + public ActionReferenceItemProviderExtension(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + @Override + public String getText(Object object) { + Action ref = ((ActionReference)object).getRefersTo(); + + String label = ref == null ? + null : + ref.getName(); + + return label == null || label.length() == 0 ? + getString("_UI_ActionReference_type") : + getString("_UI_ActionReference_type") + " " + label; + } +} \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..4dc942e09d21075c29b849a5956a9d3d2ef6672e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java @@ -0,0 +1,32 @@ +package edu.kit.ipd.descartes.mm.adaptation.provider; + +import org.eclipse.emf.common.notify.AdapterFactory; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationDirection; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationScope; + +public class AdaptationActionOperationItemProviderExtension extends AdaptationActionOperationItemProvider { + + public AdaptationActionOperationItemProviderExtension(AdapterFactory adapterFactory) { + super(adapterFactory); + // TODO Auto-generated constructor stub + } + + @Override + public String getText(Object object) { + AdaptationScope scopeLabelValue = ((AdaptationActionOperation)object).getAdaptationOperationScope(); + AdaptationDirection directionLabelValue = ((AdaptationActionOperation)object).getAdaptationOperationDirection(); + + String label; + if (scopeLabelValue == null || directionLabelValue == null) + label = null; + else + label = directionLabelValue.toString() + ", " + scopeLabelValue.toString(); + + return label == null || label.length() == 0 ? + getString("_UI_AdaptationActionOperation_type") : + getString("_UI_AdaptationActionOperation_type") + " " + label; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..63ac3f9d45660d456893f6e8c23ffa297fa83669 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java @@ -0,0 +1,24 @@ +package edu.kit.ipd.descartes.mm.adaptation.provider; + +import org.eclipse.emf.common.notify.Adapter; + +public class AdaptationItemProviderAdapterFactoryExtension extends AdaptationItemProviderAdapterFactory { + + @Override + public Adapter createAdaptationActionOperationAdapter() { + if (adaptationActionOperationItemProvider == null) { + adaptationActionOperationItemProvider = new AdaptationActionOperationItemProviderExtension(this); + } + + return adaptationActionOperationItemProvider; + } + + @Override + public Adapter createActionReferenceAdapter() { + if (actionReferenceItemProvider == null) { + actionReferenceItemProvider = new ActionReferenceItemProviderExtension(this); + } + + return actionReferenceItemProvider; + } +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b90027a824b7e311b01b1ad8a15643e1747f74a5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java @@ -0,0 +1,163 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AbstractControlFlowElement; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; + +import java.util.Collection; +import java.util.List; + +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; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AbstractControlFlowElement} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AbstractControlFlowElementItemProvider + extends IdentifierItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AbstractControlFlowElementItemProvider(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); + + addPredecessorPropertyDescriptor(object); + addSuccessorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Predecessor feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addPredecessorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AbstractControlFlowElement_predecessor_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AbstractControlFlowElement_predecessor_feature", "_UI_AbstractControlFlowElement_type"), + AdaptationPackage.Literals.ABSTRACT_CONTROL_FLOW_ELEMENT__PREDECESSOR, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Successor feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSuccessorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AbstractControlFlowElement_successor_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AbstractControlFlowElement_successor_feature", "_UI_AbstractControlFlowElement_type"), + AdaptationPackage.Literals.ABSTRACT_CONTROL_FLOW_ELEMENT__SUCCESSOR, + true, + false, + true, + null, + 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 = ((AbstractControlFlowElement)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_AbstractControlFlowElement_type") : + getString("_UI_AbstractControlFlowElement_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d67103ae3dc5f65228b94cf7effa2410d3335da0 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java @@ -0,0 +1,242 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.Action; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Action} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ActionItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ActionItemProvider(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); + + addOutputParamPropertyDescriptor(object); + addInputParamsPropertyDescriptor(object); + addReferredAdaptationPointPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Output Param feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOutputParamPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Action_outputParam_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Action_outputParam_feature", "_UI_Action_type"), + AdaptationPackage.Literals.ACTION__OUTPUT_PARAM, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Input Params feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInputParamsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Action_inputParams_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Action_inputParams_feature", "_UI_Action_type"), + AdaptationPackage.Literals.ACTION__INPUT_PARAMS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Referred Adaptation Point feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReferredAdaptationPointPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Action_referredAdaptationPoint_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Action_referredAdaptationPoint_feature", "_UI_Action_type"), + AdaptationPackage.Literals.ACTION__REFERRED_ADAPTATION_POINT, + true, + false, + true, + null, + 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(AdaptationPackage.Literals.ACTION__ADAPTATION_ACTION_OPERATION); + } + 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 Action.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Action")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Action)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Action_type") : + getString("_UI_Action_type") + " " + 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); + + switch (notification.getFeatureID(Action.class)) { + case AdaptationPackage.ACTION__ADAPTATION_ACTION_OPERATION: + 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 + (AdaptationPackage.Literals.ACTION__ADAPTATION_ACTION_OPERATION, + AdaptationFactory.eINSTANCE.createAdaptationActionOperation())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..029402873fd9b08d98e2ed6d6f8b09ce45b56653 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java @@ -0,0 +1,136 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.ActionReference; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +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; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ActionReferenceItemProvider + extends AbstractControlFlowElementItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ActionReferenceItemProvider(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); + + addRefersToPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Refers To feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRefersToPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ActionReference_refersTo_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ActionReference_refersTo_feature", "_UI_ActionReference_type"), + AdaptationPackage.Literals.ACTION_REFERENCE__REFERS_TO, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ActionReference.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ActionReference")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ActionReference)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_ActionReference_type") : + getString("_UI_ActionReference_type") + " " + 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/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..75cacd4765065016bc0fbe1102958daeb820dd0e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import java.util.Collection; +import java.util.List; + +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; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationScope; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationActionOperationItemProvider + 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 AdaptationActionOperationItemProvider(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); + + addAdaptationOperationScopePropertyDescriptor(object); + addAdaptationOperationDirectionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Adaptation Operation Scope feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAdaptationOperationScopePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AdaptationActionOperation_adaptationOperationScope_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AdaptationActionOperation_adaptationOperationScope_feature", "_UI_AdaptationActionOperation_type"), + AdaptationPackage.Literals.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_SCOPE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Adaptation Operation Direction feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAdaptationOperationDirectionPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AdaptationActionOperation_adaptationOperationDirection_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AdaptationActionOperation_adaptationOperationDirection_feature", "_UI_AdaptationActionOperation_type"), + AdaptationPackage.Literals.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_DIRECTION, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns AdaptationActionOperation.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationActionOperation")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + AdaptationScope labelValue = ((AdaptationActionOperation)object).getAdaptationOperationScope(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptationActionOperation_type") : + getString("_UI_AdaptationActionOperation_type") + " " + 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); + + switch (notification.getFeatureID(AdaptationActionOperation.class)) { + case AdaptationPackage.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_SCOPE: + case AdaptationPackage.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_DIRECTION: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..559e68e2dc02f1f56ac3950972119a17528cac76 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java @@ -0,0 +1,102 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin; + +import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Adaptation edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class AdaptationEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final AdaptationEditPlugin INSTANCE = new AdaptationEditPlugin(); + + /** + * 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 AdaptationEditPlugin() { + super + (new ResourceLocator [] { + AdaptationpointsEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + PerfdatarepoEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..812e43906bd8beae6bd82681367bc3088ae61d26 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java @@ -0,0 +1,656 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + +import edu.kit.ipd.descartes.mm.adaptation.util.AdaptationAdapterFactory; + +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; + +/** + * 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 AdaptationItemProviderAdapterFactory extends AdaptationAdapterFactory 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 AdaptationItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationProcessItemProvider adaptationProcessItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAdaptationProcessAdapter() { + if (adaptationProcessItemProvider == null) { + adaptationProcessItemProvider = new AdaptationProcessItemProvider(this); + } + + return adaptationProcessItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.OverallGoal} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OverallGoalItemProvider overallGoalItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.OverallGoal}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createOverallGoalAdapter() { + if (overallGoalItemProvider == null) { + overallGoalItemProvider = new OverallGoalItemProvider(this); + } + + return overallGoalItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Strategy} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StrategyItemProvider strategyItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Strategy}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStrategyAdapter() { + if (strategyItemProvider == null) { + strategyItemProvider = new StrategyItemProvider(this); + } + + return strategyItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Event} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EventItemProvider eventItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Event}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createEventAdapter() { + if (eventItemProvider == null) { + eventItemProvider = new EventItemProvider(this); + } + + return eventItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Objective} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ObjectiveItemProvider objectiveItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Objective}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createObjectiveAdapter() { + if (objectiveItemProvider == null) { + objectiveItemProvider = new ObjectiveItemProvider(this); + } + + return objectiveItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Specification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SpecificationItemProvider specificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Specification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSpecificationAdapter() { + if (specificationItemProvider == null) { + specificationItemProvider = new SpecificationItemProvider(this); + } + + return specificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected WeightingFunctionItemProvider weightingFunctionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createWeightingFunctionAdapter() { + if (weightingFunctionItemProvider == null) { + weightingFunctionItemProvider = new WeightingFunctionItemProvider(this); + } + + return weightingFunctionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected WeightedMetricItemProvider weightedMetricItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createWeightedMetricAdapter() { + if (weightedMetricItemProvider == null) { + weightedMetricItemProvider = new WeightedMetricItemProvider(this); + } + + return weightedMetricItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected WeightedTacticItemProvider weightedTacticItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createWeightedTacticAdapter() { + if (weightedTacticItemProvider == null) { + weightedTacticItemProvider = new WeightedTacticItemProvider(this); + } + + return weightedTacticItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Tactic} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TacticItemProvider tacticItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Tactic}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTacticAdapter() { + if (tacticItemProvider == null) { + tacticItemProvider = new TacticItemProvider(this); + } + + return tacticItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.StartAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StartActionItemProvider startActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StartAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStartActionAdapter() { + if (startActionItemProvider == null) { + startActionItemProvider = new StartActionItemProvider(this); + } + + return startActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.StopAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StopActionItemProvider stopActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StopAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStopActionAdapter() { + if (stopActionItemProvider == null) { + stopActionItemProvider = new StopActionItemProvider(this); + } + + return stopActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected LoopActionItemProvider loopActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createLoopActionAdapter() { + if (loopActionItemProvider == null) { + loopActionItemProvider = new LoopActionItemProvider(this); + } + + return loopActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BranchActionItemProvider branchActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBranchActionAdapter() { + if (branchActionItemProvider == null) { + branchActionItemProvider = new BranchActionItemProvider(this); + } + + return branchActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ActionReferenceItemProvider actionReferenceItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createActionReferenceAdapter() { + if (actionReferenceItemProvider == null) { + actionReferenceItemProvider = new ActionReferenceItemProvider(this); + } + + return actionReferenceItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationPlanItemProvider adaptationPlanItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAdaptationPlanAdapter() { + if (adaptationPlanItemProvider == null) { + adaptationPlanItemProvider = new AdaptationPlanItemProvider(this); + } + + return adaptationPlanItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Action} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ActionItemProvider actionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Action}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createActionAdapter() { + if (actionItemProvider == null) { + actionItemProvider = new ActionItemProvider(this); + } + + return actionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationActionOperationItemProvider adaptationActionOperationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAdaptationActionOperationAdapter() { + if (adaptationActionOperationItemProvider == null) { + adaptationActionOperationItemProvider = new AdaptationActionOperationItemProvider(this); + } + + return adaptationActionOperationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Parameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterItemProvider parameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.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 edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ImportDeclarationItemProvider importDeclarationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createImportDeclarationAdapter() { + if (importDeclarationItemProvider == null) { + importDeclarationItemProvider = new ImportDeclarationItemProvider(this); + } + + return importDeclarationItemProvider; + } + + /** + * 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 (adaptationProcessItemProvider != null) adaptationProcessItemProvider.dispose(); + if (overallGoalItemProvider != null) overallGoalItemProvider.dispose(); + if (strategyItemProvider != null) strategyItemProvider.dispose(); + if (eventItemProvider != null) eventItemProvider.dispose(); + if (objectiveItemProvider != null) objectiveItemProvider.dispose(); + if (specificationItemProvider != null) specificationItemProvider.dispose(); + if (weightingFunctionItemProvider != null) weightingFunctionItemProvider.dispose(); + if (weightedMetricItemProvider != null) weightedMetricItemProvider.dispose(); + if (weightedTacticItemProvider != null) weightedTacticItemProvider.dispose(); + if (tacticItemProvider != null) tacticItemProvider.dispose(); + if (startActionItemProvider != null) startActionItemProvider.dispose(); + if (stopActionItemProvider != null) stopActionItemProvider.dispose(); + if (loopActionItemProvider != null) loopActionItemProvider.dispose(); + if (branchActionItemProvider != null) branchActionItemProvider.dispose(); + if (actionReferenceItemProvider != null) actionReferenceItemProvider.dispose(); + if (adaptationPlanItemProvider != null) adaptationPlanItemProvider.dispose(); + if (actionItemProvider != null) actionItemProvider.dispose(); + if (adaptationActionOperationItemProvider != null) adaptationActionOperationItemProvider.dispose(); + if (parameterItemProvider != null) parameterItemProvider.dispose(); + if (importDeclarationItemProvider != null) importDeclarationItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2c15196830185d889d2a9a938d2dc7f6f311ba86 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java @@ -0,0 +1,192 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationPlanItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationPlanItemProvider(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(AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS); + } + 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 AdaptationPlan.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationPlan")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AdaptationPlan)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptationPlan_type") : + getString("_UI_AdaptationPlan_type") + " " + 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); + + switch (notification.getFeatureID(AdaptationPlan.class)) { + case AdaptationPackage.ADAPTATION_PLAN__STEPS: + 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 + (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS, + AdaptationFactory.eINSTANCE.createStartAction())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS, + AdaptationFactory.eINSTANCE.createStopAction())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS, + AdaptationFactory.eINSTANCE.createLoopAction())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS, + AdaptationFactory.eINSTANCE.createBranchAction())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS, + AdaptationFactory.eINSTANCE.createActionReference())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..83fe451a79b2d0a86770a8fa8dabcb1136fca3b8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java @@ -0,0 +1,207 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationProcessItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationProcessItemProvider(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(AdaptationPackage.Literals.ADAPTATION_PROCESS__TACTICS); + childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__ACTIONS); + childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__STRATEGIES); + childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__PARAMETERS); + childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__GOAL); + childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__IMPORT_DECLARATION); + } + 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 AdaptationProcess.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationProcess")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AdaptationProcess)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptationProcess_type") : + getString("_UI_AdaptationProcess_type") + " " + 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); + + switch (notification.getFeatureID(AdaptationProcess.class)) { + case AdaptationPackage.ADAPTATION_PROCESS__TACTICS: + case AdaptationPackage.ADAPTATION_PROCESS__ACTIONS: + case AdaptationPackage.ADAPTATION_PROCESS__STRATEGIES: + case AdaptationPackage.ADAPTATION_PROCESS__PARAMETERS: + case AdaptationPackage.ADAPTATION_PROCESS__GOAL: + case AdaptationPackage.ADAPTATION_PROCESS__IMPORT_DECLARATION: + 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 + (AdaptationPackage.Literals.ADAPTATION_PROCESS__TACTICS, + AdaptationFactory.eINSTANCE.createTactic())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PROCESS__ACTIONS, + AdaptationFactory.eINSTANCE.createAction())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PROCESS__STRATEGIES, + AdaptationFactory.eINSTANCE.createStrategy())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PROCESS__PARAMETERS, + AdaptationFactory.eINSTANCE.createParameter())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PROCESS__GOAL, + AdaptationFactory.eINSTANCE.createOverallGoal())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.ADAPTATION_PROCESS__IMPORT_DECLARATION, + AdaptationFactory.eINSTANCE.createImportDeclaration())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..cb71c4fec87b6b574f643165496125623b2c24e9 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java @@ -0,0 +1,238 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.BranchAction; + +import java.util.Collection; +import java.util.List; + +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.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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BranchActionItemProvider + extends AbstractControlFlowElementItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BranchActionItemProvider(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); + + addContextPropertyDescriptor(object); + addConditionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Context feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addContextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BranchAction_context_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BranchAction_context_feature", "_UI_BranchAction_type"), + AdaptationPackage.Literals.BRANCH_ACTION__CONTEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Condition feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addConditionPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BranchAction_condition_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BranchAction_condition_feature", "_UI_BranchAction_type"), + AdaptationPackage.Literals.BRANCH_ACTION__CONDITION, + 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(AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH); + childrenFeatures.add(AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH); + } + 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 BranchAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((BranchAction)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_BranchAction_type") : + getString("_UI_BranchAction_type") + " " + 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); + + switch (notification.getFeatureID(BranchAction.class)) { + case AdaptationPackage.BRANCH_ACTION__CONDITION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case AdaptationPackage.BRANCH_ACTION__CONDITION_TRUE_BRANCH: + case AdaptationPackage.BRANCH_ACTION__CONDITION_FALSE_BRANCH: + 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 + (AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH, + AdaptationFactory.eINSTANCE.createAdaptationPlan())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH, + AdaptationFactory.eINSTANCE.createAdaptationPlan())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH || + childFeature == AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ed5c9234859578f51468ee00278e5e204807c407 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java @@ -0,0 +1,126 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.Event; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.adaptation.Event} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EventItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EventItemProvider(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 Event.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Event")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Event)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Event_type") : + getString("_UI_Event_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2bbd53f91180d84d85c5aaf28e07128f37765caa --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java @@ -0,0 +1,158 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ImportDeclarationItemProvider + 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 ImportDeclarationItemProvider(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); + + addImportURIPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Import URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addImportURIPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ImportDeclaration_importURI_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ImportDeclaration_importURI_feature", "_UI_ImportDeclaration_type"), + AdaptationPackage.Literals.IMPORT_DECLARATION__IMPORT_URI, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns ImportDeclaration.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ImportDeclaration")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ImportDeclaration)object).getImportURI(); + return label == null || label.length() == 0 ? + getString("_UI_ImportDeclaration_type") : + getString("_UI_ImportDeclaration_type") + " " + 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); + + switch (notification.getFeatureID(ImportDeclaration.class)) { + case AdaptationPackage.IMPORT_DECLARATION__IMPORT_URI: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d9c4da2fa458acfde8345276d9848d2cbb2a0a68 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import java.util.Collection; +import java.util.List; + +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.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.ViewerNotification; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.LoopAction; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LoopActionItemProvider + extends AbstractControlFlowElementItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LoopActionItemProvider(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); + + addCounterPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Counter feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCounterPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_LoopAction_counter_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_LoopAction_counter_feature", "_UI_LoopAction_type"), + AdaptationPackage.Literals.LOOP_ACTION__COUNTER, + true, + false, + false, + null, + 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(AdaptationPackage.Literals.LOOP_ACTION__BODY); + } + 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 LoopAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((LoopAction)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_LoopAction_type") : + getString("_UI_LoopAction_type") + " " + 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); + + switch (notification.getFeatureID(LoopAction.class)) { + case AdaptationPackage.LOOP_ACTION__COUNTER: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case AdaptationPackage.LOOP_ACTION__BODY: + 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 + (AdaptationPackage.Literals.LOOP_ACTION__BODY, + AdaptationFactory.eINSTANCE.createAdaptationPlan())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..20810db97576ab436dacd077c5e5e341595a8a55 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java @@ -0,0 +1,168 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import java.util.Collection; +import java.util.List; + +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.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; + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.Objective; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Objective} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ObjectiveItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ObjectiveItemProvider(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(AdaptationPackage.Literals.OBJECTIVE__SPECIFICATIONS); + } + 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 Objective.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Objective")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Objective)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Objective_type") : + getString("_UI_Objective_type") + " " + 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); + + switch (notification.getFeatureID(Objective.class)) { + case AdaptationPackage.OBJECTIVE__SPECIFICATIONS: + 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 + (AdaptationPackage.Literals.OBJECTIVE__SPECIFICATIONS, + AdaptationFactory.eINSTANCE.createSpecification())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..8e435292640fb6a1174e2756e59a5c393bc5e745 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java @@ -0,0 +1,199 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.OverallGoal; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.OverallGoal} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class OverallGoalItemProvider + 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 OverallGoalItemProvider(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); + + addDescriptionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * 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_OverallGoal_description_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_OverallGoal_description_feature", "_UI_OverallGoal_type"), + AdaptationPackage.Literals.OVERALL_GOAL__DESCRIPTION, + 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(AdaptationPackage.Literals.OVERALL_GOAL__OBJECTIVES); + } + 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 OverallGoal.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/OverallGoal")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((OverallGoal)object).getDescription(); + return label == null || label.length() == 0 ? + getString("_UI_OverallGoal_type") : + getString("_UI_OverallGoal_type") + " " + 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); + + switch (notification.getFeatureID(OverallGoal.class)) { + case AdaptationPackage.OVERALL_GOAL__DESCRIPTION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case AdaptationPackage.OVERALL_GOAL__OBJECTIVES: + 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 + (AdaptationPackage.Literals.OVERALL_GOAL__OBJECTIVES, + AdaptationFactory.eINSTANCE.createObjective())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9a69e2aa9f0483c455164e503539176f807c8480 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java @@ -0,0 +1,206 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.Parameter; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.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); + addValuePropertyDescriptor(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"), + getString("_UI_PropertyDescriptor_description", "_UI_Parameter_name_feature", "_UI_Parameter_type"), + AdaptationPackage.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"), + getString("_UI_PropertyDescriptor_description", "_UI_Parameter_type_feature", "_UI_Parameter_type"), + AdaptationPackage.Literals.PARAMETER__TYPE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Parameter_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Parameter_value_feature", "_UI_Parameter_type"), + AdaptationPackage.Literals.PARAMETER__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_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")); + } + + /** + * 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") : + getString("_UI_Parameter_type") + " " + 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); + + switch (notification.getFeatureID(Parameter.class)) { + case AdaptationPackage.PARAMETER__NAME: + case AdaptationPackage.PARAMETER__TYPE: + case AdaptationPackage.PARAMETER__VALUE: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2e97bba365773c7a1408c4bb895fa9cfacc70e64 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java @@ -0,0 +1,203 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.Specification; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.Specification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SpecificationItemProvider + 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 SpecificationItemProvider(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); + + addMetricTypePropertyDescriptor(object); + addValuePropertyDescriptor(object); + addRelationalOperatorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Metric Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMetricTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Specification_metricType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Specification_metricType_feature", "_UI_Specification_type"), + AdaptationPackage.Literals.SPECIFICATION__METRIC_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Specification_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Specification_value_feature", "_UI_Specification_type"), + AdaptationPackage.Literals.SPECIFICATION__VALUE, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Relational Operator feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRelationalOperatorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Specification_relationalOperator_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Specification_relationalOperator_feature", "_UI_Specification_type"), + AdaptationPackage.Literals.SPECIFICATION__RELATIONAL_OPERATOR, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Specification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Specification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + Specification specification = (Specification)object; + return getString("_UI_Specification_type") + " " + specification.getValue(); + } + + /** + * 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(Specification.class)) { + case AdaptationPackage.SPECIFICATION__VALUE: + case AdaptationPackage.SPECIFICATION__RELATIONAL_OPERATOR: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2f64afecc975bb1eab2a5be2399ce7c90478b46a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.StartAction; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.StartAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StartActionItemProvider + extends AbstractControlFlowElementItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StartActionItemProvider(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 StartAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/StartAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((StartAction)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_StartAction_type") : + getString("_UI_StartAction_type") + " " + 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/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..f0da9536efb720a1e136a1f8cce5092025e29740 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.mm.adaptation.StopAction; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptation.StopAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StopActionItemProvider + extends AbstractControlFlowElementItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StopActionItemProvider(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 StopAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/StopAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((StopAction)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_StopAction_type") : + getString("_UI_StopAction_type") + " " + 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/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..513c733414016772f386c6cbc919a96d850561bf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java @@ -0,0 +1,210 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.Strategy; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Strategy} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StrategyItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StrategyItemProvider(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); + + addObjectivePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Objective feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addObjectivePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Strategy_objective_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Strategy_objective_feature", "_UI_Strategy_type"), + AdaptationPackage.Literals.STRATEGY__OBJECTIVE, + true, + false, + true, + null, + 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(AdaptationPackage.Literals.STRATEGY__TRIGGERING_EVENTS); + childrenFeatures.add(AdaptationPackage.Literals.STRATEGY__TACTICS); + childrenFeatures.add(AdaptationPackage.Literals.STRATEGY__WEIGHTING_FUNCTION); + } + 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 Strategy.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Strategy")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Strategy)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Strategy_type") : + getString("_UI_Strategy_type") + " " + 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); + + switch (notification.getFeatureID(Strategy.class)) { + case AdaptationPackage.STRATEGY__TRIGGERING_EVENTS: + case AdaptationPackage.STRATEGY__TACTICS: + case AdaptationPackage.STRATEGY__WEIGHTING_FUNCTION: + 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 + (AdaptationPackage.Literals.STRATEGY__TRIGGERING_EVENTS, + AdaptationFactory.eINSTANCE.createEvent())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.STRATEGY__TACTICS, + AdaptationFactory.eINSTANCE.createWeightedTactic())); + + newChildDescriptors.add + (createChildParameter + (AdaptationPackage.Literals.STRATEGY__WEIGHTING_FUNCTION, + AdaptationFactory.eINSTANCE.createWeightingFunction())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b192348573459b197bf3563aaaf60bbb29caede5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java @@ -0,0 +1,219 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.Tactic; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Tactic} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TacticItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TacticItemProvider(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); + + addInputParamsPropertyDescriptor(object); + addOutputParamPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Input Params feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInputParamsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Tactic_inputParams_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Tactic_inputParams_feature", "_UI_Tactic_type"), + AdaptationPackage.Literals.TACTIC__INPUT_PARAMS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Output Param feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOutputParamPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Tactic_outputParam_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Tactic_outputParam_feature", "_UI_Tactic_type"), + AdaptationPackage.Literals.TACTIC__OUTPUT_PARAM, + true, + false, + true, + null, + 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(AdaptationPackage.Literals.TACTIC__IMPLEMENTED_PLAN); + } + 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 Tactic.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Tactic")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Tactic)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Tactic_type") : + getString("_UI_Tactic_type") + " " + 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); + + switch (notification.getFeatureID(Tactic.class)) { + case AdaptationPackage.TACTIC__IMPLEMENTED_PLAN: + 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 + (AdaptationPackage.Literals.TACTIC__IMPLEMENTED_PLAN, + AdaptationFactory.eINSTANCE.createAdaptationPlan())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..133fa9ab8dc16eddf8a794dbb80a0e9b51145db7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class WeightedMetricItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public WeightedMetricItemProvider(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); + + addWeightPropertyDescriptor(object); + addMetricTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Weight feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addWeightPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedMetric_weight_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedMetric_weight_feature", "_UI_WeightedMetric_type"), + AdaptationPackage.Literals.WEIGHTED_METRIC__WEIGHT, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Metric Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMetricTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedMetric_metricType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedMetric_metricType_feature", "_UI_WeightedMetric_type"), + AdaptationPackage.Literals.WEIGHTED_METRIC__METRIC_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns WeightedMetric.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightedMetric")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((WeightedMetric)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_WeightedMetric_type") : + getString("_UI_WeightedMetric_type") + " " + 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); + + switch (notification.getFeatureID(WeightedMetric.class)) { + case AdaptationPackage.WEIGHTED_METRIC__WEIGHT: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..238192386d33f9f4fdb462c639939f7e72200c5f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java @@ -0,0 +1,229 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class WeightedTacticItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public WeightedTacticItemProvider(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); + + addUsedTacticPropertyDescriptor(object); + addCurrentWeightPropertyDescriptor(object); + addDefaultWeightPropertyDescriptor(object); + addLastImpactPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Used Tactic feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUsedTacticPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedTactic_usedTactic_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_usedTactic_feature", "_UI_WeightedTactic_type"), + AdaptationPackage.Literals.WEIGHTED_TACTIC__USED_TACTIC, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Current Weight feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCurrentWeightPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedTactic_currentWeight_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_currentWeight_feature", "_UI_WeightedTactic_type"), + AdaptationPackage.Literals.WEIGHTED_TACTIC__CURRENT_WEIGHT, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Default Weight feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDefaultWeightPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedTactic_defaultWeight_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_defaultWeight_feature", "_UI_WeightedTactic_type"), + AdaptationPackage.Literals.WEIGHTED_TACTIC__DEFAULT_WEIGHT, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Last Impact feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addLastImpactPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightedTactic_lastImpact_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_lastImpact_feature", "_UI_WeightedTactic_type"), + AdaptationPackage.Literals.WEIGHTED_TACTIC__LAST_IMPACT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns WeightedTactic.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightedTactic")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((WeightedTactic)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_WeightedTactic_type") : + getString("_UI_WeightedTactic_type") + " " + 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); + + switch (notification.getFeatureID(WeightedTactic.class)) { + case AdaptationPackage.WEIGHTED_TACTIC__CURRENT_WEIGHT: + case AdaptationPackage.WEIGHTED_TACTIC__DEFAULT_WEIGHT: + 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 AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0ffd470629d24ac36ac5819856764cf9b1cb223c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java @@ -0,0 +1,200 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class WeightingFunctionItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public WeightingFunctionItemProvider(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); + + addWeightingFunctionImplementationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Weighting Function Implementation feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addWeightingFunctionImplementationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_WeightingFunction_weightingFunctionImplementation_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_WeightingFunction_weightingFunctionImplementation_feature", "_UI_WeightingFunction_type"), + AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTING_FUNCTION_IMPLEMENTATION, + 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(AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTED_METRICS); + } + 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 WeightingFunction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightingFunction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((WeightingFunction)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_WeightingFunction_type") : + getString("_UI_WeightingFunction_type") + " " + 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); + + switch (notification.getFeatureID(WeightingFunction.class)) { + case AdaptationPackage.WEIGHTING_FUNCTION__WEIGHTING_FUNCTION_IMPLEMENTATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case AdaptationPackage.WEIGHTING_FUNCTION__WEIGHTED_METRICS: + 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 + (AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTED_METRICS, + AdaptationFactory.eINSTANCE.createWeightedMetric())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath b/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/.project b/edu.kit.ipd.descartes.mm.adaptation.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..e424ff5d24bdd25c4fedf546b22464cedc98c45c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.adaptation.editor</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/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..016165f20dcbcb71d77463263745e07f52a1a2e5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptation.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.adaptation.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.adaptation.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.perfdatarepo.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties b/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..689b7281906a8495692dabb9df11ed27df1f312f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif new file mode 100644 index 0000000000000000000000000000000000000000..e976e0776d200e1ce72d13ee80784885faff018e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..91ae328624e8b805efc0ebba1c9628ba212f140f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties @@ -0,0 +1,54 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Adaptation Editor +providerName = www.example.org + +_UI_AdaptationEditor_menu = &Adaptation Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_adaptation_category = Adaptation + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_AdaptationModelWizard_label = Adaptation Model +_UI_AdaptationModelWizard_description = Create a new Adaptation model + +_UI_AdaptationEditor_label = Adaptation Model Editor + +_UI_AdaptationEditorFilenameDefaultBase = My +_UI_AdaptationEditorFilenameExtensions = adaptation + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..40591aec2aecfde7530af7d54698f2a724afe862 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.adaptation.category" + name="%_UI_Wizard_adaptation_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationModelWizardID" + name="%_UI_AdaptationModelWizard_label" + class="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.adaptation.category" + icon="icons/full/obj16/AdaptationModelFile.gif"> + <description>%_UI_AdaptationModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditorID" + name="%_UI_AdaptationEditor_label" + icon="icons/full/obj16/AdaptationModelFile.gif" + extensions="adaptation" + class="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditor" + contributorClass="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml b/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..c423bf35904c982acb1d508f7fdd3114c046e489 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.adaptation.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..d3c39fed354981bb906ef400b7485212226960ff --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java @@ -0,0 +1,424 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Adaptation model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(AdaptationEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(AdaptationEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("adaptation-settings")); + toolBarManager.add(new Separator("adaptation-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditor_menu"), "edu.kit.ipd.descartes.mm.adaptationMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..b8c9630f470e2dffe02dc0699c54cc9d2b8f78ad --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java @@ -0,0 +1,1785 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.presentation; + + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; +import org.eclipse.emf.common.ui.viewer.IViewerProvider; +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.SaveAsDialog; +import org.eclipse.ui.ide.IGotoMarker; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; +import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactory; +import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactoryExtension; +import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory; +import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoItemProviderAdapterFactory; + + +/** + * This is an example of a Adaptation model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(AdaptationEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(AdaptationEditor.this); + handleActivate(); + } + } + else if (p == AdaptationEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(AdaptationEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == AdaptationEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(AdaptationEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.adaptation.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new AdaptationItemProviderAdapterFactoryExtension()); // Use my own editor extensions + adapterFactory.addAdapterFactory(new AdaptationpointsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new PerfdatarepoItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.adaptation.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.adaptation.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + AdaptationEditor.this.setSelectionToViewer(selection); + AdaptationEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + AdaptationEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return AdaptationEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return AdaptationEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..515ffbba196b87b781b95a97c6506bf4394e9465 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java @@ -0,0 +1,104 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin; + +import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Adaptation editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class AdaptationEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final AdaptationEditorPlugin INSTANCE = new AdaptationEditorPlugin(); + + /** + * 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 AdaptationEditorPlugin() { + super + (new ResourceLocator [] { + AdaptationpointsEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + PerfdatarepoEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..056dfa1d7064a74632f1f7fa79887cbd354f437f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java @@ -0,0 +1,628 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptation.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; +import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationPackage adaptationPackage = AdaptationPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationFactory adaptationFactory = adaptationPackage.getAdaptationFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(AdaptationEditorPlugin.INSTANCE.getImage("full/wizban/NewAdaptation"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : adaptationPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)adaptationPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = adaptationFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), AdaptationEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + AdaptationEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class AdaptationModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(AdaptationEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class AdaptationModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(AdaptationEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(AdaptationEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return AdaptationEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + AdaptationEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(AdaptationEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new AdaptationModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_label")); + newFileCreationPage.setDescription(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_description")); + newFileCreationPage.setFileName(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new AdaptationModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_label")); + initialObjectCreationPage.setDescription(AdaptationEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..0e7522c470fe0fcf44ed42ee025fe17aa64980b1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.adaptationpoints.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/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..c94eef8fde74fa3411a3e875ea3c5243bf636090 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptationpoints.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.adaptationpoints.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.adaptationpoints;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7d0fbc9612ac99568fa3b3c23f6fd2eafb7a160 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..939ba2e496a51f281d6a365e73c493f4b2aa4c2c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f04e778db096fbf0a83f92071450b0a085872cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc3cd12da11ce5341142dbedd68768b5cee321b8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfd10c2742c0926ee74de04f02e3e5964cc2bfb9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfd10c2742c0926ee74de04f02e3e5964cc2bfb9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f2603b5337405879d0e669dbf20e582c22c9118 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif new file mode 100644 index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3908bcf7b4ec0b29040bb1ef944c4d5a93fbb32 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6925602975de13459862ee32e1b0d97549bf67 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..79d22bddb23f6388fd225e9b6955c67c8d613d08 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties @@ -0,0 +1,48 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Adaptationpoints 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_AdaptationPointDescriptions_type = Adaptation Point Descriptions +_UI_AdaptationPoint_type = Adaptation Point +_UI_ModelVariableConfigurationRange_type = Model Variable Configuration Range +_UI_ModelEntityConfigurationRange_type = Model Entity Configuration Range +_UI_VariationType_type = Variation Type +_UI_PropertyRange_type = Property Range +_UI_SetOfConfigurations_type = Set Of Configurations +_UI_OclConstraint_type = Ocl Constraint +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_AdaptationPointDescriptions_adaptationPoints_feature = Adaptation Points +_UI_ModelVariableConfigurationRange_adaptableEntity_feature = Adaptable Entity +_UI_ModelVariableConfigurationRange_minValue_feature = Min Value +_UI_ModelVariableConfigurationRange_maxValue_feature = Max Value +_UI_ModelEntityConfigurationRange_variationPossibility_feature = Variation Possibility +_UI_ModelEntityConfigurationRange_entity_feature = Entity +_UI_PropertyRange_minValueConstraint_feature = Min Value Constraint +_UI_PropertyRange_maxValueConstraint_feature = Max Value Constraint +_UI_SetOfConfigurations_valueConstraint_feature = Value Constraint +_UI_SetOfConfigurations_variants_feature = Variants +_UI_OclConstraint_oclString_feature = Ocl String +_UI_Unknown_feature = Unspecified + +_UI_OperationType_SCALE_UP_literal = SCALE_UP +_UI_OperationType_SCALE_OUT_literal = SCALE_OUT +_UI_OperationType_SCALE_DOWN_literal = SCALE_DOWN +_UI_OperationType_SCALE_IN_literal = SCALE_IN +_UI_OperationType_NOT_SET_literal = NOT_SET +_UI_OperationType_ANY_literal = ANY +_UI_ModelEntityConfigurationRange_adaptableEntity_feature = Adaptable Entity +_UI_OperationType_MIGRATE_literal = MIGRATE +_UI_OclConstraint_name_feature = Name diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..6bd0dd684086b26f31077d3e6afa9a097f3938a2 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/adaptationpoints/0.1" + class="edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bc54b51e249096c9f66e9198020d4f11faaaa03 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.adaptationpoints.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a81552146afd0b2ebfe745ee6a4c49dd92e6be9c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java @@ -0,0 +1,173 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import java.util.Collection; +import java.util.List; + +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.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; + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationPointDescriptionsItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationPointDescriptionsItemProvider(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(AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS); + } + 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 AdaptationPointDescriptions.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationPointDescriptions")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AdaptationPointDescriptions)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptationPointDescriptions_type") : + getString("_UI_AdaptationPointDescriptions_type") + " " + 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); + + switch (notification.getFeatureID(AdaptationPointDescriptions.class)) { + case AdaptationpointsPackage.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS: + 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 + (AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS, + AdaptationpointsFactory.eINSTANCE.createModelVariableConfigurationRange())); + + newChildDescriptors.add + (createChildParameter + (AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS, + AdaptationpointsFactory.eINSTANCE.createModelEntityConfigurationRange())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationpointsEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c31ed3281b8c1616ef505b1c2843d1b964081662 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java @@ -0,0 +1,115 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPoint; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPoint} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationPointItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationPointItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AdaptationPoint)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AdaptationPoint_type") : + getString("_UI_AdaptationPoint_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationpointsEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..a889ef41e1109226793d07309b2f936dcb5c30ea --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java @@ -0,0 +1,96 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Adaptationpoints edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class AdaptationpointsEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final AdaptationpointsEditPlugin INSTANCE = new AdaptationpointsEditPlugin(); + + /** + * 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 AdaptationpointsEditPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..c3473686960bf0fb2d55590a5f14d5e7f28e0496 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java @@ -0,0 +1,320 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + +import edu.kit.ipd.descartes.mm.adaptationpoints.util.AdaptationpointsAdapterFactory; + +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; + +/** + * 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 AdaptationpointsItemProviderAdapterFactory extends AdaptationpointsAdapterFactory 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 AdaptationpointsItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationPointDescriptionsItemProvider adaptationPointDescriptionsItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAdaptationPointDescriptionsAdapter() { + if (adaptationPointDescriptionsItemProvider == null) { + adaptationPointDescriptionsItemProvider = new AdaptationPointDescriptionsItemProvider(this); + } + + return adaptationPointDescriptionsItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelVariableConfigurationRangeItemProvider modelVariableConfigurationRangeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelVariableConfigurationRangeAdapter() { + if (modelVariableConfigurationRangeItemProvider == null) { + modelVariableConfigurationRangeItemProvider = new ModelVariableConfigurationRangeItemProvider(this); + } + + return modelVariableConfigurationRangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelEntityConfigurationRangeItemProvider modelEntityConfigurationRangeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelEntityConfigurationRangeAdapter() { + if (modelEntityConfigurationRangeItemProvider == null) { + modelEntityConfigurationRangeItemProvider = new ModelEntityConfigurationRangeItemProvider(this); + } + + return modelEntityConfigurationRangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertyRangeItemProvider propertyRangeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPropertyRangeAdapter() { + if (propertyRangeItemProvider == null) { + propertyRangeItemProvider = new PropertyRangeItemProvider(this); + } + + return propertyRangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SetOfConfigurationsItemProvider setOfConfigurationsItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSetOfConfigurationsAdapter() { + if (setOfConfigurationsItemProvider == null) { + setOfConfigurationsItemProvider = new SetOfConfigurationsItemProvider(this); + } + + return setOfConfigurationsItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OclConstraintItemProvider oclConstraintItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createOclConstraintAdapter() { + if (oclConstraintItemProvider == null) { + oclConstraintItemProvider = new OclConstraintItemProvider(this); + } + + return oclConstraintItemProvider; + } + + /** + * 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 (adaptationPointDescriptionsItemProvider != null) adaptationPointDescriptionsItemProvider.dispose(); + if (modelVariableConfigurationRangeItemProvider != null) modelVariableConfigurationRangeItemProvider.dispose(); + if (modelEntityConfigurationRangeItemProvider != null) modelEntityConfigurationRangeItemProvider.dispose(); + if (propertyRangeItemProvider != null) propertyRangeItemProvider.dispose(); + if (setOfConfigurationsItemProvider != null) setOfConfigurationsItemProvider.dispose(); + if (oclConstraintItemProvider != null) oclConstraintItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..78347b11b4c506511e86e0fb27c26e9b7348f0f5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java @@ -0,0 +1,186 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange; + +import java.util.Collection; +import java.util.List; + +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.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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelEntityConfigurationRangeItemProvider + extends AdaptationPointItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelEntityConfigurationRangeItemProvider(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); + + addAdaptableEntityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Adaptable Entity feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAdaptableEntityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModelEntityConfigurationRange_adaptableEntity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelEntityConfigurationRange_adaptableEntity_feature", "_UI_ModelEntityConfigurationRange_type"), + AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__ADAPTABLE_ENTITY, + true, + false, + true, + null, + 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(AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY); + } + 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 ModelEntityConfigurationRange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelEntityConfigurationRange")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ModelEntityConfigurationRange)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ModelEntityConfigurationRange_type") : + getString("_UI_ModelEntityConfigurationRange_type") + " " + 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); + + switch (notification.getFeatureID(ModelEntityConfigurationRange.class)) { + case AdaptationpointsPackage.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY: + 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 + (AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY, + AdaptationpointsFactory.eINSTANCE.createPropertyRange())); + + newChildDescriptors.add + (createChildParameter + (AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY, + AdaptationpointsFactory.eINSTANCE.createSetOfConfigurations())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..de845e7148c9ce1be2d4e412bff32c28ed89f8bc --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java @@ -0,0 +1,191 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelVariableConfigurationRangeItemProvider + extends AdaptationPointItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelVariableConfigurationRangeItemProvider(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); + + addAdaptableEntityPropertyDescriptor(object); + addMinValuePropertyDescriptor(object); + addMaxValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Adaptable Entity feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAdaptableEntityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModelVariableConfigurationRange_adaptableEntity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_adaptableEntity_feature", "_UI_ModelVariableConfigurationRange_type"), + AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__ADAPTABLE_ENTITY, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Min Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMinValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModelVariableConfigurationRange_minValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_minValue_feature", "_UI_ModelVariableConfigurationRange_type"), + AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__MIN_VALUE, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Max Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMaxValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModelVariableConfigurationRange_maxValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_maxValue_feature", "_UI_ModelVariableConfigurationRange_type"), + AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__MAX_VALUE, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns ModelVariableConfigurationRange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelVariableConfigurationRange")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ModelVariableConfigurationRange)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ModelVariableConfigurationRange_type") : + getString("_UI_ModelVariableConfigurationRange_type") + " " + 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); + + switch (notification.getFeatureID(ModelVariableConfigurationRange.class)) { + case AdaptationpointsPackage.MODEL_VARIABLE_CONFIGURATION_RANGE__MIN_VALUE: + case AdaptationpointsPackage.MODEL_VARIABLE_CONFIGURATION_RANGE__MAX_VALUE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..92740a6fa949dcf907c1c90cf5afbc466946e8a5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class OclConstraintItemProvider + 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 OclConstraintItemProvider(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); + + addOclStringPropertyDescriptor(object); + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Ocl String feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOclStringPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_OclConstraint_oclString_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_OclConstraint_oclString_feature", "_UI_OclConstraint_type"), + AdaptationpointsPackage.Literals.OCL_CONSTRAINT__OCL_STRING, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * 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_OclConstraint_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_OclConstraint_name_feature", "_UI_OclConstraint_type"), + AdaptationpointsPackage.Literals.OCL_CONSTRAINT__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns OclConstraint.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/OclConstraint")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((OclConstraint)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_OclConstraint_type") : + getString("_UI_OclConstraint_type") + " " + 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); + + switch (notification.getFeatureID(OclConstraint.class)) { + case AdaptationpointsPackage.OCL_CONSTRAINT__OCL_STRING: + case AdaptationpointsPackage.OCL_CONSTRAINT__NAME: + 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 AdaptationpointsEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..92e02d436474be071357c1baab7f40207f872a16 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java @@ -0,0 +1,184 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PropertyRangeItemProvider + extends VariationTypeItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PropertyRangeItemProvider(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(AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT); + childrenFeatures.add(AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT); + } + 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 PropertyRange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyRange")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_PropertyRange_type"); + } + + /** + * 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(PropertyRange.class)) { + case AdaptationpointsPackage.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT: + case AdaptationpointsPackage.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT: + 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 + (AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT, + AdaptationpointsFactory.eINSTANCE.createOclConstraint())); + + newChildDescriptors.add + (createChildParameter + (AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT, + AdaptationpointsFactory.eINSTANCE.createOclConstraint())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT || + childFeature == AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a3e6e5fd55ba85858fdee3819b8257bcd3c626ef --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java @@ -0,0 +1,178 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations; + +import java.util.Collection; +import java.util.List; + +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.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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SetOfConfigurationsItemProvider + extends VariationTypeItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SetOfConfigurationsItemProvider(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); + + addVariantsPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Variants feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addVariantsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_SetOfConfigurations_variants_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_SetOfConfigurations_variants_feature", "_UI_SetOfConfigurations_type"), + AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VARIANTS, + true, + false, + true, + null, + 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(AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT); + } + 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 SetOfConfigurations.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/SetOfConfigurations")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_SetOfConfigurations_type"); + } + + /** + * 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(SetOfConfigurations.class)) { + case AdaptationpointsPackage.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT: + 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 + (AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT, + AdaptationpointsFactory.eINSTANCE.createOclConstraint())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7e90956ea3188d2ac9d0b922f2b0c2847f541333 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java @@ -0,0 +1,109 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.provider; + + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.VariationType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class VariationTypeItemProvider + 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 VariationTypeItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_VariationType_type"); + } + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return AdaptationpointsEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..fbd4900e76c5c042b39c95afac0eaaed9db196e2 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.adaptationpoints.editor</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/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..c204a1b45583d5284b318675c7f911ace94f2141 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF @@ -0,0 +1,20 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptationpoints.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.adaptationpoints.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d9a82160beb3ea4d11f4567740d097ef1feba81 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif new file mode 100644 index 0000000000000000000000000000000000000000..3da3019300095d7b0014b76a54ad3de0acf7f891 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif differ diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..dc88c79c9ab010894336240e6ea16a98a8b4739d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties @@ -0,0 +1,54 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Adaptationpoints Editor +providerName = www.example.org + +_UI_AdaptationpointsEditor_menu = &Adaptation Points Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_adaptation_category = Adaptation + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_AdaptationpointsModelWizard_label = Adaptation Points Model +_UI_AdaptationpointsModelWizard_description = Create a new Adaptation Points model + +_UI_AdaptationpointsEditor_label = Adaptation Points Model Editor + +_UI_AdaptationpointsEditorFilenameDefaultBase = My +_UI_AdaptationpointsEditorFilenameExtensions = adaptationpoints + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0c5b7725c6853a35d2663c411bf7a1f8bef2fea --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.adaptation.category" + name="%_UI_Wizard_adaptation_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsModelWizardID" + name="%_UI_AdaptationpointsModelWizard_label" + class="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.adaptation.category" + icon="icons/full/obj16/AdaptationpointsModelFile.gif"> + <description>%_UI_AdaptationpointsModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditorID" + name="%_UI_AdaptationpointsEditor_label" + icon="icons/full/obj16/AdaptationpointsModelFile.gif" + extensions="adaptationpoints" + class="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditor" + contributorClass="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..1900a29f19ece18367d44dc870e53270c123bd5e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.adaptationpoints.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..02e1acc062211717d938ddba90e1673c47f169b8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java @@ -0,0 +1,424 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Adaptationpoints model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationpointsActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationpointsActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("adaptationpoints-settings")); + toolBarManager.add(new Separator("adaptationpoints-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditor_menu"), "edu.kit.ipd.descartes.mm.adaptationpointsMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..47ec273058e049e31ba1779ef27da28efe26dda4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java @@ -0,0 +1,1819 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Adaptationpoints model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationpointsEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(AdaptationpointsEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(AdaptationpointsEditor.this); + handleActivate(); + } + } + else if (p == AdaptationpointsEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(AdaptationpointsEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == AdaptationpointsEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(AdaptationpointsEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.adaptationpoints.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationpointsEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new AdaptationpointsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.adaptationpoints.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.adaptationpoints.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + AdaptationpointsEditor.this.setSelectionToViewer(selection); + AdaptationpointsEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return AdaptationpointsEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return AdaptationpointsEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..f2c57bdf39d8f0f47355cd94660d5aa7344a0eda --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java @@ -0,0 +1,98 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Adaptationpoints editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class AdaptationpointsEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final AdaptationpointsEditorPlugin INSTANCE = new AdaptationpointsEditorPlugin(); + + /** + * 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 AdaptationpointsEditorPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..2ec1b12f6c93a84be572f3029fed7998ade6181f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java @@ -0,0 +1,628 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.adaptationpoints.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory; +import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; +import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AdaptationpointsModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationpointsPackage adaptationpointsPackage = AdaptationpointsPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationpointsFactory adaptationpointsFactory = adaptationpointsPackage.getAdaptationpointsFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationpointsModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdaptationpointsModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(AdaptationpointsEditorPlugin.INSTANCE.getImage("full/wizban/NewAdaptationpoints"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : adaptationpointsPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)adaptationpointsPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = adaptationpointsFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + AdaptationpointsEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class AdaptationpointsModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationpointsModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(AdaptationpointsEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class AdaptationpointsModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdaptationpointsModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return AdaptationpointsEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + AdaptationpointsEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new AdaptationpointsModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_label")); + newFileCreationPage.setDescription(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_description")); + newFileCreationPage.setFileName(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new AdaptationpointsModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_label")); + initialObjectCreationPage.setDescription(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..4a6ebf9e8360e893b780530ab1581ecc08f1e14c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.applicationlevel.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/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..4aa5dd945b6a081f8e55f4206b68a89db9290179 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF @@ -0,0 +1,26 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.functions.provider, + edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider, + edu.kit.ipd.descartes.mm.applicationlevel.provider, + edu.kit.ipd.descartes.mm.applicationlevel.repository.provider, + edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider, + edu.kit.ipd.descartes.mm.applicationlevel.system.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..86fde1e236e11f6c4dc311658422f3043fe630ec Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d6e42e4548dd882b82535ee0b1a8a743697dfca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..6153c8dfcbb5bf74fcfd547e96699c6daf8b6bca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ec7362a76edfdda6fd5c3df0fd86745b5428e12 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e487021af0d3dd87f258c62e08efcfd91ee8858 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..c565965f8fcf5d4e3dd4075d22170487bf8a19f4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0ac967d854aea6a6b29133ad69e8418e1bd5836 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..98a66f134f020b6ada9f93b8ac04713fd7b3c813 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..1010ed82e50374c77a8a0d88ea93f182fd9dfbb4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..822c544671bf421833386e40d0121d6dbb20b120 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d10d577799a0407a8112dbd0d90fb6a5b446af6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..5217be62850c1c0a3e804b9a394cfbe9da399dcd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..6153c8dfcbb5bf74fcfd547e96699c6daf8b6bca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ec7362a76edfdda6fd5c3df0fd86745b5428e12 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e487021af0d3dd87f258c62e08efcfd91ee8858 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..c565965f8fcf5d4e3dd4075d22170487bf8a19f4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0ac967d854aea6a6b29133ad69e8418e1bd5836 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..98a66f134f020b6ada9f93b8ac04713fd7b3c813 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..1010ed82e50374c77a8a0d88ea93f182fd9dfbb4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..822c544671bf421833386e40d0121d6dbb20b120 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d10d577799a0407a8112dbd0d90fb6a5b446af6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..5217be62850c1c0a3e804b9a394cfbe9da399dcd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a9f5b6928b2456bf9f6fc47ae2535889b5c0e62 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6bdc3869b057fbd574b64c38a85d8b80bc06f68 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..388fb52f1e2049dff174ff2a29e88a1d19c96cae Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif new file mode 100644 index 0000000000000000000000000000000000000000..08b62b9af29ea343d501ce0ba5c87e57af6c8edb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..561e20c16f11bcad56ed8fc8d1854ce82c8ad336 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca92866c7c7c0fb603c4d3e7cd4178d3fd27fa60 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif new file mode 100644 index 0000000000000000000000000000000000000000..180d9c7786e78f9e7162ba1d3b3c6730dc20bd9d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..38e8cc2ed101d225c6b37ca7a9dbcf5e850964d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..63dbadf56c1af14114366d6697983a0f50002383 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..e81c185d38b35ce49942524d635ef2c98a61fb79 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7a01deebad20b92a21abcdb077dceb55be93ac9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..43035507eedd309b9910045b7f9e30f0fc0f3463 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..e81c185d38b35ce49942524d635ef2c98a61fb79 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..05dc6202681644db2106daa7cdfb8c35be612215 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..1264e5e43bcba74cdc2b994b5378f2243933f837 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0b8b572db5e6bef45771670672f3610690329c5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..43703db98548be04b6058fcf85cb6e223b032b1a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f0855e9a49b9d3ca74e703d16a2accd5a05ded6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..e279dec056fbe4b50037776c91154dd8baa267cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif new file mode 100644 index 0000000000000000000000000000000000000000..b033b9d17bec867a04fbef0481c6e0bbd76f9000 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4524ef7000f8e6ecfb2f67c83526c5f3c0aeac3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4524ef7000f8e6ecfb2f67c83526c5f3c0aeac3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e87a232021b899090f3a47cc3af536add4cf89b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f3ec4289f0ec49374f81098c47632ef2e190133 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..841cd276e7788a1a7994230d719a45af6a2b99b4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..6678f806946a78b5bda02d4f339724d4fd792d8c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bcab8a03614b63044472de612bc36f82074150b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..74497a786ce594f5a4114a19cb448cd63fcbb6aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce1701a10bdf6a576719ae7252f8894d83302136 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..5cd8911d56a0f52a97021644bf3529931d5d4ee8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..16e695e34119d5cfb541d0c17bd25e312a5c5243 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bcab8a03614b63044472de612bc36f82074150b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ff2342489cd049bc6ec22b0b193ccebb5bc7821 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe10b8e7be48682bff854c1ea3c88372d2107ac0 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..c31e7a2bca96a72adbfc36bbcfb3e5ef83866ace Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..74497a786ce594f5a4114a19cb448cd63fcbb6aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcbb6405902ee778c70618c569442e794a8f1691 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe10b8e7be48682bff854c1ea3c88372d2107ac0 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..9975318d32d006b4fdbebe65db4de1d7c0d6ca68 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c0d080785c940302e6106e1ea8bf122d4ea11d9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif new file mode 100644 index 0000000000000000000000000000000000000000..027f1b702718a54abdad340f25abd1f6f0f8419f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif new file mode 100644 index 0000000000000000000000000000000000000000..027f1b702718a54abdad340f25abd1f6f0f8419f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..40e5eedcdbe510e8293fc0f4ba1eadebb701805c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..e268a9e4429250b626a3bc50a1dc7fb68295c2c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..f61f1983011465fb694356efbdca7452b94f81ce Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..a163af34f267844b121ad8f81ed8c357a9792b2e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..8966d1170904f3105bdc7267a8b67ad1b7c5b27c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b402369f15786aaffd55f7567877f6922f8e7c6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..7936184f76ea9bfbd5bb1ad60b6b19feefe52ec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd2a29ab6f1c79d7d460bd7181ff2ef6f96feb91 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d2a1980b82f0d9f03bc8b546babbfbfb34125da Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..8966d1170904f3105bdc7267a8b67ad1b7c5b27c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d46aad43a1956bd0ad1e024d11c53c591303e55 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b417a5937218fd30d9525e730a1d219cf169629 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..063a8534d3e95cf65b984bb4bbc2714b1433fc7c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b402369f15786aaffd55f7567877f6922f8e7c6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b2c0939bd6bdeca02531aa0e4aaea8e716a74d3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b417a5937218fd30d9525e730a1d219cf169629 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..59763f447c16316d2a761cf78707e3cb70653ef8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2b476631944606c6e65384e5e1bde5d12181dd5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..58e344bde6e67edf637479de523bc72b9485e0f3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f3140706575745c5706a629156c3511075bf5f5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif new file mode 100644 index 0000000000000000000000000000000000000000..4aaad5a4cd75b9a48b2e286f73426d1ba570b32f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a8a6d1e38bb13d6fa2ac65f9f78c8862a761a28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4b7df4075d485a77853612103ac0e598f8c9089 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee915d49e60111fe4f541f493f9a78e9230aee0a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif new file mode 100644 index 0000000000000000000000000000000000000000..262c4cbb9c21b8358e4ed47357f786c8b0e48963 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e4b0fb72072c8f6f9cb738d6722aa174db6a9e1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif new file mode 100644 index 0000000000000000000000000000000000000000..b71213d94286ac9d3bc5f69abad09e809000e962 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fe680b4db8abcd1b1258e91ccf7742c7713c13e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..29f98e74f3139e4f7fb6bb50c7d71dc24cb4a917 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..431ba00e4299e1710a110f10d373136688af69dc Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..3da98f774369141f4654a5bcd2bbcdb33eadef6e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..59e174d67ca4d29995fbe4aba5a797f67e4d0c98 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9364baeebd68fcf2f2dec0086bb32bb281d282 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..57dceaeb0fe00cb3a7cc923a564d7c886b03b40d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..4833facbbbe2e81dbf0a255d06a51ec1c7580442 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..16301136d1900ee7e82fcba9ce78e7211e6ee42d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..794791ad9f0ed2e2b2ef655bbc8a37934f7733e3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..94fcc9b70088516f072b5053844526c811159300 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..171603a7477054ce1620bba297b31810f90f07e9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..babb084892c4d14f28525b05b99b0ecd71c070ed Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf6dfd56a6d651e98ec7c60e9aec23851457687f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9364baeebd68fcf2f2dec0086bb32bb281d282 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..57dceaeb0fe00cb3a7cc923a564d7c886b03b40d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..4833facbbbe2e81dbf0a255d06a51ec1c7580442 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..16301136d1900ee7e82fcba9ce78e7211e6ee42d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..794791ad9f0ed2e2b2ef655bbc8a37934f7733e3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..94fcc9b70088516f072b5053844526c811159300 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..171603a7477054ce1620bba297b31810f90f07e9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..babb084892c4d14f28525b05b99b0ecd71c070ed Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf6dfd56a6d651e98ec7c60e9aec23851457687f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..28d7cba309af0031fd81430272f6a986c93062b8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..81bed353002b5878eb2af720dbd012ddc6101d2f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbd19ede270d3cac0415be640c33b63e4b122331 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..83824fbf1ff96492d11694251fc70b689c1e120a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..758dafb7cd607cb64fb329445c0d76e298381756 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e47629dccd1a3ceb230a3cbff1ef729b8ecbe01 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f85940ddf591c7f87372bfa13e6bee574e86224 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0805c47e8f1d91341ea911d3911dfd5a6d5855b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif new file mode 100644 index 0000000000000000000000000000000000000000..89d8767bf56c38fd34720d1577c45b61dc8817ca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b19f705944427e17a1e9dcb69b79d3466837f80 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec9a814da6c63196082a15ae263ced39edef2bcb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..064dd753f37e2cb898d8ce99bbaf2b968d7d6529 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif new file mode 100644 index 0000000000000000000000000000000000000000..381214b7725a0ba12c093604e1b4bf4c563cc604 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..396a4d777ec58bb09a606e602d9361edefe10f20 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif new file mode 100644 index 0000000000000000000000000000000000000000..b033b9d17bec867a04fbef0481c6e0bbd76f9000 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6f8fad0d56e14396397814d02ce5b92bc22fdd8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcfec345ba6a1d1598e5ae691736c4a5740a9df1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b78f56080a04681383139082715692470f6a348 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..776c80f6941746bf9722ccfc686f54495ade6cd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..961acc569eeb7e4c29325471ff08355036e604fd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7e2f30c26a2406b1f2f4addcc24ad457934b4de Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..e050d2d87343dbe95b13b8aec73571759a357b8b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3090830045ce6bf1b0f2f3100b6322a6e93d4eda Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..04aab9257b410114d814aa6c4591dbf71f20b349 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac141af672d33e778eb5683c7ada59c0c468c93 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..12ec17b7cf21b8fa552e66383c5d5ffc0f473328 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b42bd7b416b8f97563664cd539a9b6a73cfe0df Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8e38fd5b70a70ce1dcade2f13fa443cd5a5e6f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..6875c5d9205616b899b4aea3b33f6b9b41138bcf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..942aab31ac211bec367f60f03e1ff847bb4ba5aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..04aab9257b410114d814aa6c4591dbf71f20b349 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac141af672d33e778eb5683c7ada59c0c468c93 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..12ec17b7cf21b8fa552e66383c5d5ffc0f473328 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b42bd7b416b8f97563664cd539a9b6a73cfe0df Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8e38fd5b70a70ce1dcade2f13fa443cd5a5e6f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..6875c5d9205616b899b4aea3b33f6b9b41138bcf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..942aab31ac211bec367f60f03e1ff847bb4ba5aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..c05a41849689a719a2c5c69a55df481451fc980a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..385b36595f65a969076a1f527677d0e96cf79d51 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..af07ba12a2bdf3e480696fa3388fd266e8ad87c3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..908375cea5aebb62d3cd94b436b77ed1f6dbdbda Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..464e623af1bec3cb9169427f8df20d5108dce5cc Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..38d77bbab6c0d9efba0dd5521fc028ef50978388 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc34e45332d798cca5ae2b823a9ca1ab4c0954c0 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..af07ba12a2bdf3e480696fa3388fd266e8ad87c3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..3423b903ca3cf68d0fc3f574b8f2ed48e5e63820 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..959b8924b24669468c75f3fe603543e3d2c5cc08 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c7efc49c09f042f89d2bd727f3c1d9e788c1301 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif new file mode 100644 index 0000000000000000000000000000000000000000..908375cea5aebb62d3cd94b436b77ed1f6dbdbda Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d2f734b1512dac405e7b55fbdba0935aec78f4b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif new file mode 100644 index 0000000000000000000000000000000000000000..959b8924b24669468c75f3fe603543e3d2c5cc08 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f8189adbeb9c651b1e073744529291b07715292 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..883ce93b4303d7e81ab88f53bb8a3a3cf3eae2e6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8d381f0b327e1289745a7e8ea72b5cc7b782bfe Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a5c70cbd74c87cb3b1df383e0c242ede4660c3b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif new file mode 100644 index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif new file mode 100644 index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef56c140853105ca812564e9b12a76413c8c3fb9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif new file mode 100644 index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif new file mode 100644 index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..136e3b27269e84a045f9b528614d7dfd316e444c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif new file mode 100644 index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif new file mode 100644 index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif new file mode 100644 index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..be22463d2919f13a6345bad3166fc216c3f0942a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif new file mode 100644 index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif new file mode 100644 index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif new file mode 100644 index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif new file mode 100644 index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif new file mode 100644 index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif new file mode 100644 index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3643da048a40135b62eed5100cac5afe1ecef3c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea58a657dc0c287f6bb84e6cbd38008c96713db3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif new file mode 100644 index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif new file mode 100644 index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif new file mode 100644 index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif new file mode 100644 index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif new file mode 100644 index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif new file mode 100644 index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif new file mode 100644 index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif new file mode 100644 index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..7153164503c15a011612bca545dd19398cd4a8c5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties @@ -0,0 +1,319 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Applicationlevel 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_Expression_type = Expression +_UI_ExplicitDescription_type = Explicit Description +_UI_Function_type = Function +_UI_FormalParameter_type = Formal Parameter +_UI_Atom_type = Atom +_UI_IfElseExpression_type = If Else Expression +_UI_BinaryBooleanExpression_type = Binary Boolean Expression +_UI_UnaryBooleanExpression_type = Unary Boolean Expression +_UI_Comparison_type = Comparison +_UI_Term_type = Term +_UI_Product_type = Product +_UI_Power_type = Power +_UI_RandomVariable_type = Random Variable +_UI_ProbabilityFunction_type = Probability Function +_UI_Literal_type = Literal +_UI_BooleanLiteral_type = Boolean Literal +_UI_IntLiteral_type = Int Literal +_UI_DoubleLiteral_type = Double Literal +_UI_ProbabilityMassFunction_type = Probability Mass Function +_UI_SampleList_type = Sample List +_UI_Sample_type = Sample +_UI_DoubleSample_type = Double Sample +_UI_IntSample_type = Int Sample +_UI_BoolSample_type = Bool Sample +_UI_EnumSample_type = Enum Sample +_UI_IntSampleList_type = Int Sample List +_UI_DoubleSampleList_type = Double Sample List +_UI_BoolSampleList_type = Bool Sample List +_UI_EnumSampleList_type = Enum Sample List +_UI_ProbabilityDensityFunction_type = Probability Density Function +_UI_BoxedPDF_type = Boxed PDF +_UI_ContinuousSample_type = Continuous Sample +_UI_ContinuousPDF_type = Continuous PDF +_UI_NormalDistribution_type = Normal Distribution +_UI_ExponentialDistribution_type = Exponential Distribution +_UI_ModelVariable_type = Model Variable +_UI_ScopeSet_type = Scope Set +_UI_Scope_type = Scope +_UI_ControlFlowVariable_type = Control Flow Variable +_UI_InfluencedVariableReference_type = Influenced Variable Reference +_UI_InfluencingParameter_type = Influencing Parameter +_UI_ShadowParameter_type = Shadow Parameter +_UI_Relationship_type = Relationship +_UI_DependencyRelationship_type = Dependency Relationship +_UI_DependencyPropagationRelationship_type = Dependency Propagation Relationship +_UI_ComponentInstanceReference_type = Component Instance Reference +_UI_CallParameter_type = Call Parameter +_UI_ServiceInputParameter_type = Service Input Parameter +_UI_ExternalCallReturnParameter_type = External Call Return Parameter +_UI_ExternalCallParameter_type = External Call Parameter +_UI_Role_type = Role +_UI_InterfaceProvidingEntity_type = Interface Providing Entity +_UI_InterfaceRequiringEntity_type = Interface Requiring Entity +_UI_InterfaceProvidingRequiringEntity_type = Interface Providing Requiring Entity +_UI_Import_type = Import +_UI_InterfaceRequiringRole_type = Interface Requiring Role +_UI_InterfaceProvidingRole_type = Interface Providing Role +_UI_ComposedStructure_type = Composed Structure +_UI_ComposedProvidingRequiringEntity_type = Composed Providing Requiring Entity +_UI_Interface_type = Interface +_UI_Signature_type = Signature +_UI_Parameter_type = Parameter +_UI_Repository_type = Repository +_UI_RepositoryComponent_type = Component +_UI_BasicComponent_type = Basic Component +_UI_Semaphore_type = Semaphore +_UI_CompositeComponent_type = Composite Component +_UI_SubSystem_type = Sub System +_UI_DataType_type = Data Type +_UI_CollectionDataType_type = Collection Data Type +_UI_CompositeDataType_type = Composite Data Type +_UI_InnerDeclaration_type = Inner Declaration +_UI_PrimitiveDataType_type = Primitive Data Type +_UI_AssemblyContext_type = Assembly Context +_UI_AssemblyConnector_type = Assembly Connector +_UI_DelegationConnector_type = Delegation Connector +_UI_ProvidingDelegationConnector_type = Providing Delegation Connector +_UI_RequiringDelegationConnector_type = Requiring Delegation Connector +_UI_ServiceBehaviorAbstraction_type = Service Behavior Abstraction +_UI_FineGrainedBehavior_type = Fine Grained Behavior +_UI_ComponentInternalBehavior_type = Component Internal Behavior +_UI_AbstractAction_type = Abstract Action +_UI_AcquireAction_type = Acquire Action +_UI_ReleaseAction_type = Release Action +_UI_InternalAction_type = Internal Action +_UI_ForkAction_type = Fork Action +_UI_BranchAction_type = Branch Action +_UI_BranchProbabilities_type = Branch Probabilities +_UI_LoopAction_type = Loop Action +_UI_LoopIterationCount_type = Loop Iteration Count +_UI_ExternalCallAction_type = External Call Action +_UI_ExternalCall_type = External Call +_UI_ResourceDemand_type = Resource Demand +_UI_CoarseGrainedBehavior_type = Coarse Grained Behavior +_UI_ExternalCallFrequency_type = External Call Frequency +_UI_CallFrequency_type = Call Frequency +_UI_BlackBoxBehavior_type = Black Box Behavior +_UI_ResponseTime_type = Response Time +_UI_System_type = System +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_ExplicitDescription_specification_feature = Specification +_UI_ExplicitDescription_expression_feature = Expression +_UI_Function_name_feature = Name +_UI_Function_parameters_feature = Parameters +_UI_FormalParameter_value_feature = Value +_UI_IfElseExpression_condition_feature = Condition +_UI_IfElseExpression_trueExp_feature = True Exp +_UI_IfElseExpression_falseExp_feature = False Exp +_UI_BinaryBooleanExpression_left_feature = Left +_UI_BinaryBooleanExpression_operation_feature = Operation +_UI_BinaryBooleanExpression_right_feature = Right +_UI_UnaryBooleanExpression_inner_feature = Inner +_UI_Comparison_left_feature = Left +_UI_Comparison_operation_feature = Operation +_UI_Comparison_right_feature = Right +_UI_Term_left_feature = Left +_UI_Term_operation_feature = Operation +_UI_Term_right_feature = Right +_UI_Product_left_feature = Left +_UI_Product_operation_feature = Operation +_UI_Product_right_feature = Right +_UI_Power_base_feature = Base +_UI_Power_exponent_feature = Exponent +_UI_RandomVariable_probFunction_feature = Prob Function +_UI_BooleanLiteral_value_feature = Value +_UI_IntLiteral_value_feature = Value +_UI_DoubleLiteral_value_feature = Value +_UI_ProbabilityMassFunction_samples_feature = Samples +_UI_DoubleSample_value_feature = Value +_UI_DoubleSample_probability_feature = Probability +_UI_IntSample_value_feature = Value +_UI_IntSample_probability_feature = Probability +_UI_BoolSample_value_feature = Value +_UI_BoolSample_probability_feature = Probability +_UI_EnumSample_value_feature = Value +_UI_EnumSample_probability_feature = Probability +_UI_IntSampleList_items_feature = Items +_UI_DoubleSampleList_items_feature = Items +_UI_BoolSampleList_items_feature = Items +_UI_EnumSampleList_items_feature = Items +_UI_BoxedPDF_sample_feature = Sample +_UI_ContinuousSample_value_feature = Value +_UI_ContinuousSample_probability_feature = Probability +_UI_NormalDistribution_mu_feature = Mu +_UI_NormalDistribution_sigma_feature = Sigma +_UI_ExponentialDistribution_rate_feature = Rate +_UI_ModelVariable_scopeSet_feature = Scope Set +_UI_ScopeSet_scope_feature = Scope +_UI_Scope_scope_feature = Scope +_UI_ControlFlowVariable_characterization_feature = Characterization +_UI_ControlFlowVariable_explicitDescription_feature = Explicit Description +_UI_InfluencedVariableReference_getInfluencedVariable_feature = Get Influenced Variable +_UI_InfluencedVariableReference_controlFlowVariable_feature = Control Flow Variable +_UI_InfluencedVariableReference_resourceDemand_feature = Resource Demand +_UI_InfluencedVariableReference_responseTime_feature = Response Time +_UI_InfluencingParameter_behavior_feature = Behavior +_UI_ShadowParameter_name_feature = Name +_UI_ShadowParameter_description_feature = Description +_UI_Relationship_surroundingEntity_feature = Surrounding Entity +_UI_Relationship_characterization_feature = Characterization +_UI_Relationship_explicitDescription_feature = Explicit Description +_UI_DependencyRelationship_dependent_feature = Dependent +_UI_DependencyRelationship_independent_feature = Independent +_UI_DependencyPropagationRelationship_independent_feature = Independent +_UI_DependencyPropagationRelationship_dependent_feature = Dependent +_UI_DependencyPropagationRelationship_independentComponentInstanceReferences_feature = Independent Component Instance References +_UI_DependencyPropagationRelationship_dependentComponentInstanceReference_feature = Dependent Component Instance Reference +_UI_ComponentInstanceReference_assemblies_feature = Assemblies +_UI_CallParameter_characterization_feature = Characterization +_UI_CallParameter_signature_feature = Signature +_UI_CallParameter_parameter_feature = Parameter +_UI_CallParameter_returnType_feature = Return Type +_UI_ServiceInputParameter_providingRole_feature = Providing Role +_UI_ExternalCallReturnParameter_externalCall_feature = External Call +_UI_ExternalCallParameter_externallCall_feature = Externall Call +_UI_InterfaceProvidingEntity_interfaceProvidingRoles_feature = Interface Providing Roles +_UI_InterfaceProvidingEntity_blackBoxBehavior_feature = Black Box Behavior +_UI_InterfaceRequiringEntity_interfaceRequiringRoles_feature = Interface Requiring Roles +_UI_InterfaceProvidingRequiringEntity_coarseGrainedBehavior_feature = Coarse Grained Behavior +_UI_InterfaceProvidingRequiringEntity_relationships_feature = Relationships +_UI_Import_importURI_feature = Import URI +_UI_Import_repository_feature = Repository +_UI_InterfaceRequiringRole_interfaceRequiringEntity_feature = Interface Requiring Entity +_UI_InterfaceRequiringRole_interface_feature = Interface +_UI_InterfaceProvidingRole_interfaceProvidingEntity_feature = Interface Providing Entity +_UI_InterfaceProvidingRole_interface_feature = Interface +_UI_ComposedStructure_assemblyContexts_feature = Assembly Contexts +_UI_ComposedStructure_assemblyConnectors_feature = Assembly Connectors +_UI_ComposedStructure_providingDelegationConnectors_feature = Providing Delegation Connectors +_UI_ComposedStructure_requiringDelegationConnectors_feature = Requiring Delegation Connectors +_UI_Interface_repository_feature = Repository +_UI_Interface_parentInterfaces_feature = Parent Interfaces +_UI_Interface_signatures_feature = Signatures +_UI_Signature_parameters_feature = Parameters +_UI_Signature_returnType_feature = Return Type +_UI_Signature_interface_feature = Interface +_UI_Parameter_modifier_feature = Modifier +_UI_Parameter_dataType_feature = Data Type +_UI_Repository_imports_feature = Imports +_UI_Repository_datatypes_feature = Datatypes +_UI_Repository_interfaces_feature = Interfaces +_UI_Repository_components_feature = Components +_UI_RepositoryComponent_repository_feature = Repository +_UI_BasicComponent_semaphores_feature = Semaphores +_UI_BasicComponent_fineGrainedBehavior_feature = Fine Grained Behavior +_UI_Semaphore_capacity_feature = Capacity +_UI_DataType_repository_feature = Repository +_UI_CollectionDataType_innerType_feature = Inner Type +_UI_CompositeDataType_innerDeclarations_feature = Inner Declarations +_UI_CompositeDataType_parentTypes_feature = Parent Types +_UI_InnerDeclaration_dataType_feature = Data Type +_UI_InnerDeclaration_compositeDataType_feature = Composite Data Type +_UI_PrimitiveDataType_type_feature = Type +_UI_AssemblyContext_parentStructure_feature = Parent Structure +_UI_AssemblyContext_encapsulatedComponent_feature = Encapsulated Component +_UI_AssemblyConnector_parentStructure_feature = Parent Structure +_UI_AssemblyConnector_interfaceRequiringRole_feature = Interface Requiring Role +_UI_AssemblyConnector_interfaceProvidingRole_feature = Interface Providing Role +_UI_AssemblyConnector_providingAssemblyContext_feature = Providing Assembly Context +_UI_AssemblyConnector_requiringAssemblyContext_feature = Requiring Assembly Context +_UI_DelegationConnector_assemblyContext_feature = Assembly Context +_UI_ProvidingDelegationConnector_parentStructure_feature = Parent Structure +_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature = Inner Interface Providing Role +_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature = Outer Interface Providing Role +_UI_RequiringDelegationConnector_parentStructure_feature = Parent Structure +_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature = Inner Interface Requiring Role +_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature = Outer Interface Requiring Role +_UI_ServiceBehaviorAbstraction_describedSignature_feature = Described Signature +_UI_ServiceBehaviorAbstraction_influencingParameter_feature = Influencing Parameter +_UI_ServiceBehaviorAbstraction_influencedVariableReference_feature = Influenced Variable Reference +_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature = Interface Providing Role +_UI_FineGrainedBehavior_basicComponent_feature = Basic Component +_UI_FineGrainedBehavior_behavior_feature = Behavior +_UI_ComponentInternalBehavior_actions_feature = Actions +_UI_AbstractAction_parentBehavior_feature = Parent Behavior +_UI_AcquireAction_semaphore_feature = Semaphore +_UI_ReleaseAction_semaphore_feature = Semaphore +_UI_InternalAction_resourceDemand_feature = Resource Demand +_UI_ForkAction_withSynchronizationBarrier_feature = With Synchronization Barrier +_UI_ForkAction_forkedBehaviors_feature = Forked Behaviors +_UI_BranchAction_branches_feature = Branches +_UI_BranchAction_branchProbabilities_feature = Branch Probabilities +_UI_BranchProbabilities_branchAction_feature = Branch Action +_UI_LoopAction_loopBodyBehavior_feature = Loop Body Behavior +_UI_LoopAction_loopIterationCount_feature = Loop Iteration Count +_UI_LoopIterationCount_loopAction_feature = Loop Action +_UI_ExternalCallAction_externalCall_feature = External Call +_UI_ExternalCall_signature_feature = Signature +_UI_ExternalCall_interfaceRequiringRole_feature = Interface Requiring Role +_UI_ResourceDemand_internalAction_feature = Internal Action +_UI_ResourceDemand_coarseGrainedBehavior_feature = Coarse Grained Behavior +_UI_ResourceDemand_resourceType_feature = Resource Type +_UI_ResourceDemand_characterization_feature = Characterization +_UI_ResourceDemand_explicitDescription_feature = Explicit Description +_UI_CoarseGrainedBehavior_describedEntity_feature = Described Entity +_UI_CoarseGrainedBehavior_externalCallFrequency_feature = External Call Frequency +_UI_CoarseGrainedBehavior_resourceDemand_feature = Resource Demand +_UI_ExternalCallFrequency_coarseGrainedBehavior_feature = Coarse Grained Behavior +_UI_ExternalCallFrequency_externalCall_feature = External Call +_UI_ExternalCallFrequency_frequency_feature = Frequency +_UI_CallFrequency_externalCallFrequency_feature = External Call Frequency +_UI_BlackBoxBehavior_describedEntity_feature = Described Entity +_UI_BlackBoxBehavior_responseTime_feature = Response Time +_UI_ResponseTime_blackBoxBehavior_feature = Black Box Behavior +_UI_ResponseTime_characterization_feature = Characterization +_UI_ResponseTime_explicitDescription_feature = Explicit Description +_UI_Unknown_feature = Unspecified + +_UI_ProductOperation_MULT_literal = MULT +_UI_ProductOperation_DIV_literal = DIV +_UI_ProductOperation_MOD_literal = MOD +_UI_TermOperation_ADD_literal = ADD +_UI_TermOperation_SUB_literal = SUB +_UI_CompareOperation_GREATER_literal = GREATER +_UI_CompareOperation_LESS_literal = LESS +_UI_CompareOperation_EQUALS_literal = EQUALS +_UI_CompareOperation_NOTEQUAL_literal = NOTEQUAL +_UI_CompareOperation_LESSEQUAL_literal = LESSEQUAL +_UI_CompareOperation_GREATEREQUAL_literal = GREATEREQUAL +_UI_BooleanOperation_AND_literal = AND +_UI_BooleanOperation_OR_literal = OR +_UI_BooleanOperation_XOR_literal = XOR +_UI_ModelVariableCharacterizationType_EMPIRICAL_literal = EMPIRICAL +_UI_ModelVariableCharacterizationType_EXPLICIT_literal = EXPLICIT +_UI_RelationshipCharacterizationType_EMPIRICAL_literal = EMPIRICAL +_UI_RelationshipCharacterizationType_EXPLICIT_literal = EXPLICIT +_UI_RelationshipCharacterizationType_IDENTITY_literal = IDENTITY +_UI_ParameterCharacterizationType_VALUE_literal = VALUE +_UI_ParameterCharacterizationType_NUMBER_OF_ELEMENTS_literal = NUMBER_OF_ELEMENTS +_UI_ParameterModifier_NONE_literal = NONE +_UI_ParameterModifier_IN_literal = IN +_UI_ParameterModifier_OUT_literal = OUT +_UI_ParameterModifier_INOUT_literal = INOUT +_UI_PrimitiveTypeEnum_INT_literal = INT +_UI_PrimitiveTypeEnum_STRING_literal = STRING +_UI_PrimitiveTypeEnum_BOOL_literal = BOOL +_UI_PrimitiveTypeEnum_DOUBLE_literal = DOUBLE +_UI_PrimitiveTypeEnum_CHAR_literal = CHAR +_UI_PrimitiveTypeEnum_BYTE_literal = BYTE +_UI_PrimitiveTypeEnum_LONG_literal = LONG +_UI_RandomVariable_specification_feature = Specification +_UI_InfluencedVariableReference_influencedVariable_feature = Influenced Variable diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..d549ac397970ad19791225f4038ba7ee0e229eb4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated applicationlevel --> + <factory + uri="http://www.descartes-research.net/metamodel/functions/0.1" + class="edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated applicationlevel --> + <factory + uri="http://www.descartes-research.net/metamodel/parameterdependencies/0.1" + class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated applicationlevel --> + <factory + uri="http://www.descartes-research.net/metamodel/repository/0.1" + class="edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated applicationlevel --> + <factory + uri="http://www.descartes-research.net/metamodel/servicebehavior/0.1" + class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated applicationlevel --> + <factory + uri="http://www.descartes-research.net/metamodel/system/0.1" + class="edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..654c49f532307e4cd9f0aacadb6be9a5a768a539 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e340404587760c71cb4efefbf92eaccb1a605ca1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java @@ -0,0 +1,84 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Atom} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AtomItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AtomItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Atom_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..85ba457fd882179a2b63c6144b352c8963f29df6 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java @@ -0,0 +1,356 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanOperation; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BinaryBooleanExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BinaryBooleanExpressionItemProvider(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); + + addOperationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operation feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOperationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BinaryBooleanExpression_operation_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BinaryBooleanExpression_operation_feature", "_UI_BinaryBooleanExpression_type"), + FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__OPERATION, + 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(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT); + childrenFeatures.add(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT); + } + 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 BinaryBooleanExpression.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BinaryBooleanExpression")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BooleanOperation labelValue = ((BinaryBooleanExpression)object).getOperation(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_BinaryBooleanExpression_type") : + getString("_UI_BinaryBooleanExpression_type") + " " + 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); + + switch (notification.getFeatureID(BinaryBooleanExpression.class)) { + case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__OPERATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__LEFT: + case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__RIGHT: + 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 + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT || + childFeature == FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3470542708ebcb5eb33cd8be0851427c425a1645 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java @@ -0,0 +1,155 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BoolSampleItemProvider extends SampleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BoolSampleItemProvider(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); + + addValuePropertyDescriptor(object); + addProbabilityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BoolSample_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BoolSample_value_feature", "_UI_BoolSample_type"), + FunctionsPackage.Literals.BOOL_SAMPLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Probability feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProbabilityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BoolSample_probability_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BoolSample_probability_feature", "_UI_BoolSample_type"), + FunctionsPackage.Literals.BOOL_SAMPLE__PROBABILITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BoolSample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BoolSample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BoolSample boolSample = (BoolSample)object; + return getString("_UI_BoolSample_type") + " " + boolSample.isValue(); + } + + + /** + * 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(BoolSample.class)) { + case FunctionsPackage.BOOL_SAMPLE__VALUE: + case FunctionsPackage.BOOL_SAMPLE__PROBABILITY: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ff08b6a86e8e1be71214bbb183d1eacfa5940934 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BoolSampleListItemProvider extends SampleListItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BoolSampleListItemProvider(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(FunctionsPackage.Literals.BOOL_SAMPLE_LIST__ITEMS); + } + 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 BoolSampleList.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BoolSampleList")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BoolSampleList_type"); + } + + + /** + * 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(BoolSampleList.class)) { + case FunctionsPackage.BOOL_SAMPLE_LIST__ITEMS: + 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 + (FunctionsPackage.Literals.BOOL_SAMPLE_LIST__ITEMS, + FunctionsFactory.eINSTANCE.createBoolSample())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..eb13feb46efe31b5740270cbcabcac63ab10f29b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java @@ -0,0 +1,131 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BooleanLiteralItemProvider extends LiteralItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BooleanLiteralItemProvider(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); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BooleanLiteral_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BooleanLiteral_value_feature", "_UI_BooleanLiteral_type"), + FunctionsPackage.Literals.BOOLEAN_LITERAL__VALUE, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BooleanLiteral.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanLiteral")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BooleanLiteral booleanLiteral = (BooleanLiteral)object; + return getString("_UI_BooleanLiteral_type") + " " + booleanLiteral.isValue(); + } + + + /** + * 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(BooleanLiteral.class)) { + case FunctionsPackage.BOOLEAN_LITERAL__VALUE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..655fc4c15db993213de085b7feffa663553cef4f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BoxedPDFItemProvider extends ProbabilityDensityFunctionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BoxedPDFItemProvider(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(FunctionsPackage.Literals.BOXED_PDF__SAMPLE); + } + 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 BoxedPDF.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BoxedPDF")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BoxedPDF_type"); + } + + + /** + * 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(BoxedPDF.class)) { + case FunctionsPackage.BOXED_PDF__SAMPLE: + 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 + (FunctionsPackage.Literals.BOXED_PDF__SAMPLE, + FunctionsFactory.eINSTANCE.createContinuousSample())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..1e9b3c00857b76517c033e181b6cd3d7e32737ad --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java @@ -0,0 +1,345 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.CompareOperation; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComparisonItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComparisonItemProvider(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); + + addOperationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operation feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOperationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Comparison_operation_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Comparison_operation_feature", "_UI_Comparison_type"), + FunctionsPackage.Literals.COMPARISON__OPERATION, + 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(FunctionsPackage.Literals.COMPARISON__LEFT); + childrenFeatures.add(FunctionsPackage.Literals.COMPARISON__RIGHT); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + CompareOperation labelValue = ((Comparison)object).getOperation(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_Comparison_type") : + getString("_UI_Comparison_type") + " " + 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); + + switch (notification.getFeatureID(Comparison.class)) { + case FunctionsPackage.COMPARISON__OPERATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case FunctionsPackage.COMPARISON__LEFT: + case FunctionsPackage.COMPARISON__RIGHT: + 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 + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__LEFT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.COMPARISON__RIGHT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.COMPARISON__LEFT || + childFeature == FunctionsPackage.Literals.COMPARISON__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0bbbc879b2ab4e634607d6c51476f52263646319 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java @@ -0,0 +1,95 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousPDF} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContinuousPDFItemProvider extends ProbabilityDensityFunctionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContinuousPDFItemProvider(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 ContinuousPDF.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ContinuousPDF")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ContinuousPDF_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..74d76851bc2df39b28097977ba13e62cfc213878 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java @@ -0,0 +1,188 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContinuousSampleItemProvider + 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 ContinuousSampleItemProvider(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); + + addValuePropertyDescriptor(object); + addProbabilityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ContinuousSample_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ContinuousSample_value_feature", "_UI_ContinuousSample_type"), + FunctionsPackage.Literals.CONTINUOUS_SAMPLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Probability feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProbabilityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ContinuousSample_probability_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ContinuousSample_probability_feature", "_UI_ContinuousSample_type"), + FunctionsPackage.Literals.CONTINUOUS_SAMPLE__PROBABILITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns ContinuousSample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ContinuousSample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigDecimal labelValue = ((ContinuousSample)object).getValue(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ContinuousSample_type") : + getString("_UI_ContinuousSample_type") + " " + 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); + + switch (notification.getFeatureID(ContinuousSample.class)) { + case FunctionsPackage.CONTINUOUS_SAMPLE__VALUE: + case FunctionsPackage.CONTINUOUS_SAMPLE__PROBABILITY: + 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 ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9e38034eec63d9b39241d1b03e615d51659774ae --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java @@ -0,0 +1,136 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DoubleLiteralItemProvider extends LiteralItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DoubleLiteralItemProvider(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); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DoubleLiteral_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DoubleLiteral_value_feature", "_UI_DoubleLiteral_type"), + FunctionsPackage.Literals.DOUBLE_LITERAL__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns DoubleLiteral.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleLiteral")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigDecimal labelValue = ((DoubleLiteral)object).getValue(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_DoubleLiteral_type") : + getString("_UI_DoubleLiteral_type") + " " + 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); + + switch (notification.getFeatureID(DoubleLiteral.class)) { + case FunctionsPackage.DOUBLE_LITERAL__VALUE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..490c8854d22d05bdcbe755df58c68add2e2a1a99 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DoubleSampleItemProvider extends SampleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DoubleSampleItemProvider(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); + + addValuePropertyDescriptor(object); + addProbabilityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DoubleSample_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DoubleSample_value_feature", "_UI_DoubleSample_type"), + FunctionsPackage.Literals.DOUBLE_SAMPLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Probability feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProbabilityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DoubleSample_probability_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DoubleSample_probability_feature", "_UI_DoubleSample_type"), + FunctionsPackage.Literals.DOUBLE_SAMPLE__PROBABILITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns DoubleSample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleSample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigDecimal labelValue = ((DoubleSample)object).getValue(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_DoubleSample_type") : + getString("_UI_DoubleSample_type") + " " + 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); + + switch (notification.getFeatureID(DoubleSample.class)) { + case FunctionsPackage.DOUBLE_SAMPLE__VALUE: + case FunctionsPackage.DOUBLE_SAMPLE__PROBABILITY: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c5333af4042d85e5c984b79ce5854baa5dcc39e5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DoubleSampleListItemProvider extends SampleListItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DoubleSampleListItemProvider(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(FunctionsPackage.Literals.DOUBLE_SAMPLE_LIST__ITEMS); + } + 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 DoubleSampleList.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleSampleList")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_DoubleSampleList_type"); + } + + + /** + * 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(DoubleSampleList.class)) { + case FunctionsPackage.DOUBLE_SAMPLE_LIST__ITEMS: + 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 + (FunctionsPackage.Literals.DOUBLE_SAMPLE_LIST__ITEMS, + FunctionsFactory.eINSTANCE.createDoubleSample())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a72511257312c5a1dce3be31eac95cb89ac8eafe --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java @@ -0,0 +1,157 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EnumSampleItemProvider extends SampleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EnumSampleItemProvider(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); + + addValuePropertyDescriptor(object); + addProbabilityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_EnumSample_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_EnumSample_value_feature", "_UI_EnumSample_type"), + FunctionsPackage.Literals.ENUM_SAMPLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Probability feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProbabilityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_EnumSample_probability_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_EnumSample_probability_feature", "_UI_EnumSample_type"), + FunctionsPackage.Literals.ENUM_SAMPLE__PROBABILITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns EnumSample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/EnumSample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((EnumSample)object).getValue(); + return label == null || label.length() == 0 ? + getString("_UI_EnumSample_type") : + getString("_UI_EnumSample_type") + " " + 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); + + switch (notification.getFeatureID(EnumSample.class)) { + case FunctionsPackage.ENUM_SAMPLE__VALUE: + case FunctionsPackage.ENUM_SAMPLE__PROBABILITY: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..aba11052b06c1ffec86798138e573dfad147a7d7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EnumSampleListItemProvider extends SampleListItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EnumSampleListItemProvider(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(FunctionsPackage.Literals.ENUM_SAMPLE_LIST__ITEMS); + } + 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 EnumSampleList.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/EnumSampleList")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_EnumSampleList_type"); + } + + + /** + * 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(EnumSampleList.class)) { + case FunctionsPackage.ENUM_SAMPLE_LIST__ITEMS: + 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 + (FunctionsPackage.Literals.ENUM_SAMPLE_LIST__ITEMS, + FunctionsFactory.eINSTANCE.createEnumSample())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..f61bedc7574571de7f330f947324c657b13a48bb --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java @@ -0,0 +1,248 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExplicitDescriptionItemProvider + 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 ExplicitDescriptionItemProvider(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(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION); + } + 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 ExplicitDescription.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExplicitDescription")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ExplicitDescription_type"); + } + + + /** + * 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(ExplicitDescription.class)) { + case FunctionsPackage.EXPLICIT_DESCRIPTION__EXPRESSION: + 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 + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a3689b9896f4513104322e5cda96c33e3b9dc75e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java @@ -0,0 +1,136 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExponentialDistributionItemProvider extends ContinuousPDFItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExponentialDistributionItemProvider(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); + + addRatePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Rate feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRatePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ExponentialDistribution_rate_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ExponentialDistribution_rate_feature", "_UI_ExponentialDistribution_type"), + FunctionsPackage.Literals.EXPONENTIAL_DISTRIBUTION__RATE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns ExponentialDistribution.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExponentialDistribution")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigDecimal labelValue = ((ExponentialDistribution)object).getRate(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ExponentialDistribution_type") : + getString("_UI_ExponentialDistribution_type") + " " + 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); + + switch (notification.getFeatureID(ExponentialDistribution.class)) { + case FunctionsPackage.EXPONENTIAL_DISTRIBUTION__RATE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..30a30a2a3803ca78cdbbca6dcd22595417581262 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java @@ -0,0 +1,112 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Expression} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExpressionItemProvider + 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 ExpressionItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Expression_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..39374b701cd8a4808130cef4d644f5216f1e6595 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java @@ -0,0 +1,133 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FormalParameterItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FormalParameterItemProvider(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); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_FormalParameter_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FormalParameter_value_feature", "_UI_FormalParameter_type"), + FunctionsPackage.Literals.FORMAL_PARAMETER__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns FormalParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/FormalParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((FormalParameter)object).getValue(); + return label == null || label.length() == 0 ? + getString("_UI_FormalParameter_type") : + getString("_UI_FormalParameter_type") + " " + 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); + + switch (notification.getFeatureID(FormalParameter.class)) { + case FunctionsPackage.FORMAL_PARAMETER__VALUE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3702f142f129bc5f8ec15d5688b2b2ebbbb4b2c5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java @@ -0,0 +1,249 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.Function; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FunctionItemProvider extends AtomItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FunctionItemProvider(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_Function_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Function_name_feature", "_UI_Function_type"), + FunctionsPackage.Literals.FUNCTION__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(FunctionsPackage.Literals.FUNCTION__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 Function.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Function")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Function)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Function_type") : + getString("_UI_Function_type") + " " + 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); + + switch (notification.getFeatureID(Function.class)) { + case FunctionsPackage.FUNCTION__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case FunctionsPackage.FUNCTION__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 + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.FUNCTION__PARAMETERS, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..e462c1998fcf676208f64417393adc02698ef617 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java @@ -0,0 +1,824 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.util.FunctionsAdapterFactory; + +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; + +/** + * 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 FunctionsItemProviderAdapterFactory extends FunctionsAdapterFactory 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 FunctionsItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExplicitDescriptionItemProvider explicitDescriptionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExplicitDescriptionAdapter() { + if (explicitDescriptionItemProvider == null) { + explicitDescriptionItemProvider = new ExplicitDescriptionItemProvider(this); + } + + return explicitDescriptionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FunctionItemProvider functionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFunctionAdapter() { + if (functionItemProvider == null) { + functionItemProvider = new FunctionItemProvider(this); + } + + return functionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FormalParameterItemProvider formalParameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFormalParameterAdapter() { + if (formalParameterItemProvider == null) { + formalParameterItemProvider = new FormalParameterItemProvider(this); + } + + return formalParameterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IfElseExpressionItemProvider ifElseExpressionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createIfElseExpressionAdapter() { + if (ifElseExpressionItemProvider == null) { + ifElseExpressionItemProvider = new IfElseExpressionItemProvider(this); + } + + return ifElseExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BinaryBooleanExpressionItemProvider binaryBooleanExpressionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBinaryBooleanExpressionAdapter() { + if (binaryBooleanExpressionItemProvider == null) { + binaryBooleanExpressionItemProvider = new BinaryBooleanExpressionItemProvider(this); + } + + return binaryBooleanExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UnaryBooleanExpressionItemProvider unaryBooleanExpressionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createUnaryBooleanExpressionAdapter() { + if (unaryBooleanExpressionItemProvider == null) { + unaryBooleanExpressionItemProvider = new UnaryBooleanExpressionItemProvider(this); + } + + return unaryBooleanExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComparisonItemProvider comparisonItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createComparisonAdapter() { + if (comparisonItemProvider == null) { + comparisonItemProvider = new ComparisonItemProvider(this); + } + + return comparisonItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TermItemProvider termItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTermAdapter() { + if (termItemProvider == null) { + termItemProvider = new TermItemProvider(this); + } + + return termItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ProductItemProvider productItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createProductAdapter() { + if (productItemProvider == null) { + productItemProvider = new ProductItemProvider(this); + } + + return productItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PowerItemProvider powerItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPowerAdapter() { + if (powerItemProvider == null) { + powerItemProvider = new PowerItemProvider(this); + } + + return powerItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RandomVariableItemProvider randomVariableItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createRandomVariableAdapter() { + if (randomVariableItemProvider == null) { + randomVariableItemProvider = new RandomVariableItemProvider(this); + } + + return randomVariableItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BooleanLiteralItemProvider booleanLiteralItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBooleanLiteralAdapter() { + if (booleanLiteralItemProvider == null) { + booleanLiteralItemProvider = new BooleanLiteralItemProvider(this); + } + + return booleanLiteralItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IntLiteralItemProvider intLiteralItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createIntLiteralAdapter() { + if (intLiteralItemProvider == null) { + intLiteralItemProvider = new IntLiteralItemProvider(this); + } + + return intLiteralItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DoubleLiteralItemProvider doubleLiteralItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDoubleLiteralAdapter() { + if (doubleLiteralItemProvider == null) { + doubleLiteralItemProvider = new DoubleLiteralItemProvider(this); + } + + return doubleLiteralItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ProbabilityMassFunctionItemProvider probabilityMassFunctionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createProbabilityMassFunctionAdapter() { + if (probabilityMassFunctionItemProvider == null) { + probabilityMassFunctionItemProvider = new ProbabilityMassFunctionItemProvider(this); + } + + return probabilityMassFunctionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DoubleSampleItemProvider doubleSampleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDoubleSampleAdapter() { + if (doubleSampleItemProvider == null) { + doubleSampleItemProvider = new DoubleSampleItemProvider(this); + } + + return doubleSampleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IntSampleItemProvider intSampleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createIntSampleAdapter() { + if (intSampleItemProvider == null) { + intSampleItemProvider = new IntSampleItemProvider(this); + } + + return intSampleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BoolSampleItemProvider boolSampleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBoolSampleAdapter() { + if (boolSampleItemProvider == null) { + boolSampleItemProvider = new BoolSampleItemProvider(this); + } + + return boolSampleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EnumSampleItemProvider enumSampleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createEnumSampleAdapter() { + if (enumSampleItemProvider == null) { + enumSampleItemProvider = new EnumSampleItemProvider(this); + } + + return enumSampleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IntSampleListItemProvider intSampleListItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createIntSampleListAdapter() { + if (intSampleListItemProvider == null) { + intSampleListItemProvider = new IntSampleListItemProvider(this); + } + + return intSampleListItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DoubleSampleListItemProvider doubleSampleListItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDoubleSampleListAdapter() { + if (doubleSampleListItemProvider == null) { + doubleSampleListItemProvider = new DoubleSampleListItemProvider(this); + } + + return doubleSampleListItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BoolSampleListItemProvider boolSampleListItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBoolSampleListAdapter() { + if (boolSampleListItemProvider == null) { + boolSampleListItemProvider = new BoolSampleListItemProvider(this); + } + + return boolSampleListItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EnumSampleListItemProvider enumSampleListItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createEnumSampleListAdapter() { + if (enumSampleListItemProvider == null) { + enumSampleListItemProvider = new EnumSampleListItemProvider(this); + } + + return enumSampleListItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BoxedPDFItemProvider boxedPDFItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBoxedPDFAdapter() { + if (boxedPDFItemProvider == null) { + boxedPDFItemProvider = new BoxedPDFItemProvider(this); + } + + return boxedPDFItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContinuousSampleItemProvider continuousSampleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createContinuousSampleAdapter() { + if (continuousSampleItemProvider == null) { + continuousSampleItemProvider = new ContinuousSampleItemProvider(this); + } + + return continuousSampleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected NormalDistributionItemProvider normalDistributionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createNormalDistributionAdapter() { + if (normalDistributionItemProvider == null) { + normalDistributionItemProvider = new NormalDistributionItemProvider(this); + } + + return normalDistributionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExponentialDistributionItemProvider exponentialDistributionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExponentialDistributionAdapter() { + if (exponentialDistributionItemProvider == null) { + exponentialDistributionItemProvider = new ExponentialDistributionItemProvider(this); + } + + return exponentialDistributionItemProvider; + } + + /** + * 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 (explicitDescriptionItemProvider != null) explicitDescriptionItemProvider.dispose(); + if (functionItemProvider != null) functionItemProvider.dispose(); + if (formalParameterItemProvider != null) formalParameterItemProvider.dispose(); + if (ifElseExpressionItemProvider != null) ifElseExpressionItemProvider.dispose(); + if (binaryBooleanExpressionItemProvider != null) binaryBooleanExpressionItemProvider.dispose(); + if (unaryBooleanExpressionItemProvider != null) unaryBooleanExpressionItemProvider.dispose(); + if (comparisonItemProvider != null) comparisonItemProvider.dispose(); + if (termItemProvider != null) termItemProvider.dispose(); + if (productItemProvider != null) productItemProvider.dispose(); + if (powerItemProvider != null) powerItemProvider.dispose(); + if (randomVariableItemProvider != null) randomVariableItemProvider.dispose(); + if (booleanLiteralItemProvider != null) booleanLiteralItemProvider.dispose(); + if (intLiteralItemProvider != null) intLiteralItemProvider.dispose(); + if (doubleLiteralItemProvider != null) doubleLiteralItemProvider.dispose(); + if (probabilityMassFunctionItemProvider != null) probabilityMassFunctionItemProvider.dispose(); + if (doubleSampleItemProvider != null) doubleSampleItemProvider.dispose(); + if (intSampleItemProvider != null) intSampleItemProvider.dispose(); + if (boolSampleItemProvider != null) boolSampleItemProvider.dispose(); + if (enumSampleItemProvider != null) enumSampleItemProvider.dispose(); + if (intSampleListItemProvider != null) intSampleListItemProvider.dispose(); + if (doubleSampleListItemProvider != null) doubleSampleListItemProvider.dispose(); + if (boolSampleListItemProvider != null) boolSampleListItemProvider.dispose(); + if (enumSampleListItemProvider != null) enumSampleListItemProvider.dispose(); + if (boxedPDFItemProvider != null) boxedPDFItemProvider.dispose(); + if (continuousSampleItemProvider != null) continuousSampleItemProvider.dispose(); + if (normalDistributionItemProvider != null) normalDistributionItemProvider.dispose(); + if (exponentialDistributionItemProvider != null) exponentialDistributionItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..596dfcaac348c02b0fd872577b8edc0f9e99f127 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java @@ -0,0 +1,406 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IfElseExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IfElseExpressionItemProvider(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(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION); + childrenFeatures.add(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP); + childrenFeatures.add(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP); + } + 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 IfElseExpression.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IfElseExpression")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_IfElseExpression_type"); + } + + + /** + * 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(IfElseExpression.class)) { + case FunctionsPackage.IF_ELSE_EXPRESSION__CONDITION: + case FunctionsPackage.IF_ELSE_EXPRESSION__TRUE_EXP: + case FunctionsPackage.IF_ELSE_EXPRESSION__FALSE_EXP: + 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 + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION || + childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP || + childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3bfffa94c240a32bb93c6fa2944facb7ba31cb19 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java @@ -0,0 +1,136 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral; + +import java.math.BigInteger; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IntLiteralItemProvider extends LiteralItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IntLiteralItemProvider(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); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntLiteral_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntLiteral_value_feature", "_UI_IntLiteral_type"), + FunctionsPackage.Literals.INT_LITERAL__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns IntLiteral.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntLiteral")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigInteger labelValue = ((IntLiteral)object).getValue(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_IntLiteral_type") : + getString("_UI_IntLiteral_type") + " " + 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); + + switch (notification.getFeatureID(IntLiteral.class)) { + case FunctionsPackage.INT_LITERAL__VALUE: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9060c7f42bc8da11efcdc7579e9b796460315032 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample; + +import java.math.BigInteger; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IntSampleItemProvider extends SampleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IntSampleItemProvider(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); + + addValuePropertyDescriptor(object); + addProbabilityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntSample_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntSample_value_feature", "_UI_IntSample_type"), + FunctionsPackage.Literals.INT_SAMPLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Probability feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProbabilityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntSample_probability_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntSample_probability_feature", "_UI_IntSample_type"), + FunctionsPackage.Literals.INT_SAMPLE__PROBABILITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns IntSample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntSample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigInteger labelValue = ((IntSample)object).getValue(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_IntSample_type") : + getString("_UI_IntSample_type") + " " + 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); + + switch (notification.getFeatureID(IntSample.class)) { + case FunctionsPackage.INT_SAMPLE__VALUE: + case FunctionsPackage.INT_SAMPLE__PROBABILITY: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e05b6d2914252b2221fdfdfe5d24221bc04a845d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IntSampleListItemProvider extends SampleListItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IntSampleListItemProvider(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(FunctionsPackage.Literals.INT_SAMPLE_LIST__ITEMS); + } + 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 IntSampleList.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntSampleList")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_IntSampleList_type"); + } + + + /** + * 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(IntSampleList.class)) { + case FunctionsPackage.INT_SAMPLE_LIST__ITEMS: + 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 + (FunctionsPackage.Literals.INT_SAMPLE_LIST__ITEMS, + FunctionsFactory.eINSTANCE.createIntSample())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3863dbee6956479dd40e314f1ec4df6d91b2c308 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java @@ -0,0 +1,95 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Literal} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LiteralItemProvider extends ProbabilityFunctionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LiteralItemProvider(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 Literal.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Literal")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Literal_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e01b92820bc90970286e786cbf884ab411d6d602 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class NormalDistributionItemProvider extends ContinuousPDFItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NormalDistributionItemProvider(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); + + addMuPropertyDescriptor(object); + addSigmaPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Mu feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMuPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_NormalDistribution_mu_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NormalDistribution_mu_feature", "_UI_NormalDistribution_type"), + FunctionsPackage.Literals.NORMAL_DISTRIBUTION__MU, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Sigma feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSigmaPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_NormalDistribution_sigma_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NormalDistribution_sigma_feature", "_UI_NormalDistribution_type"), + FunctionsPackage.Literals.NORMAL_DISTRIBUTION__SIGMA, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns NormalDistribution.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/NormalDistribution")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigDecimal labelValue = ((NormalDistribution)object).getMu(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_NormalDistribution_type") : + getString("_UI_NormalDistribution_type") + " " + 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); + + switch (notification.getFeatureID(NormalDistribution.class)) { + case FunctionsPackage.NORMAL_DISTRIBUTION__MU: + case FunctionsPackage.NORMAL_DISTRIBUTION__SIGMA: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..70a093b57cfdc3d3ba14c77449042fe45179e328 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java @@ -0,0 +1,312 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.Power; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PowerItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PowerItemProvider(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(FunctionsPackage.Literals.POWER__BASE); + childrenFeatures.add(FunctionsPackage.Literals.POWER__EXPONENT); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Power_type"); + } + + + /** + * 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(Power.class)) { + case FunctionsPackage.POWER__BASE: + case FunctionsPackage.POWER__EXPONENT: + 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 + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__BASE, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.POWER__EXPONENT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.POWER__BASE || + childFeature == FunctionsPackage.Literals.POWER__EXPONENT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..839ce19135202258e19cc333f065fb89453bd5da --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java @@ -0,0 +1,95 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityDensityFunction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProbabilityDensityFunctionItemProvider extends ProbabilityFunctionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProbabilityDensityFunctionItemProvider(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 ProbabilityDensityFunction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ProbabilityDensityFunction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ProbabilityDensityFunction_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..08112f2a83fa982fbe3c75b58318a7c600049170 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java @@ -0,0 +1,84 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityFunction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProbabilityFunctionItemProvider extends AtomItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProbabilityFunctionItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ProbabilityFunction_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..8545b02f65d42f3c605efaf9d7fb454944fee62c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java @@ -0,0 +1,158 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProbabilityMassFunctionItemProvider extends ProbabilityFunctionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProbabilityMassFunctionItemProvider(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(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES); + } + 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 ProbabilityMassFunction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ProbabilityMassFunction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ProbabilityMassFunction_type"); + } + + + /** + * 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(ProbabilityMassFunction.class)) { + case FunctionsPackage.PROBABILITY_MASS_FUNCTION__SAMPLES: + 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 + (FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES, + FunctionsFactory.eINSTANCE.createIntSampleList())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES, + FunctionsFactory.eINSTANCE.createDoubleSampleList())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES, + FunctionsFactory.eINSTANCE.createBoolSampleList())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES, + FunctionsFactory.eINSTANCE.createEnumSampleList())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6abb1e5652d587ec791cc157eea23f8ecfbe70da --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java @@ -0,0 +1,345 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.Product; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.ProductOperation; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProductItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProductItemProvider(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); + + addOperationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operation feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOperationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Product_operation_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Product_operation_feature", "_UI_Product_type"), + FunctionsPackage.Literals.PRODUCT__OPERATION, + 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(FunctionsPackage.Literals.PRODUCT__LEFT); + childrenFeatures.add(FunctionsPackage.Literals.PRODUCT__RIGHT); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ProductOperation labelValue = ((Product)object).getOperation(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_Product_type") : + getString("_UI_Product_type") + " " + 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); + + switch (notification.getFeatureID(Product.class)) { + case FunctionsPackage.PRODUCT__OPERATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case FunctionsPackage.PRODUCT__LEFT: + case FunctionsPackage.PRODUCT__RIGHT: + 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 + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__LEFT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.PRODUCT__RIGHT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.PRODUCT__LEFT || + childFeature == FunctionsPackage.Literals.PRODUCT__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..cd0c75e4ac9142af1d1af17bf1075d3e9e990187 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java @@ -0,0 +1,203 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RandomVariableItemProvider + 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 RandomVariableItemProvider(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(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION); + } + 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 RandomVariable.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/RandomVariable")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_RandomVariable_type"); + } + + + /** + * 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(RandomVariable.class)) { + case FunctionsPackage.RANDOM_VARIABLE__PROB_FUNCTION: + 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 + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c0419c7cc76b69ca16c5ff0b5ae7b1a8f0a21772 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java @@ -0,0 +1,123 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Sample} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SampleItemProvider + 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 SampleItemProvider(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 Sample.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Sample")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Sample_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0a2289ad87fe04c20a57853494018bc866c7a24f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java @@ -0,0 +1,112 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.SampleList} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SampleListItemProvider + 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 SampleListItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_SampleList_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..38c1db0e2af552edf4615644df57dd5ac9d0edad --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java @@ -0,0 +1,345 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.Term; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.TermOperation; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TermItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TermItemProvider(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); + + addOperationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operation feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOperationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Term_operation_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Term_operation_feature", "_UI_Term_type"), + FunctionsPackage.Literals.TERM__OPERATION, + 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(FunctionsPackage.Literals.TERM__LEFT); + childrenFeatures.add(FunctionsPackage.Literals.TERM__RIGHT); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + TermOperation labelValue = ((Term)object).getOperation(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_Term_type") : + getString("_UI_Term_type") + " " + 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); + + switch (notification.getFeatureID(Term.class)) { + case FunctionsPackage.TERM__OPERATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case FunctionsPackage.TERM__LEFT: + case FunctionsPackage.TERM__RIGHT: + 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 + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__LEFT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.TERM__RIGHT, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == FunctionsPackage.Literals.TERM__LEFT || + childFeature == FunctionsPackage.Literals.TERM__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0ee5f30d0c16982fa6921cd617cee54511eab093 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java @@ -0,0 +1,218 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UnaryBooleanExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UnaryBooleanExpressionItemProvider(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(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER); + } + 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 UnaryBooleanExpression.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/UnaryBooleanExpression")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_UnaryBooleanExpression_type"); + } + + + /** + * 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(UnaryBooleanExpression.class)) { + case FunctionsPackage.UNARY_BOOLEAN_EXPRESSION__INNER: + 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 + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createFormalParameter())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createIfElseExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createComparison())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createTerm())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createProduct())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createPower())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createBooleanLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createIntLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createDoubleLiteral())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createProbabilityMassFunction())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createBoxedPDF())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createNormalDistribution())); + + newChildDescriptors.add + (createChildParameter + (FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER, + FunctionsFactory.eINSTANCE.createExponentialDistribution())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0ff1d747ed3fb4f7c6ffe855b848f32f2dc3afac --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java @@ -0,0 +1,193 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.CallParameter; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.CallParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CallParameterItemProvider extends InfluencingParameterItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CallParameterItemProvider(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); + + addCharacterizationPropertyDescriptor(object); + addSignaturePropertyDescriptor(object); + addParameterPropertyDescriptor(object); + addReturnTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Characterization feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCharacterizationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CallParameter_characterization_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_characterization_feature", "_UI_CallParameter_type"), + ParameterdependenciesPackage.Literals.CALL_PARAMETER__CHARACTERIZATION, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Signature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSignaturePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CallParameter_signature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_signature_feature", "_UI_CallParameter_type"), + ParameterdependenciesPackage.Literals.CALL_PARAMETER__SIGNATURE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Parameter feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addParameterPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CallParameter_parameter_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_parameter_feature", "_UI_CallParameter_type"), + ParameterdependenciesPackage.Literals.CALL_PARAMETER__PARAMETER, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Return Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReturnTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CallParameter_returnType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_returnType_feature", "_UI_CallParameter_type"), + ParameterdependenciesPackage.Literals.CALL_PARAMETER__RETURN_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ParameterCharacterizationType labelValue = ((CallParameter)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_CallParameter_type") : + getString("_UI_CallParameter_type") + " " + 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); + + switch (notification.getFeatureID(CallParameter.class)) { + case ParameterdependenciesPackage.CALL_PARAMETER__CHARACTERIZATION: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c59bb35b732f7c08dbc4c627f3a0c8821a4ef9b9 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java @@ -0,0 +1,149 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComponentInstanceReferenceItemProvider + 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 ComponentInstanceReferenceItemProvider(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); + + addAssembliesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Assemblies feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAssembliesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ComponentInstanceReference_assemblies_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ComponentInstanceReference_assemblies_feature", "_UI_ComponentInstanceReference_type"), + ParameterdependenciesPackage.Literals.COMPONENT_INSTANCE_REFERENCE__ASSEMBLIES, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ComponentInstanceReference.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ComponentInstanceReference")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ComponentInstanceReference_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ee315271e2d1979f1fe9e7ef0c471654e710104a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java @@ -0,0 +1,166 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ControlFlowVariableItemProvider extends ModelVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ControlFlowVariableItemProvider(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); + + addCharacterizationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Characterization feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCharacterizationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ControlFlowVariable_characterization_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ControlFlowVariable_characterization_feature", "_UI_ControlFlowVariable_type"), + ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__CHARACTERIZATION, + 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(ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((ControlFlowVariable)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ControlFlowVariable_type") : + getString("_UI_ControlFlowVariable_type") + " " + 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); + + switch (notification.getFeatureID(ControlFlowVariable.class)) { + case ParameterdependenciesPackage.CONTROL_FLOW_VARIABLE__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ParameterdependenciesPackage.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION: + 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 + (ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7649f0c6d5cde4f39e9355d38a4cf2a4f6124167 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java @@ -0,0 +1,228 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DependencyPropagationRelationshipItemProvider extends RelationshipItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DependencyPropagationRelationshipItemProvider(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); + + addIndependentPropertyDescriptor(object); + addDependentPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Independent feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addIndependentPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DependencyPropagationRelationship_independent_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DependencyPropagationRelationship_independent_feature", "_UI_DependencyPropagationRelationship_type"), + ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Dependent feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDependentPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DependencyPropagationRelationship_dependent_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DependencyPropagationRelationship_dependent_feature", "_UI_DependencyPropagationRelationship_type"), + ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT, + true, + false, + true, + null, + 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(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES); + childrenFeatures.add(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE); + } + 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 DependencyPropagationRelationship.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DependencyPropagationRelationship")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + RelationshipCharacterizationType labelValue = ((DependencyPropagationRelationship)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_DependencyPropagationRelationship_type") : + getString("_UI_DependencyPropagationRelationship_type") + " " + 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); + + switch (notification.getFeatureID(DependencyPropagationRelationship.class)) { + case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES: + case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, 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); + + newChildDescriptors.add + (createChildParameter + (ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES, + ParameterdependenciesFactory.eINSTANCE.createComponentInstanceReference())); + + newChildDescriptors.add + (createChildParameter + (ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE, + ParameterdependenciesFactory.eINSTANCE.createComponentInstanceReference())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES || + childFeature == ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..63ce8e8df5a05e20fe109b04a043b877e34554ee --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java @@ -0,0 +1,157 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DependencyRelationshipItemProvider extends RelationshipItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DependencyRelationshipItemProvider(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); + + addDependentPropertyDescriptor(object); + addIndependentPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Dependent feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDependentPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DependencyRelationship_dependent_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DependencyRelationship_dependent_feature", "_UI_DependencyRelationship_type"), + ParameterdependenciesPackage.Literals.DEPENDENCY_RELATIONSHIP__DEPENDENT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Independent feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addIndependentPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DependencyRelationship_independent_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DependencyRelationship_independent_feature", "_UI_DependencyRelationship_type"), + ParameterdependenciesPackage.Literals.DEPENDENCY_RELATIONSHIP__INDEPENDENT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns DependencyRelationship.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DependencyRelationship")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + RelationshipCharacterizationType labelValue = ((DependencyRelationship)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_DependencyRelationship_type") : + getString("_UI_DependencyRelationship_type") + " " + 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); + + switch (notification.getFeatureID(DependencyRelationship.class)) { + case ParameterdependenciesPackage.DEPENDENCY_RELATIONSHIP__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..67c2e1189a7132030e38dc459e2aba41caf60125 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java @@ -0,0 +1,127 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExternalCallParameterItemProvider extends CallParameterItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExternalCallParameterItemProvider(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); + + addExternallCallPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Externall Call feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addExternallCallPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ExternalCallParameter_externallCall_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ExternalCallParameter_externallCall_feature", "_UI_ExternalCallParameter_type"), + ParameterdependenciesPackage.Literals.EXTERNAL_CALL_PARAMETER__EXTERNALL_CALL, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ExternalCallParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ParameterCharacterizationType labelValue = ((ExternalCallParameter)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ExternalCallParameter_type") : + getString("_UI_ExternalCallParameter_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..f5f3f6645183d766ede1c9815f5de8833e0d2fb4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java @@ -0,0 +1,127 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExternalCallReturnParameterItemProvider extends CallParameterItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExternalCallReturnParameterItemProvider(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); + + addExternalCallPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the External Call feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addExternalCallPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ExternalCallReturnParameter_externalCall_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ExternalCallReturnParameter_externalCall_feature", "_UI_ExternalCallReturnParameter_type"), + ParameterdependenciesPackage.Literals.EXTERNAL_CALL_RETURN_PARAMETER__EXTERNAL_CALL, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ExternalCallReturnParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallReturnParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ParameterCharacterizationType labelValue = ((ExternalCallReturnParameter)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ExternalCallReturnParameter_type") : + getString("_UI_ExternalCallReturnParameter_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..be283d88fff55f7c260f97f2817422cca37cb0fc --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java @@ -0,0 +1,218 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InfluencedVariableReferenceItemProvider + 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 InfluencedVariableReferenceItemProvider(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); + + addInfluencedVariablePropertyDescriptor(object); + addControlFlowVariablePropertyDescriptor(object); + addResourceDemandPropertyDescriptor(object); + addResponseTimePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Influenced Variable feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInfluencedVariablePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InfluencedVariableReference_influencedVariable_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_influencedVariable_feature", "_UI_InfluencedVariableReference_type"), + ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__INFLUENCED_VARIABLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Control Flow Variable feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addControlFlowVariablePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InfluencedVariableReference_controlFlowVariable_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_controlFlowVariable_feature", "_UI_InfluencedVariableReference_type"), + ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__CONTROL_FLOW_VARIABLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Resource Demand feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addResourceDemandPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InfluencedVariableReference_resourceDemand_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_resourceDemand_feature", "_UI_InfluencedVariableReference_type"), + ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__RESOURCE_DEMAND, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Response Time feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addResponseTimePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InfluencedVariableReference_responseTime_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_responseTime_feature", "_UI_InfluencedVariableReference_type"), + ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__RESPONSE_TIME, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns InfluencedVariableReference.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InfluencedVariableReference")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_InfluencedVariableReference_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..8e9ba7a07dbee6b103480ac9b4a4ecf25e9cc73b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java @@ -0,0 +1,121 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencingParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InfluencingParameterItemProvider extends ModelVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InfluencingParameterItemProvider(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); + + addBehaviorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Behavior feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addBehaviorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InfluencingParameter_behavior_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InfluencingParameter_behavior_feature", "_UI_InfluencingParameter_type"), + ParameterdependenciesPackage.Literals.INFLUENCING_PARAMETER__BEHAVIOR, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns InfluencingParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InfluencingParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_InfluencingParameter_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0803e4c252b79d340eb40947068a6ed815fa9f0c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelVariableItemProvider + 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 ModelVariableItemProvider(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(ParameterdependenciesPackage.Literals.MODEL_VARIABLE__SCOPE_SET); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ModelVariable_type"); + } + + + /** + * 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(ModelVariable.class)) { + case ParameterdependenciesPackage.MODEL_VARIABLE__SCOPE_SET: + 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 + (ParameterdependenciesPackage.Literals.MODEL_VARIABLE__SCOPE_SET, + ParameterdependenciesFactory.eINSTANCE.createScopeSet())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d7774bd85e1693e36ee8ee0ecd16f591c43854e7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java @@ -0,0 +1,416 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.util.ParameterdependenciesAdapterFactory; + +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; + +/** + * 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 ParameterdependenciesItemProviderAdapterFactory extends ParameterdependenciesAdapterFactory 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 ParameterdependenciesItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ScopeSetItemProvider scopeSetItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createScopeSetAdapter() { + if (scopeSetItemProvider == null) { + scopeSetItemProvider = new ScopeSetItemProvider(this); + } + + return scopeSetItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ScopeItemProvider scopeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createScopeAdapter() { + if (scopeItemProvider == null) { + scopeItemProvider = new ScopeItemProvider(this); + } + + return scopeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InfluencedVariableReferenceItemProvider influencedVariableReferenceItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInfluencedVariableReferenceAdapter() { + if (influencedVariableReferenceItemProvider == null) { + influencedVariableReferenceItemProvider = new InfluencedVariableReferenceItemProvider(this); + } + + return influencedVariableReferenceItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ShadowParameterItemProvider shadowParameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createShadowParameterAdapter() { + if (shadowParameterItemProvider == null) { + shadowParameterItemProvider = new ShadowParameterItemProvider(this); + } + + return shadowParameterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DependencyRelationshipItemProvider dependencyRelationshipItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDependencyRelationshipAdapter() { + if (dependencyRelationshipItemProvider == null) { + dependencyRelationshipItemProvider = new DependencyRelationshipItemProvider(this); + } + + return dependencyRelationshipItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DependencyPropagationRelationshipItemProvider dependencyPropagationRelationshipItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDependencyPropagationRelationshipAdapter() { + if (dependencyPropagationRelationshipItemProvider == null) { + dependencyPropagationRelationshipItemProvider = new DependencyPropagationRelationshipItemProvider(this); + } + + return dependencyPropagationRelationshipItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComponentInstanceReferenceItemProvider componentInstanceReferenceItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createComponentInstanceReferenceAdapter() { + if (componentInstanceReferenceItemProvider == null) { + componentInstanceReferenceItemProvider = new ComponentInstanceReferenceItemProvider(this); + } + + return componentInstanceReferenceItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ServiceInputParameterItemProvider serviceInputParameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createServiceInputParameterAdapter() { + if (serviceInputParameterItemProvider == null) { + serviceInputParameterItemProvider = new ServiceInputParameterItemProvider(this); + } + + return serviceInputParameterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExternalCallReturnParameterItemProvider externalCallReturnParameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExternalCallReturnParameterAdapter() { + if (externalCallReturnParameterItemProvider == null) { + externalCallReturnParameterItemProvider = new ExternalCallReturnParameterItemProvider(this); + } + + return externalCallReturnParameterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExternalCallParameterItemProvider externalCallParameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExternalCallParameterAdapter() { + if (externalCallParameterItemProvider == null) { + externalCallParameterItemProvider = new ExternalCallParameterItemProvider(this); + } + + return externalCallParameterItemProvider; + } + + /** + * 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 (scopeSetItemProvider != null) scopeSetItemProvider.dispose(); + if (scopeItemProvider != null) scopeItemProvider.dispose(); + if (influencedVariableReferenceItemProvider != null) influencedVariableReferenceItemProvider.dispose(); + if (shadowParameterItemProvider != null) shadowParameterItemProvider.dispose(); + if (dependencyRelationshipItemProvider != null) dependencyRelationshipItemProvider.dispose(); + if (dependencyPropagationRelationshipItemProvider != null) dependencyPropagationRelationshipItemProvider.dispose(); + if (componentInstanceReferenceItemProvider != null) componentInstanceReferenceItemProvider.dispose(); + if (serviceInputParameterItemProvider != null) serviceInputParameterItemProvider.dispose(); + if (externalCallReturnParameterItemProvider != null) externalCallReturnParameterItemProvider.dispose(); + if (externalCallParameterItemProvider != null) externalCallParameterItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..27aa0242de1056e2a7bf79b7ef7865d5398f48de --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java @@ -0,0 +1,199 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Relationship; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Relationship} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RelationshipItemProvider + 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 RelationshipItemProvider(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); + + addSurroundingEntityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Surrounding Entity feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSurroundingEntityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Relationship_surroundingEntity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Relationship_surroundingEntity_feature", "_UI_Relationship_type"), + ParameterdependenciesPackage.Literals.RELATIONSHIP__SURROUNDING_ENTITY, + true, + false, + true, + null, + 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(ParameterdependenciesPackage.Literals.RELATIONSHIP__CHARACTERIZATION); + childrenFeatures.add(ParameterdependenciesPackage.Literals.RELATIONSHIP__EXPLICIT_DESCRIPTION); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + RelationshipCharacterizationType labelValue = ((Relationship)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_Relationship_type") : + getString("_UI_Relationship_type") + " " + 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); + + switch (notification.getFeatureID(Relationship.class)) { + case ParameterdependenciesPackage.RELATIONSHIP__EXPLICIT_DESCRIPTION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + case ParameterdependenciesPackage.RELATIONSHIP__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, 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); + + newChildDescriptors.add + (createChildParameter + (ParameterdependenciesPackage.Literals.RELATIONSHIP__CHARACTERIZATION, + RelationshipCharacterizationType.EMPIRICAL)); + + newChildDescriptors.add + (createChildParameter + (ParameterdependenciesPackage.Literals.RELATIONSHIP__EXPLICIT_DESCRIPTION, + FunctionsFactory.eINSTANCE.createExplicitDescription())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..145f072a03ff0f3d206305d293a67a870ac9aa94 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java @@ -0,0 +1,149 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ScopeItemProvider + 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 ScopeItemProvider(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); + + addScopePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Scope feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addScopePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Scope_scope_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Scope_scope_feature", "_UI_Scope_type"), + ParameterdependenciesPackage.Literals.SCOPE__SCOPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns Scope.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Scope")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Scope_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..017cfc603ed728f20265be323009d059411a4ab4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java @@ -0,0 +1,149 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ScopeSetItemProvider + 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 ScopeSetItemProvider(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); + + addScopePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Scope feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addScopePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ScopeSet_scope_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ScopeSet_scope_feature", "_UI_ScopeSet_type"), + ParameterdependenciesPackage.Literals.SCOPE_SET__SCOPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ScopeSet.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ScopeSet")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ScopeSet_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a79bf64ed3d57400e9f0a43209397cb172a977ba --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java @@ -0,0 +1,127 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ServiceInputParameterItemProvider extends CallParameterItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ServiceInputParameterItemProvider(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); + + addProvidingRolePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ServiceInputParameter_providingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ServiceInputParameter_providingRole_feature", "_UI_ServiceInputParameter_type"), + ParameterdependenciesPackage.Literals.SERVICE_INPUT_PARAMETER__PROVIDING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ServiceInputParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ServiceInputParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ParameterCharacterizationType labelValue = ((ServiceInputParameter)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ServiceInputParameter_type") : + getString("_UI_ServiceInputParameter_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c22e6693916edf0eb35e54ad53c34e0739a2e6fd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java @@ -0,0 +1,157 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ShadowParameterItemProvider extends InfluencingParameterItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ShadowParameterItemProvider(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); + 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_ShadowParameter_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ShadowParameter_name_feature", "_UI_ShadowParameter_type"), + ParameterdependenciesPackage.Literals.SHADOW_PARAMETER__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + 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_ShadowParameter_description_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ShadowParameter_description_feature", "_UI_ShadowParameter_type"), + ParameterdependenciesPackage.Literals.SHADOW_PARAMETER__DESCRIPTION, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns ShadowParameter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ShadowParameter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ShadowParameter)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ShadowParameter_type") : + getString("_UI_ShadowParameter_type") + " " + 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); + + switch (notification.getFeatureID(ShadowParameter.class)) { + case ParameterdependenciesPackage.SHADOW_PARAMETER__NAME: + case ParameterdependenciesPackage.SHADOW_PARAMETER__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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..f9f5e6471c79207261f4e6f3213b265f3066bca4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java @@ -0,0 +1,99 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Applicationlevel edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class ApplicationlevelEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final ApplicationlevelEditPlugin INSTANCE = new ApplicationlevelEditPlugin(); + + /** + * 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 ApplicationlevelEditPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..fa005b3f5867a5d7d30805edf59da843e3374976 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java @@ -0,0 +1,211 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.ConnectorItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AssemblyConnectorItemProvider extends ConnectorItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AssemblyConnectorItemProvider(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); + + addInterfaceRequiringRolePropertyDescriptor(object); + addInterfaceProvidingRolePropertyDescriptor(object); + addProvidingAssemblyContextPropertyDescriptor(object); + addRequiringAssemblyContextPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Interface Requiring Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfaceRequiringRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AssemblyConnector_interfaceRequiringRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_interfaceRequiringRole_feature", "_UI_AssemblyConnector_type"), + RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__INTERFACE_REQUIRING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Interface Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfaceProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AssemblyConnector_interfaceProvidingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_interfaceProvidingRole_feature", "_UI_AssemblyConnector_type"), + RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__INTERFACE_PROVIDING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Providing Assembly Context feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProvidingAssemblyContextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AssemblyConnector_providingAssemblyContext_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_providingAssemblyContext_feature", "_UI_AssemblyConnector_type"), + RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__PROVIDING_ASSEMBLY_CONTEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Requiring Assembly Context feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRequiringAssemblyContextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AssemblyConnector_requiringAssemblyContext_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_requiringAssemblyContext_feature", "_UI_AssemblyConnector_type"), + RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__REQUIRING_ASSEMBLY_CONTEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns AssemblyConnector.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AssemblyConnector")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AssemblyConnector)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AssemblyConnector_type") : + getString("_UI_AssemblyConnector_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..84549212e5006a4347c1ecd78296433d34818f2a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AssemblyContextItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AssemblyContextItemProvider(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); + + addEncapsulatedComponentPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Encapsulated Component feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addEncapsulatedComponentPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AssemblyContext_encapsulatedComponent_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AssemblyContext_encapsulatedComponent_feature", "_UI_AssemblyContext_type"), + RepositoryPackage.Literals.ASSEMBLY_CONTEXT__ENCAPSULATED_COMPONENT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns AssemblyContext.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AssemblyContext")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AssemblyContext)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AssemblyContext_type") : + getString("_UI_AssemblyContext_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..63f1b986035dbe25dbc37d19be7860a315168612 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java @@ -0,0 +1,155 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BasicComponentItemProvider extends RepositoryComponentItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BasicComponentItemProvider(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(RepositoryPackage.Literals.BASIC_COMPONENT__SEMAPHORES); + childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR); + } + 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 BasicComponent.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BasicComponent")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((BasicComponent)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_BasicComponent_type") : + getString("_UI_BasicComponent_type") + " " + 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); + + switch (notification.getFeatureID(BasicComponent.class)) { + case RepositoryPackage.BASIC_COMPONENT__SEMAPHORES: + case RepositoryPackage.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR: + 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 + (RepositoryPackage.Literals.BASIC_COMPONENT__SEMAPHORES, + RepositoryFactory.eINSTANCE.createSemaphore())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createFineGrainedBehavior())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..48e38d65287acbb2637253b6a468f7cf5d46d940 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CollectionDataTypeItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CollectionDataTypeItemProvider(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); + + addInnerTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Inner Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInnerTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CollectionDataType_innerType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CollectionDataType_innerType_feature", "_UI_CollectionDataType_type"), + RepositoryPackage.Literals.COLLECTION_DATA_TYPE__INNER_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns CollectionDataType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CollectionDataType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CollectionDataType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CollectionDataType_type") : + getString("_UI_CollectionDataType_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..08afa814aafe1c58a4f7fa465670a48f43f52366 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComposedProvidingRequiringEntityItemProvider extends ComposedStructureItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposedProvidingRequiringEntityItemProvider(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); + + addRelationshipsPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Relationships feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRelationshipsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InterfaceProvidingRequiringEntity_relationships_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRequiringEntity_relationships_feature", "_UI_InterfaceProvidingRequiringEntity_type"), + RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__RELATIONSHIPS, + true, + false, + true, + null, + 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(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES); + childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR); + childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES); + childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ComposedProvidingRequiringEntity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ComposedProvidingRequiringEntity_type") : + getString("_UI_ComposedProvidingRequiringEntity_type") + " " + 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); + + switch (notification.getFeatureID(ComposedProvidingRequiringEntity.class)) { + case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__INTERFACE_PROVIDING_ROLES: + case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__BLACK_BOX_BEHAVIOR: + case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES: + case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR: + 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 + (RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES, + RepositoryFactory.eINSTANCE.createInterfaceProvidingRole())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createBlackBoxBehavior())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES, + RepositoryFactory.eINSTANCE.createInterfaceRequiringRole())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createCoarseGrainedBehavior())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..00252920761f999a4e28df593283cfe62e15c223 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java @@ -0,0 +1,173 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedStructure; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedStructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComposedStructureItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposedStructureItemProvider(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(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ComposedStructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ComposedStructure_type") : + getString("_UI_ComposedStructure_type") + " " + 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); + + switch (notification.getFeatureID(ComposedStructure.class)) { + case RepositoryPackage.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS: + case RepositoryPackage.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS: + case RepositoryPackage.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS: + case RepositoryPackage.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS: + 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 + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS, + RepositoryFactory.eINSTANCE.createAssemblyContext())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS, + RepositoryFactory.eINSTANCE.createAssemblyConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createProvidingDelegationConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createRequiringDelegationConnector())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..fe576d44ea2fd067dca7711e9590b314f32458ea --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java @@ -0,0 +1,167 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CompositeComponentItemProvider extends RepositoryComponentItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CompositeComponentItemProvider(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(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS); + } + 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 CompositeComponent.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeComponent")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CompositeComponent)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CompositeComponent_type") : + getString("_UI_CompositeComponent_type") + " " + 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); + + switch (notification.getFeatureID(CompositeComponent.class)) { + case RepositoryPackage.COMPOSITE_COMPONENT__ASSEMBLY_CONTEXTS: + case RepositoryPackage.COMPOSITE_COMPONENT__ASSEMBLY_CONNECTORS: + case RepositoryPackage.COMPOSITE_COMPONENT__PROVIDING_DELEGATION_CONNECTORS: + case RepositoryPackage.COMPOSITE_COMPONENT__REQUIRING_DELEGATION_CONNECTORS: + 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 + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS, + RepositoryFactory.eINSTANCE.createAssemblyContext())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS, + RepositoryFactory.eINSTANCE.createAssemblyConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createProvidingDelegationConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createRequiringDelegationConnector())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..59afc31d334718cce51b0980a239306c74730086 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java @@ -0,0 +1,187 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CompositeDataTypeItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CompositeDataTypeItemProvider(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); + + addParentTypesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Parent Types feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addParentTypesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CompositeDataType_parentTypes_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CompositeDataType_parentTypes_feature", "_UI_CompositeDataType_type"), + RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__PARENT_TYPES, + true, + false, + true, + null, + 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(RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS); + } + 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 CompositeDataType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeDataType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CompositeDataType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CompositeDataType_type") : + getString("_UI_CompositeDataType_type") + " " + 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); + + switch (notification.getFeatureID(CompositeDataType.class)) { + case RepositoryPackage.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS: + 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 + (RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS, + RepositoryFactory.eINSTANCE.createInnerDeclaration())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a185c55964178891e6d7768d0f2c7e493e29e6dc --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java @@ -0,0 +1,112 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.DataType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DataTypeItemProvider + 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 DataTypeItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_DataType_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..5a2871c4aa254e1cbd4ced3b5e56bbbfee3ff9cd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java @@ -0,0 +1,131 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.ConnectorItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.DelegationConnector; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.DelegationConnector} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DelegationConnectorItemProvider extends ConnectorItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DelegationConnectorItemProvider(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); + + addAssemblyContextPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Assembly Context feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAssemblyContextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DelegationConnector_assemblyContext_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DelegationConnector_assemblyContext_feature", "_UI_DelegationConnector_type"), + RepositoryPackage.Literals.DELEGATION_CONNECTOR__ASSEMBLY_CONTEXT, + true, + false, + true, + null, + 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 = ((DelegationConnector)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_DelegationConnector_type") : + getString("_UI_DelegationConnector_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c0754b88ec00f353d46276c3cb146353c508b059 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java @@ -0,0 +1,161 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Import; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.applicationlevel.repository.Import} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ImportItemProvider + 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 ImportItemProvider(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); + + addImportURIPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Import URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addImportURIPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Import_importURI_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Import_importURI_feature", "_UI_Import_type"), + RepositoryPackage.Literals.IMPORT__IMPORT_URI, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Import.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Import")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Import)object).getImportURI(); + return label == null || label.length() == 0 ? + getString("_UI_Import_type") : + getString("_UI_Import_type") + " " + 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); + + switch (notification.getFeatureID(Import.class)) { + case RepositoryPackage.IMPORT__IMPORT_URI: + 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 ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3ea8d2ce79333cd3995ea42846d86e57470acc80 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InnerDeclarationItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InnerDeclarationItemProvider(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); + + addDataTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Data Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDataTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InnerDeclaration_dataType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InnerDeclaration_dataType_feature", "_UI_InnerDeclaration_type"), + RepositoryPackage.Literals.INNER_DECLARATION__DATA_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns InnerDeclaration.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InnerDeclaration")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InnerDeclaration)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InnerDeclaration_type") : + getString("_UI_InnerDeclaration_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..202388ba2d2536a1ba65c013bb6550129a6c4d57 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java @@ -0,0 +1,187 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceItemProvider(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); + + addParentInterfacesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Parent Interfaces feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addParentInterfacesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Interface_parentInterfaces_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Interface_parentInterfaces_feature", "_UI_Interface_type"), + RepositoryPackage.Literals.INTERFACE__PARENT_INTERFACES, + true, + false, + true, + null, + 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(RepositoryPackage.Literals.INTERFACE__SIGNATURES); + } + 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 Interface.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Interface")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Interface)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Interface_type") : + getString("_UI_Interface_type") + " " + 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); + + switch (notification.getFeatureID(Interface.class)) { + case RepositoryPackage.INTERFACE__SIGNATURES: + 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 + (RepositoryPackage.Literals.INTERFACE__SIGNATURES, + RepositoryFactory.eINSTANCE.createSignature())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..1fd9fee04e3108055052550271d40fa35afbc767 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java @@ -0,0 +1,161 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceProvidingEntityItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceProvidingEntityItemProvider(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(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES); + childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InterfaceProvidingEntity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InterfaceProvidingEntity_type") : + getString("_UI_InterfaceProvidingEntity_type") + " " + 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); + + switch (notification.getFeatureID(InterfaceProvidingEntity.class)) { + case RepositoryPackage.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES: + case RepositoryPackage.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR: + 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 + (RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES, + RepositoryFactory.eINSTANCE.createInterfaceProvidingRole())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createBlackBoxBehavior())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..5b23b40f4ed0e20a09490a2a4d15870bf25e5490 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java @@ -0,0 +1,168 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRequiringEntity; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRequiringEntity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceProvidingRequiringEntityItemProvider extends InterfaceProvidingEntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceProvidingRequiringEntityItemProvider(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); + + addRelationshipsPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Relationships feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRelationshipsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InterfaceProvidingRequiringEntity_relationships_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRequiringEntity_relationships_feature", "_UI_InterfaceProvidingRequiringEntity_type"), + RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__RELATIONSHIPS, + true, + false, + true, + null, + 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(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES); + childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InterfaceProvidingRequiringEntity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InterfaceProvidingRequiringEntity_type") : + getString("_UI_InterfaceProvidingRequiringEntity_type") + " " + 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); + + switch (notification.getFeatureID(InterfaceProvidingRequiringEntity.class)) { + case RepositoryPackage.INTERFACE_PROVIDING_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES: + case RepositoryPackage.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR: + 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 + (RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES, + RepositoryFactory.eINSTANCE.createInterfaceRequiringRole())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createCoarseGrainedBehavior())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2dc5f2b73b16b886aa0783701bfa9a5964853f8c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java @@ -0,0 +1,125 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceProvidingRoleItemProvider extends RoleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceProvidingRoleItemProvider(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); + + addInterfacePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Interface feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfacePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InterfaceProvidingRole_interface_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRole_interface_feature", "_UI_InterfaceProvidingRole_type"), + RepositoryPackage.Literals.INTERFACE_PROVIDING_ROLE__INTERFACE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns InterfaceProvidingRole.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InterfaceProvidingRole")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InterfaceProvidingRole)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InterfaceProvidingRole_type") : + getString("_UI_InterfaceProvidingRole_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..79030b7a5c1ca4990357ff855a7fc0abb20db01c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java @@ -0,0 +1,152 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringEntity; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringEntity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceRequiringEntityItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceRequiringEntityItemProvider(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(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InterfaceRequiringEntity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InterfaceRequiringEntity_type") : + getString("_UI_InterfaceRequiringEntity_type") + " " + 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); + + switch (notification.getFeatureID(InterfaceRequiringEntity.class)) { + case RepositoryPackage.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES: + 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 + (RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES, + RepositoryFactory.eINSTANCE.createInterfaceRequiringRole())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..bb19b347081e79a3e03529e2cfa51d9888052a36 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java @@ -0,0 +1,125 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InterfaceRequiringRoleItemProvider extends RoleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InterfaceRequiringRoleItemProvider(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); + + addInterfacePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Interface feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfacePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InterfaceRequiringRole_interface_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InterfaceRequiringRole_interface_feature", "_UI_InterfaceRequiringRole_type"), + RepositoryPackage.Literals.INTERFACE_REQUIRING_ROLE__INTERFACE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns InterfaceRequiringRole.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InterfaceRequiringRole")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InterfaceRequiringRole)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InterfaceRequiringRole_type") : + getString("_UI_InterfaceRequiringRole_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6a7339482d01e78a9caeb3757400176f1a802df3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java @@ -0,0 +1,162 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.NamedElementItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ParameterItemProvider extends NamedElementItemProvider { + /** + * 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); + + addModifierPropertyDescriptor(object); + addDataTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Modifier feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addModifierPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Parameter_modifier_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Parameter_modifier_feature", "_UI_Parameter_type"), + RepositoryPackage.Literals.PARAMETER__MODIFIER, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Data Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDataTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Parameter_dataType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Parameter_dataType_feature", "_UI_Parameter_type"), + RepositoryPackage.Literals.PARAMETER__DATA_TYPE, + true, + false, + true, + null, + 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 = ((Parameter)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Parameter_type") : + getString("_UI_Parameter_type") + " " + 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); + + switch (notification.getFeatureID(Parameter.class)) { + case RepositoryPackage.PARAMETER__MODIFIER: + 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 ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..aa7bce12577e9058d9c8bca957a562fe82621c5e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java @@ -0,0 +1,150 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PrimitiveDataTypeItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PrimitiveDataTypeItemProvider(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); + + addTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * 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_PrimitiveDataType_type_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PrimitiveDataType_type_feature", "_UI_PrimitiveDataType_type"), + RepositoryPackage.Literals.PRIMITIVE_DATA_TYPE__TYPE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns PrimitiveDataType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PrimitiveDataType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PrimitiveDataType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PrimitiveDataType_type") : + getString("_UI_PrimitiveDataType_type") + " " + 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); + + switch (notification.getFeatureID(PrimitiveDataType.class)) { + case RepositoryPackage.PRIMITIVE_DATA_TYPE__TYPE: + 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 ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d8bdd89df2c9190600241cead0446993908dbc36 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java @@ -0,0 +1,148 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProvidingDelegationConnectorItemProvider extends DelegationConnectorItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProvidingDelegationConnectorItemProvider(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); + + addInnerInterfaceProvidingRolePropertyDescriptor(object); + addOuterInterfaceProvidingRolePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Inner Interface Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInnerInterfaceProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature", "_UI_ProvidingDelegationConnector_type"), + RepositoryPackage.Literals.PROVIDING_DELEGATION_CONNECTOR__INNER_INTERFACE_PROVIDING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Outer Interface Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOuterInterfaceProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature", "_UI_ProvidingDelegationConnector_type"), + RepositoryPackage.Literals.PROVIDING_DELEGATION_CONNECTOR__OUTER_INTERFACE_PROVIDING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ProvidingDelegationConnector.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ProvidingDelegationConnector")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ProvidingDelegationConnector)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ProvidingDelegationConnector_type") : + getString("_UI_ProvidingDelegationConnector_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d35454d224b6639900c81eb9589d51dca3e66277 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java @@ -0,0 +1,100 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryComponent; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryComponent} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RepositoryComponentItemProvider extends InterfaceProvidingRequiringEntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryComponentItemProvider(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 RepositoryComponent.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/RepositoryComponent")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((RepositoryComponent)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_RepositoryComponent_type") : + getString("_UI_RepositoryComponent_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b52e1c7231dcc4ef72671be4a2a833b8a175b472 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java @@ -0,0 +1,204 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RepositoryItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryItemProvider(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(RepositoryPackage.Literals.REPOSITORY__IMPORTS); + childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__DATATYPES); + childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__INTERFACES); + childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__COMPONENTS); + } + 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 Repository.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Repository")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Repository)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Repository_type") : + getString("_UI_Repository_type") + " " + 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); + + switch (notification.getFeatureID(Repository.class)) { + case RepositoryPackage.REPOSITORY__IMPORTS: + case RepositoryPackage.REPOSITORY__DATATYPES: + case RepositoryPackage.REPOSITORY__INTERFACES: + case RepositoryPackage.REPOSITORY__COMPONENTS: + 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 + (RepositoryPackage.Literals.REPOSITORY__IMPORTS, + RepositoryFactory.eINSTANCE.createImport())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__DATATYPES, + RepositoryFactory.eINSTANCE.createCollectionDataType())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__DATATYPES, + RepositoryFactory.eINSTANCE.createCompositeDataType())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__DATATYPES, + RepositoryFactory.eINSTANCE.createPrimitiveDataType())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__INTERFACES, + RepositoryFactory.eINSTANCE.createInterface())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__COMPONENTS, + RepositoryFactory.eINSTANCE.createBasicComponent())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__COMPONENTS, + RepositoryFactory.eINSTANCE.createCompositeComponent())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.REPOSITORY__COMPONENTS, + RepositoryFactory.eINSTANCE.createSubSystem())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..5c8b89e0c67b76cc5e1d5943a90f01b3254844f0 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java @@ -0,0 +1,632 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.util.RepositoryAdapterFactory; + +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; + +/** + * 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 RepositoryItemProviderAdapterFactory extends RepositoryAdapterFactory 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 RepositoryItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.applicationlevel.repository.Import} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ImportItemProvider importItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Import}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createImportAdapter() { + if (importItemProvider == null) { + importItemProvider = new ImportItemProvider(this); + } + + return importItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InterfaceRequiringRoleItemProvider interfaceRequiringRoleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInterfaceRequiringRoleAdapter() { + if (interfaceRequiringRoleItemProvider == null) { + interfaceRequiringRoleItemProvider = new InterfaceRequiringRoleItemProvider(this); + } + + return interfaceRequiringRoleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InterfaceProvidingRoleItemProvider interfaceProvidingRoleItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInterfaceProvidingRoleAdapter() { + if (interfaceProvidingRoleItemProvider == null) { + interfaceProvidingRoleItemProvider = new InterfaceProvidingRoleItemProvider(this); + } + + return interfaceProvidingRoleItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InterfaceItemProvider interfaceItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInterfaceAdapter() { + if (interfaceItemProvider == null) { + interfaceItemProvider = new InterfaceItemProvider(this); + } + + return interfaceItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SignatureItemProvider signatureItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSignatureAdapter() { + if (signatureItemProvider == null) { + signatureItemProvider = new SignatureItemProvider(this); + } + + return signatureItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterItemProvider parameterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.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 edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RepositoryItemProvider repositoryItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createRepositoryAdapter() { + if (repositoryItemProvider == null) { + repositoryItemProvider = new RepositoryItemProvider(this); + } + + return repositoryItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BasicComponentItemProvider basicComponentItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBasicComponentAdapter() { + if (basicComponentItemProvider == null) { + basicComponentItemProvider = new BasicComponentItemProvider(this); + } + + return basicComponentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SemaphoreItemProvider semaphoreItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSemaphoreAdapter() { + if (semaphoreItemProvider == null) { + semaphoreItemProvider = new SemaphoreItemProvider(this); + } + + return semaphoreItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CompositeComponentItemProvider compositeComponentItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCompositeComponentAdapter() { + if (compositeComponentItemProvider == null) { + compositeComponentItemProvider = new CompositeComponentItemProvider(this); + } + + return compositeComponentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SubSystemItemProvider subSystemItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSubSystemAdapter() { + if (subSystemItemProvider == null) { + subSystemItemProvider = new SubSystemItemProvider(this); + } + + return subSystemItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CollectionDataTypeItemProvider collectionDataTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCollectionDataTypeAdapter() { + if (collectionDataTypeItemProvider == null) { + collectionDataTypeItemProvider = new CollectionDataTypeItemProvider(this); + } + + return collectionDataTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CompositeDataTypeItemProvider compositeDataTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCompositeDataTypeAdapter() { + if (compositeDataTypeItemProvider == null) { + compositeDataTypeItemProvider = new CompositeDataTypeItemProvider(this); + } + + return compositeDataTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InnerDeclarationItemProvider innerDeclarationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInnerDeclarationAdapter() { + if (innerDeclarationItemProvider == null) { + innerDeclarationItemProvider = new InnerDeclarationItemProvider(this); + } + + return innerDeclarationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PrimitiveDataTypeItemProvider primitiveDataTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPrimitiveDataTypeAdapter() { + if (primitiveDataTypeItemProvider == null) { + primitiveDataTypeItemProvider = new PrimitiveDataTypeItemProvider(this); + } + + return primitiveDataTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AssemblyContextItemProvider assemblyContextItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAssemblyContextAdapter() { + if (assemblyContextItemProvider == null) { + assemblyContextItemProvider = new AssemblyContextItemProvider(this); + } + + return assemblyContextItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AssemblyConnectorItemProvider assemblyConnectorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAssemblyConnectorAdapter() { + if (assemblyConnectorItemProvider == null) { + assemblyConnectorItemProvider = new AssemblyConnectorItemProvider(this); + } + + return assemblyConnectorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ProvidingDelegationConnectorItemProvider providingDelegationConnectorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createProvidingDelegationConnectorAdapter() { + if (providingDelegationConnectorItemProvider == null) { + providingDelegationConnectorItemProvider = new ProvidingDelegationConnectorItemProvider(this); + } + + return providingDelegationConnectorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RequiringDelegationConnectorItemProvider requiringDelegationConnectorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createRequiringDelegationConnectorAdapter() { + if (requiringDelegationConnectorItemProvider == null) { + requiringDelegationConnectorItemProvider = new RequiringDelegationConnectorItemProvider(this); + } + + return requiringDelegationConnectorItemProvider; + } + + /** + * 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 (importItemProvider != null) importItemProvider.dispose(); + if (interfaceRequiringRoleItemProvider != null) interfaceRequiringRoleItemProvider.dispose(); + if (interfaceProvidingRoleItemProvider != null) interfaceProvidingRoleItemProvider.dispose(); + if (interfaceItemProvider != null) interfaceItemProvider.dispose(); + if (signatureItemProvider != null) signatureItemProvider.dispose(); + if (parameterItemProvider != null) parameterItemProvider.dispose(); + if (repositoryItemProvider != null) repositoryItemProvider.dispose(); + if (basicComponentItemProvider != null) basicComponentItemProvider.dispose(); + if (semaphoreItemProvider != null) semaphoreItemProvider.dispose(); + if (compositeComponentItemProvider != null) compositeComponentItemProvider.dispose(); + if (subSystemItemProvider != null) subSystemItemProvider.dispose(); + if (collectionDataTypeItemProvider != null) collectionDataTypeItemProvider.dispose(); + if (compositeDataTypeItemProvider != null) compositeDataTypeItemProvider.dispose(); + if (innerDeclarationItemProvider != null) innerDeclarationItemProvider.dispose(); + if (primitiveDataTypeItemProvider != null) primitiveDataTypeItemProvider.dispose(); + if (assemblyContextItemProvider != null) assemblyContextItemProvider.dispose(); + if (assemblyConnectorItemProvider != null) assemblyConnectorItemProvider.dispose(); + if (providingDelegationConnectorItemProvider != null) providingDelegationConnectorItemProvider.dispose(); + if (requiringDelegationConnectorItemProvider != null) requiringDelegationConnectorItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9fcb18cbe895a11622789e26fe6b92d183cb02d8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java @@ -0,0 +1,148 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RequiringDelegationConnectorItemProvider extends DelegationConnectorItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RequiringDelegationConnectorItemProvider(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); + + addInnerInterfaceRequiringRolePropertyDescriptor(object); + addOuterInterfaceRequiringRolePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Inner Interface Requiring Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInnerInterfaceRequiringRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature", "_UI_RequiringDelegationConnector_type"), + RepositoryPackage.Literals.REQUIRING_DELEGATION_CONNECTOR__INNER_INTERFACE_REQUIRING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Outer Interface Requiring Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOuterInterfaceRequiringRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature", "_UI_RequiringDelegationConnector_type"), + RepositoryPackage.Literals.REQUIRING_DELEGATION_CONNECTOR__OUTER_INTERFACE_REQUIRING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns RequiringDelegationConnector.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/RequiringDelegationConnector")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((RequiringDelegationConnector)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_RequiringDelegationConnector_type") : + getString("_UI_RequiringDelegationConnector_type") + " " + 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d2d413260824084f2e27a95847df23cba4adf2cb --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java @@ -0,0 +1,106 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Role; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Role} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RoleItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RoleItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Role)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Role_type") : + getString("_UI_Role_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..18bfeefb5ea36601aa1633f4165cff2a57912ca3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java @@ -0,0 +1,150 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SemaphoreItemProvider extends AdaptableEntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SemaphoreItemProvider(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); + + addCapacityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Capacity feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCapacityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Semaphore_capacity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Semaphore_capacity_feature", "_UI_Semaphore_type"), + RepositoryPackage.Literals.SEMAPHORE__CAPACITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Semaphore.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Semaphore")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Semaphore)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Semaphore_type") : + getString("_UI_Semaphore_type") + " " + 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); + + switch (notification.getFeatureID(Semaphore.class)) { + case RepositoryPackage.SEMAPHORE__CAPACITY: + 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 ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..200cdca188a154f9f38fbf53de140ccb5b48b826 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java @@ -0,0 +1,187 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SignatureItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SignatureItemProvider(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); + + addReturnTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Return Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReturnTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Signature_returnType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Signature_returnType_feature", "_UI_Signature_type"), + RepositoryPackage.Literals.SIGNATURE__RETURN_TYPE, + true, + false, + true, + null, + 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(RepositoryPackage.Literals.SIGNATURE__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 Signature.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Signature")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Signature)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Signature_type") : + getString("_UI_Signature_type") + " " + 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); + + switch (notification.getFeatureID(Signature.class)) { + case RepositoryPackage.SIGNATURE__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 + (RepositoryPackage.Literals.SIGNATURE__PARAMETERS, + RepositoryFactory.eINSTANCE.createParameter())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..be225224ae8d7818d632a512a841cfe911b2bdc3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java @@ -0,0 +1,167 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SubSystemItemProvider extends RepositoryComponentItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SubSystemItemProvider(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(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS); + childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS); + } + 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 SubSystem.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/SubSystem")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((SubSystem)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_SubSystem_type") : + getString("_UI_SubSystem_type") + " " + 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); + + switch (notification.getFeatureID(SubSystem.class)) { + case RepositoryPackage.SUB_SYSTEM__ASSEMBLY_CONTEXTS: + case RepositoryPackage.SUB_SYSTEM__ASSEMBLY_CONNECTORS: + case RepositoryPackage.SUB_SYSTEM__PROVIDING_DELEGATION_CONNECTORS: + case RepositoryPackage.SUB_SYSTEM__REQUIRING_DELEGATION_CONNECTORS: + 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 + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS, + RepositoryFactory.eINSTANCE.createAssemblyContext())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS, + RepositoryFactory.eINSTANCE.createAssemblyConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createProvidingDelegationConnector())); + + newChildDescriptors.add + (createChildParameter + (RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS, + RepositoryFactory.eINSTANCE.createRequiringDelegationConnector())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c1e8046b1eca49c2c968d85f4aa297aa9e16a81f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java @@ -0,0 +1,113 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; +import java.util.Collection; +import java.util.List; +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AbstractAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AbstractActionItemProvider + 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 AbstractActionItemProvider(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 AbstractAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AbstractAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_AbstractAction_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..81b4a30a87a607ef84d6974d6f3eb36e5dd25f80 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java @@ -0,0 +1,118 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AcquireActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AcquireActionItemProvider(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); + + addSemaphorePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Semaphore feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSemaphorePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AcquireAction_semaphore_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AcquireAction_semaphore_feature", "_UI_AcquireAction_type"), + ServicebehaviorPackage.Literals.ACQUIRE_ACTION__SEMAPHORE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns AcquireAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AcquireAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_AcquireAction_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..568fd196cf98c444dfc8cf1659173f2110f742d3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java @@ -0,0 +1,139 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BlackBoxBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BlackBoxBehaviorItemProvider(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(ServicebehaviorPackage.Literals.BLACK_BOX_BEHAVIOR__RESPONSE_TIME); + } + 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 BlackBoxBehavior.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BlackBoxBehavior")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BlackBoxBehavior_type"); + } + + + /** + * 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(BlackBoxBehavior.class)) { + case ServicebehaviorPackage.BLACK_BOX_BEHAVIOR__RESPONSE_TIME: + 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 + (ServicebehaviorPackage.Literals.BLACK_BOX_BEHAVIOR__RESPONSE_TIME, + ServicebehaviorFactory.eINSTANCE.createResponseTime())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..00b55571789b51e51b4e0c710a39704ac394147e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java @@ -0,0 +1,150 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BranchActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BranchActionItemProvider(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(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCHES); + childrenFeatures.add(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCH_PROBABILITIES); + } + 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 BranchAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BranchAction_type"); + } + + + /** + * 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(BranchAction.class)) { + case ServicebehaviorPackage.BRANCH_ACTION__BRANCHES: + case ServicebehaviorPackage.BRANCH_ACTION__BRANCH_PROBABILITIES: + 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 + (ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCHES, + ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCH_PROBABILITIES, + ServicebehaviorFactory.eINSTANCE.createBranchProbabilities())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..dd3101984bb6bc2e84a8bfe0f8dd14d6b001af3e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java @@ -0,0 +1,120 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BranchProbabilitiesItemProvider extends ControlFlowVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BranchProbabilitiesItemProvider(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 BranchProbabilities.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchProbabilities")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((BranchProbabilities)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_BranchProbabilities_type") : + getString("_UI_BranchProbabilities_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c8eea9b2b2f2709b498056ef6fe020ed92596a37 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java @@ -0,0 +1,120 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CallFrequencyItemProvider extends ControlFlowVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CallFrequencyItemProvider(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 CallFrequency.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CallFrequency")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((CallFrequency)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_CallFrequency_type") : + getString("_UI_CallFrequency_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..beeaf1e4471748113c1c663c3350256de462e0e3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java @@ -0,0 +1,146 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CoarseGrainedBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CoarseGrainedBehaviorItemProvider(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(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY); + childrenFeatures.add(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND); + } + 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 CoarseGrainedBehavior.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CoarseGrainedBehavior")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_CoarseGrainedBehavior_type"); + } + + + /** + * 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(CoarseGrainedBehavior.class)) { + case ServicebehaviorPackage.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY: + case ServicebehaviorPackage.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND: + 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 + (ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY, + ServicebehaviorFactory.eINSTANCE.createExternalCallFrequency())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND, + ServicebehaviorFactory.eINSTANCE.createResourceDemand())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7676708c17629a095aa349228e1555a1b8d5f023 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java @@ -0,0 +1,201 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComponentInternalBehaviorItemProvider + 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 ComponentInternalBehaviorItemProvider(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(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS); + } + 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 ComponentInternalBehavior.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ComponentInternalBehavior")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ComponentInternalBehavior_type"); + } + + + /** + * 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(ComponentInternalBehavior.class)) { + case ServicebehaviorPackage.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS: + 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 + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createAcquireAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createReleaseAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createInternalAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createForkAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createBranchAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createLoopAction())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS, + ServicebehaviorFactory.eINSTANCE.createExternalCallAction())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c0cfc0eccaaf21ae8ef0a86ff4dfbd3e3f97c621 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExternalCallActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExternalCallActionItemProvider(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(ServicebehaviorPackage.Literals.EXTERNAL_CALL_ACTION__EXTERNAL_CALL); + } + 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 ExternalCallAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ExternalCallAction_type"); + } + + + /** + * 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(ExternalCallAction.class)) { + case ServicebehaviorPackage.EXTERNAL_CALL_ACTION__EXTERNAL_CALL: + 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 + (ServicebehaviorPackage.Literals.EXTERNAL_CALL_ACTION__EXTERNAL_CALL, + ServicebehaviorFactory.eINSTANCE.createExternalCall())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d04ef28cbf76e47fe7207e8d13bc334bf8f4ad43 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java @@ -0,0 +1,178 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExternalCallFrequencyItemProvider + 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 ExternalCallFrequencyItemProvider(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(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL); + childrenFeatures.add(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__FREQUENCY); + } + 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 ExternalCallFrequency.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallFrequency")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ExternalCallFrequency_type"); + } + + + /** + * 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(ExternalCallFrequency.class)) { + case ServicebehaviorPackage.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL: + case ServicebehaviorPackage.EXTERNAL_CALL_FREQUENCY__FREQUENCY: + 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 + (ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL, + ServicebehaviorFactory.eINSTANCE.createExternalCall())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__FREQUENCY, + ServicebehaviorFactory.eINSTANCE.createCallFrequency())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..22794cb6550bcaae7e503ce8381841606c98184e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExternalCallItemProvider + extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExternalCallItemProvider(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); + + addSignaturePropertyDescriptor(object); + addInterfaceRequiringRolePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Signature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSignaturePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ExternalCall_signature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ExternalCall_signature_feature", "_UI_ExternalCall_type"), + ServicebehaviorPackage.Literals.EXTERNAL_CALL__SIGNATURE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Interface Requiring Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfaceRequiringRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ExternalCall_interfaceRequiringRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ExternalCall_interfaceRequiringRole_feature", "_UI_ExternalCall_type"), + ServicebehaviorPackage.Literals.EXTERNAL_CALL__INTERFACE_REQUIRING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ExternalCall.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCall")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ExternalCall)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ExternalCall_type") : + getString("_UI_ExternalCall_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..57eb2079004dbc8c38f29c0707b80ab648a57835 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java @@ -0,0 +1,139 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FineGrainedBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FineGrainedBehaviorItemProvider(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(ServicebehaviorPackage.Literals.FINE_GRAINED_BEHAVIOR__BEHAVIOR); + } + 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 FineGrainedBehavior.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/FineGrainedBehavior")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_FineGrainedBehavior_type"); + } + + + /** + * 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(FineGrainedBehavior.class)) { + case ServicebehaviorPackage.FINE_GRAINED_BEHAVIOR__BEHAVIOR: + 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 + (ServicebehaviorPackage.Literals.FINE_GRAINED_BEHAVIOR__BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..365f04cd77f3416e68bdf7a80d259e6374801750 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java @@ -0,0 +1,172 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ForkActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ForkActionItemProvider(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); + + addWithSynchronizationBarrierPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the With Synchronization Barrier feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addWithSynchronizationBarrierPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ForkAction_withSynchronizationBarrier_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ForkAction_withSynchronizationBarrier_feature", "_UI_ForkAction_type"), + ServicebehaviorPackage.Literals.FORK_ACTION__WITH_SYNCHRONIZATION_BARRIER, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_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(ServicebehaviorPackage.Literals.FORK_ACTION__FORKED_BEHAVIORS); + } + 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 ForkAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ForkAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ForkAction forkAction = (ForkAction)object; + return getString("_UI_ForkAction_type") + " " + forkAction.isWithSynchronizationBarrier(); + } + + + /** + * 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(ForkAction.class)) { + case ServicebehaviorPackage.FORK_ACTION__WITH_SYNCHRONIZATION_BARRIER: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ServicebehaviorPackage.FORK_ACTION__FORKED_BEHAVIORS: + 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 + (ServicebehaviorPackage.Literals.FORK_ACTION__FORKED_BEHAVIORS, + ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..1f122234ab36b93ae9eb76852cc972aaea579e04 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java @@ -0,0 +1,143 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InternalActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InternalActionItemProvider(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(ServicebehaviorPackage.Literals.INTERNAL_ACTION__RESOURCE_DEMAND); + } + 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 InternalAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InternalAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_InternalAction_type"); + } + + + /** + * 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(InternalAction.class)) { + case ServicebehaviorPackage.INTERNAL_ACTION__RESOURCE_DEMAND: + 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 + (ServicebehaviorPackage.Literals.INTERNAL_ACTION__RESOURCE_DEMAND, + ServicebehaviorFactory.eINSTANCE.createResourceDemand())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3dd1150f494de88e785757203e3b06af69bc83b9 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java @@ -0,0 +1,150 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LoopActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LoopActionItemProvider(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(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_BODY_BEHAVIOR); + childrenFeatures.add(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_ITERATION_COUNT); + } + 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 LoopAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_LoopAction_type"); + } + + + /** + * 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(LoopAction.class)) { + case ServicebehaviorPackage.LOOP_ACTION__LOOP_BODY_BEHAVIOR: + case ServicebehaviorPackage.LOOP_ACTION__LOOP_ITERATION_COUNT: + 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 + (ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_BODY_BEHAVIOR, + ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_ITERATION_COUNT, + ServicebehaviorFactory.eINSTANCE.createLoopIterationCount())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..284c61fdda463acdea4fc0f76273424e2cd286a1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java @@ -0,0 +1,120 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LoopIterationCountItemProvider extends ControlFlowVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LoopIterationCountItemProvider(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 LoopIterationCount.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopIterationCount")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((LoopIterationCount)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_LoopIterationCount_type") : + getString("_UI_LoopIterationCount_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a9148ee321a5a6d20a925df8861ccb0b2dfd3df8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java @@ -0,0 +1,118 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import java.util.Collection; +import java.util.List; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ReleaseActionItemProvider extends AbstractActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReleaseActionItemProvider(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); + + addSemaphorePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Semaphore feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSemaphorePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ReleaseAction_semaphore_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ReleaseAction_semaphore_feature", "_UI_ReleaseAction_type"), + ServicebehaviorPackage.Literals.RELEASE_ACTION__SEMAPHORE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ReleaseAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ReleaseAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ReleaseAction_type"); + } + + + /** + * 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/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c787a6d24b323cb5813785e8915d765da5a0ac9a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java @@ -0,0 +1,218 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ModelVariableItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceDemandItemProvider extends ModelVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceDemandItemProvider(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); + + addResourceTypePropertyDescriptor(object); + addCharacterizationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Resource Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addResourceTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ResourceDemand_resourceType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ResourceDemand_resourceType_feature", "_UI_ResourceDemand_type"), + ServicebehaviorPackage.Literals.RESOURCE_DEMAND__RESOURCE_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Characterization feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCharacterizationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ResourceDemand_characterization_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ResourceDemand_characterization_feature", "_UI_ResourceDemand_type"), + ServicebehaviorPackage.Literals.RESOURCE_DEMAND__CHARACTERIZATION, + 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(ServicebehaviorPackage.Literals.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION); + } + 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 ResourceDemand.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ResourceDemand")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((ResourceDemand)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ResourceDemand_type") : + getString("_UI_ResourceDemand_type") + " " + 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); + + switch (notification.getFeatureID(ResourceDemand.class)) { + case ServicebehaviorPackage.RESOURCE_DEMAND__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ServicebehaviorPackage.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION: + 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 + (ServicebehaviorPackage.Literals.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..32eb2cf977750ef0bc9a9aa6bb1b6971021f803c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java @@ -0,0 +1,195 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ModelVariableItemProvider; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResponseTimeItemProvider extends ModelVariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResponseTimeItemProvider(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); + + addCharacterizationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Characterization feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCharacterizationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ResponseTime_characterization_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ResponseTime_characterization_feature", "_UI_ResponseTime_type"), + ServicebehaviorPackage.Literals.RESPONSE_TIME__CHARACTERIZATION, + 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(ServicebehaviorPackage.Literals.RESPONSE_TIME__EXPLICIT_DESCRIPTION); + } + 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 ResponseTime.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ResponseTime")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + ModelVariableCharacterizationType labelValue = ((ResponseTime)object).getCharacterization(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ResponseTime_type") : + getString("_UI_ResponseTime_type") + " " + 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); + + switch (notification.getFeatureID(ResponseTime.class)) { + case ServicebehaviorPackage.RESPONSE_TIME__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ServicebehaviorPackage.RESPONSE_TIME__EXPLICIT_DESCRIPTION: + 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 + (ServicebehaviorPackage.Literals.RESPONSE_TIME__EXPLICIT_DESCRIPTION, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..52d13acb01a8e9c297278d57dd9db85cbd1ad8a0 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java @@ -0,0 +1,230 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServiceBehaviorAbstraction; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServiceBehaviorAbstraction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ServiceBehaviorAbstractionItemProvider + 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 ServiceBehaviorAbstractionItemProvider(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); + + addDescribedSignaturePropertyDescriptor(object); + addInterfaceProvidingRolePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Described Signature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDescribedSignaturePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ServiceBehaviorAbstraction_describedSignature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ServiceBehaviorAbstraction_describedSignature_feature", "_UI_ServiceBehaviorAbstraction_type"), + ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__DESCRIBED_SIGNATURE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Interface Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addInterfaceProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature", "_UI_ServiceBehaviorAbstraction_type"), + ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INTERFACE_PROVIDING_ROLE, + true, + false, + true, + null, + 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(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER); + childrenFeatures.add(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ServiceBehaviorAbstraction_type"); + } + + + /** + * 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(ServiceBehaviorAbstraction.class)) { + case ServicebehaviorPackage.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER: + case ServicebehaviorPackage.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE: + 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 + (ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER, + ParameterdependenciesFactory.eINSTANCE.createShadowParameter())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER, + ParameterdependenciesFactory.eINSTANCE.createServiceInputParameter())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER, + ParameterdependenciesFactory.eINSTANCE.createExternalCallReturnParameter())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER, + ParameterdependenciesFactory.eINSTANCE.createExternalCallParameter())); + + newChildDescriptors.add + (createChildParameter + (ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE, + ParameterdependenciesFactory.eINSTANCE.createInfluencedVariableReference())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..9a6b34a3ee0f3a598e4930fa9c1432d68e1a3d8d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java @@ -0,0 +1,608 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.util.ServicebehaviorAdapterFactory; + +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; + +/** + * 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 ServicebehaviorItemProviderAdapterFactory extends ServicebehaviorAdapterFactory 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 ServicebehaviorItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FineGrainedBehaviorItemProvider fineGrainedBehaviorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFineGrainedBehaviorAdapter() { + if (fineGrainedBehaviorItemProvider == null) { + fineGrainedBehaviorItemProvider = new FineGrainedBehaviorItemProvider(this); + } + + return fineGrainedBehaviorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComponentInternalBehaviorItemProvider componentInternalBehaviorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createComponentInternalBehaviorAdapter() { + if (componentInternalBehaviorItemProvider == null) { + componentInternalBehaviorItemProvider = new ComponentInternalBehaviorItemProvider(this); + } + + return componentInternalBehaviorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AcquireActionItemProvider acquireActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createAcquireActionAdapter() { + if (acquireActionItemProvider == null) { + acquireActionItemProvider = new AcquireActionItemProvider(this); + } + + return acquireActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ReleaseActionItemProvider releaseActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createReleaseActionAdapter() { + if (releaseActionItemProvider == null) { + releaseActionItemProvider = new ReleaseActionItemProvider(this); + } + + return releaseActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InternalActionItemProvider internalActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInternalActionAdapter() { + if (internalActionItemProvider == null) { + internalActionItemProvider = new InternalActionItemProvider(this); + } + + return internalActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ForkActionItemProvider forkActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createForkActionAdapter() { + if (forkActionItemProvider == null) { + forkActionItemProvider = new ForkActionItemProvider(this); + } + + return forkActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BranchActionItemProvider branchActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBranchActionAdapter() { + if (branchActionItemProvider == null) { + branchActionItemProvider = new BranchActionItemProvider(this); + } + + return branchActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BranchProbabilitiesItemProvider branchProbabilitiesItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBranchProbabilitiesAdapter() { + if (branchProbabilitiesItemProvider == null) { + branchProbabilitiesItemProvider = new BranchProbabilitiesItemProvider(this); + } + + return branchProbabilitiesItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected LoopActionItemProvider loopActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createLoopActionAdapter() { + if (loopActionItemProvider == null) { + loopActionItemProvider = new LoopActionItemProvider(this); + } + + return loopActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected LoopIterationCountItemProvider loopIterationCountItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createLoopIterationCountAdapter() { + if (loopIterationCountItemProvider == null) { + loopIterationCountItemProvider = new LoopIterationCountItemProvider(this); + } + + return loopIterationCountItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExternalCallActionItemProvider externalCallActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExternalCallActionAdapter() { + if (externalCallActionItemProvider == null) { + externalCallActionItemProvider = new ExternalCallActionItemProvider(this); + } + + return externalCallActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExternalCallItemProvider externalCallItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExternalCallAdapter() { + if (externalCallItemProvider == null) { + externalCallItemProvider = new ExternalCallItemProvider(this); + } + + return externalCallItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceDemandItemProvider resourceDemandItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createResourceDemandAdapter() { + if (resourceDemandItemProvider == null) { + resourceDemandItemProvider = new ResourceDemandItemProvider(this); + } + + return resourceDemandItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CoarseGrainedBehaviorItemProvider coarseGrainedBehaviorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCoarseGrainedBehaviorAdapter() { + if (coarseGrainedBehaviorItemProvider == null) { + coarseGrainedBehaviorItemProvider = new CoarseGrainedBehaviorItemProvider(this); + } + + return coarseGrainedBehaviorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExternalCallFrequencyItemProvider externalCallFrequencyItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createExternalCallFrequencyAdapter() { + if (externalCallFrequencyItemProvider == null) { + externalCallFrequencyItemProvider = new ExternalCallFrequencyItemProvider(this); + } + + return externalCallFrequencyItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CallFrequencyItemProvider callFrequencyItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCallFrequencyAdapter() { + if (callFrequencyItemProvider == null) { + callFrequencyItemProvider = new CallFrequencyItemProvider(this); + } + + return callFrequencyItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BlackBoxBehaviorItemProvider blackBoxBehaviorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBlackBoxBehaviorAdapter() { + if (blackBoxBehaviorItemProvider == null) { + blackBoxBehaviorItemProvider = new BlackBoxBehaviorItemProvider(this); + } + + return blackBoxBehaviorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResponseTimeItemProvider responseTimeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createResponseTimeAdapter() { + if (responseTimeItemProvider == null) { + responseTimeItemProvider = new ResponseTimeItemProvider(this); + } + + return responseTimeItemProvider; + } + + /** + * 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 (fineGrainedBehaviorItemProvider != null) fineGrainedBehaviorItemProvider.dispose(); + if (componentInternalBehaviorItemProvider != null) componentInternalBehaviorItemProvider.dispose(); + if (acquireActionItemProvider != null) acquireActionItemProvider.dispose(); + if (releaseActionItemProvider != null) releaseActionItemProvider.dispose(); + if (internalActionItemProvider != null) internalActionItemProvider.dispose(); + if (forkActionItemProvider != null) forkActionItemProvider.dispose(); + if (branchActionItemProvider != null) branchActionItemProvider.dispose(); + if (branchProbabilitiesItemProvider != null) branchProbabilitiesItemProvider.dispose(); + if (loopActionItemProvider != null) loopActionItemProvider.dispose(); + if (loopIterationCountItemProvider != null) loopIterationCountItemProvider.dispose(); + if (externalCallActionItemProvider != null) externalCallActionItemProvider.dispose(); + if (externalCallItemProvider != null) externalCallItemProvider.dispose(); + if (resourceDemandItemProvider != null) resourceDemandItemProvider.dispose(); + if (coarseGrainedBehaviorItemProvider != null) coarseGrainedBehaviorItemProvider.dispose(); + if (externalCallFrequencyItemProvider != null) externalCallFrequencyItemProvider.dispose(); + if (callFrequencyItemProvider != null) callFrequencyItemProvider.dispose(); + if (blackBoxBehaviorItemProvider != null) blackBoxBehaviorItemProvider.dispose(); + if (responseTimeItemProvider != null) responseTimeItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b1fe9c68863e97b6371ba98268351e3274c01d8f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java @@ -0,0 +1,115 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.system.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.ComposedProvidingRequiringEntityItemProvider; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.system.System} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SystemItemProvider extends ComposedProvidingRequiringEntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemItemProvider(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 System.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/System")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((edu.kit.ipd.descartes.mm.applicationlevel.system.System)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_System_type") : + getString("_UI_System_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ApplicationlevelEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ca665f3931067005857050eae55e369ca2dce7fe --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java @@ -0,0 +1,200 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.system.provider; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.util.SystemAdapterFactory; + +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; + +/** + * 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 SystemItemProviderAdapterFactory extends SystemAdapterFactory 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 SystemItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.applicationlevel.system.System} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemItemProvider systemItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.system.System}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSystemAdapter() { + if (systemItemProvider == null) { + systemItemProvider = new SystemItemProvider(this); + } + + return systemItemProvider; + } + + /** + * 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 (systemItemProvider != null) systemItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..e2b0898e44422ae3806877d45548176714919b35 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.applicationlevel.editor</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/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..913f285c0f1623fb26cf3d6f68eb2423baaafb4d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF @@ -0,0 +1,26 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation, + edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation, + edu.kit.ipd.descartes.mm.applicationlevel.presentation, + edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation, + edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation, + edu.kit.ipd.descartes.mm.applicationlevel.system.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf17865c125686a053bb4dd3731ec74938954169 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2cd622f6f9e0012dec944a5ac4650e4d419db41 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa21681600f5a716d10a3287a8961d762f0bb73a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3db6b0059d777b73ac5f5f94c86c442b813ed4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..c872719135ef87cc335328be9076187c3fdf7cfb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif new file mode 100644 index 0000000000000000000000000000000000000000..03168bdd288f44ea10e64d5c7672216a29d702f6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif new file mode 100644 index 0000000000000000000000000000000000000000..61ca32410390f9da40cb0a7541cce4fc4cec83d7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e69a72e1265b1957c0bc7fc77ad4007a56ac983 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a4d3bfcee04f68a4c9f191918b9df0dc0f669e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif new file mode 100644 index 0000000000000000000000000000000000000000..040a8eddef0054854e41fad3626fea58f87a3036 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif differ diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..e5e0f7c50180619a53d56986fa92d43636de8a8b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties @@ -0,0 +1,91 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Applicationlevel Editor +providerName = www.example.org + +_UI_FunctionsEditor_menu = &Functions Editor +_UI_ParameterdependenciesEditor_menu = &Parameterdependencies Editor +_UI_RepositoryEditor_menu = &Repository Editor +_UI_ServicebehaviorEditor_menu = &Servicebehavior Editor +_UI_SystemEditor_menu = &System Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_repository_category = Component Registry +_UI_Wizard_assembly_category = Component Assembly + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_FunctionsModelWizard_label = Functions Model +_UI_FunctionsModelWizard_description = Create a new Functions model + +_UI_FunctionsEditor_label = Functions Model Editor + +_UI_FunctionsEditorFilenameDefaultBase = My +_UI_FunctionsEditorFilenameExtensions = functions + +_UI_ParameterdependenciesModelWizard_label = Parameter Dependencies Model +_UI_ParameterdependenciesModelWizard_description = Create a new Parameter Dependencies model + +_UI_ParameterdependenciesEditor_label = Parameter Dependencies Model Editor + +_UI_ParameterdependenciesEditorFilenameDefaultBase = My +_UI_ParameterdependenciesEditorFilenameExtensions = parameterdependencies + +_UI_RepositoryModelWizard_label = Repository Model +_UI_RepositoryModelWizard_description = Create a new Repository model + +_UI_RepositoryEditor_label = Repository Model Editor + +_UI_RepositoryEditorFilenameDefaultBase = My +_UI_RepositoryEditorFilenameExtensions = repository + +_UI_ServicebehaviorModelWizard_label = Service Behavior Model +_UI_ServicebehaviorModelWizard_description = Create a new Service Behavior model + +_UI_ServicebehaviorEditor_label = Service Behavior Model Editor + +_UI_ServicebehaviorEditorFilenameDefaultBase = My +_UI_ServicebehaviorEditorFilenameExtensions = servicebehavior + +_UI_SystemModelWizard_label = System Model +_UI_SystemModelWizard_description = Create a new System model + +_UI_SystemEditor_label = System Model Editor + +_UI_SystemEditorFilenameDefaultBase = My +_UI_SystemEditorFilenameExtensions = system + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..92e7d9386e5ac34ee41431ab38044924eac079e9 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + +<!-- <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.repository.category" + name="%_UI_Wizard_repository_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsModelWizardID" + name="%_UI_FunctionsModelWizard_label" + class="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.repository.category" + icon="icons/full/obj16/FunctionsModelFile.gif"> + <description>%_UI_FunctionsModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension>--> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated applicationlevel --> + <editor + id="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsEditorID" + name="%_UI_FunctionsEditor_label" + icon="icons/full/obj16/FunctionsModelFile.gif" + extensions="functions" + class="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsEditor" + contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsActionBarContributor"> + </editor> + </extension> + +<!--<extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.repository.category" + name="%_UI_Wizard_repository_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesModelWizardID" + name="%_UI_ParameterdependenciesModelWizard_label" + class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.repository.category" + icon="icons/full/obj16/ParameterdependenciesModelFile.gif"> + <description>%_UI_ParameterdependenciesModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension>--> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated applicationlevel --> + <editor + id="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesEditorID" + name="%_UI_ParameterdependenciesEditor_label" + icon="icons/full/obj16/ParameterdependenciesModelFile.gif" + extensions="parameterdependencies" + class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesEditor" + contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesActionBarContributor"> + </editor> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated applicationlevel --> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.repository.category" + name="%_UI_Wizard_repository_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryModelWizardID" + name="%_UI_RepositoryModelWizard_label" + class="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.repository.category" + icon="icons/full/obj16/RepositoryModelFile.gif"> + <description>%_UI_RepositoryModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated applicationlevel --> + <editor + id="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryEditorID" + name="%_UI_RepositoryEditor_label" + icon="icons/full/obj16/RepositoryModelFile.gif" + extensions="repository" + class="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryEditor" + contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryActionBarContributor"> + </editor> + </extension> + +<!-- <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.repository.category" + name="%_UI_Wizard_repository_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorModelWizardID" + name="%_UI_ServicebehaviorModelWizard_label" + class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.repository.category" + icon="icons/full/obj16/ServicebehaviorModelFile.gif"> + <description>%_UI_ServicebehaviorModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension>--> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated applicationlevel --> + <editor + id="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorEditorID" + name="%_UI_ServicebehaviorEditor_label" + icon="icons/full/obj16/ServicebehaviorModelFile.gif" + extensions="servicebehavior" + class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorEditor" + contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorActionBarContributor"> + </editor> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated applicationlevel --> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.assembly.category" + name="%_UI_Wizard_assembly_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemModelWizardID" + name="%_UI_SystemModelWizard_label" + class="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.assembly.category" + icon="icons/full/obj16/SystemModelFile.gif"> + <description>%_UI_SystemModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated applicationlevel --> + <editor + id="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemEditorID" + name="%_UI_SystemEditor_label" + icon="icons/full/obj16/SystemModelFile.gif" + extensions="system" + class="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemEditor" + contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..f61fe1191567b2c7296a48bece087c6e9d8d76cf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..52048405c735148bdea67d600baa5e8e1d6c8e6e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Functions model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FunctionsActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FunctionsActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("functions-settings")); + toolBarManager.add(new Separator("functions-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.functionsMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..6551c20f810151b22b4d32bbf70c343ca4e00f02 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java @@ -0,0 +1,1842 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Functions model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FunctionsEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(FunctionsEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(FunctionsEditor.this); + handleActivate(); + } + } + else if (p == FunctionsEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(FunctionsEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == FunctionsEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(FunctionsEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FunctionsEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), FunctionsEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + FunctionsEditor.this.setSelectionToViewer(selection); + FunctionsEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..40395c27b1a6aaf667e17cc6a22802e89c4587d0 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java @@ -0,0 +1,630 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FunctionsModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FunctionsPackage functionsPackage = FunctionsPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FunctionsFactory functionsFactory = functionsPackage.getFunctionsFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FunctionsModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FunctionsModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewFunctions"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : functionsPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)functionsPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = functionsFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class FunctionsModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FunctionsModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class FunctionsModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FunctionsModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ApplicationlevelEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new FunctionsModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_label")); + newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_description")); + newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new FunctionsModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_label")); + initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..aefadfed762766ee8cc849b10d88dc0cf6af234a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Parameterdependencies model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ParameterdependenciesActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ParameterdependenciesActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("parameterdependencies-settings")); + toolBarManager.add(new Separator("parameterdependencies-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.parameterdependenciesMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..871566ba82372071becaea1a06042022be894a0c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java @@ -0,0 +1,1842 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Parameterdependencies model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ParameterdependenciesEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ParameterdependenciesEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(ParameterdependenciesEditor.this); + handleActivate(); + } + } + else if (p == ParameterdependenciesEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ParameterdependenciesEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ParameterdependenciesEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ParameterdependenciesEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ParameterdependenciesEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ParameterdependenciesEditor.this.setSelectionToViewer(selection); + ParameterdependenciesEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..67a5ec0ae504a771c8eb382b99fa8b6bccc85469 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java @@ -0,0 +1,630 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ParameterdependenciesModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterdependenciesPackage parameterdependenciesPackage = ParameterdependenciesPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterdependenciesFactory parameterdependenciesFactory = parameterdependenciesPackage.getParameterdependenciesFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterdependenciesModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ParameterdependenciesModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewParameterdependencies"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : parameterdependenciesPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)parameterdependenciesPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = parameterdependenciesFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ParameterdependenciesModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ParameterdependenciesModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ParameterdependenciesModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ParameterdependenciesModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ApplicationlevelEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ParameterdependenciesModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_label")); + newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_description")); + newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ParameterdependenciesModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_label")); + initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..e274a04ee039a072ffb2f75f31a3e72ad02de1cf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java @@ -0,0 +1,101 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Applicationlevel editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class ApplicationlevelEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final ApplicationlevelEditorPlugin INSTANCE = new ApplicationlevelEditorPlugin(); + + /** + * 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 ApplicationlevelEditorPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..da4a63746d3ffbceb6dbf4e811fb56983bc413d4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Repository model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RepositoryActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("repository-settings")); + toolBarManager.add(new Separator("repository-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.repositoryMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..81571e00b66231d55dd759a256810605d4ca795c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java @@ -0,0 +1,1846 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Repository model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RepositoryEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(RepositoryEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(RepositoryEditor.this); + handleActivate(); + } + } + else if (p == RepositoryEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(RepositoryEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == RepositoryEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(RepositoryEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + + // Add default resource sets to editor + editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/defaultresourcetypes.resourcetype"); + editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/primitivetypes.repository"); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), RepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + RepositoryEditor.this.setSelectionToViewer(selection); + RepositoryEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..e74f8aa4ef73016cd2e21d1e074913ea571e1a57 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java @@ -0,0 +1,630 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RepositoryModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RepositoryPackage repositoryPackage = RepositoryPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RepositoryFactory repositoryFactory = repositoryPackage.getRepositoryFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RepositoryModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RepositoryModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewRepository"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : repositoryPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)repositoryPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = repositoryFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class RepositoryModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class RepositoryModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RepositoryModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ApplicationlevelEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new RepositoryModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_label")); + newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_description")); + newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new RepositoryModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_label")); + initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..12918d770b69db4b0df2dd472d55eed091fea814 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Servicebehavior model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ServicebehaviorActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ServicebehaviorActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("servicebehavior-settings")); + toolBarManager.add(new Separator("servicebehavior-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.servicebehaviorMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..546902fd44afd4b4494c3a7298d8e4e742f1c52c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java @@ -0,0 +1,1842 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Servicebehavior model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ServicebehaviorEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ServicebehaviorEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(ServicebehaviorEditor.this); + handleActivate(); + } + } + else if (p == ServicebehaviorEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ServicebehaviorEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ServicebehaviorEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ServicebehaviorEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ServicebehaviorEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ServicebehaviorEditor.this.setSelectionToViewer(selection); + ServicebehaviorEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..e68f5b8f8c4fc8abe63c2bd40dd12378bfe802c8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java @@ -0,0 +1,630 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ServicebehaviorModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ServicebehaviorPackage servicebehaviorPackage = ServicebehaviorPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ServicebehaviorFactory servicebehaviorFactory = servicebehaviorPackage.getServicebehaviorFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ServicebehaviorModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ServicebehaviorModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewServicebehavior"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : servicebehaviorPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)servicebehaviorPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = servicebehaviorFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ServicebehaviorModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ServicebehaviorModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ServicebehaviorModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ServicebehaviorModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ApplicationlevelEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ServicebehaviorModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_label")); + newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_description")); + newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ServicebehaviorModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_label")); + initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..78ed4812b53782fa8aee1b3732e13047471c720f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the System model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SystemActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("system-settings")); + toolBarManager.add(new Separator("system-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.systemMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..ae81a468e6949712d95950d2e1d53c7d6663df1c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java @@ -0,0 +1,1842 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a System model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SystemEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(SystemEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(SystemEditor.this); + handleActivate(); + } + } + else if (p == SystemEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(SystemEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == SystemEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(SystemEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.applicationlevel.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), SystemEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + SystemEditor.this.setSelectionToViewer(selection); + SystemEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..9138a4a0d1aeef4038ba4bc94eb02862bec3bc7a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java @@ -0,0 +1,631 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.SystemFactory; +import edu.kit.ipd.descartes.mm.applicationlevel.system.SystemPackage; +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + + +import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SystemModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemPackage systemPackage = SystemPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemFactory systemFactory = systemPackage.getSystemFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewSystem"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : systemPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)systemPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = systemFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ApplicationlevelEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class SystemModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class SystemModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ApplicationlevelEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new SystemModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_label")); + newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_description")); + newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new SystemModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_label")); + initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/.project b/edu.kit.ipd.descartes.mm.applicationlevel.library/.project new file mode 100644 index 0000000000000000000000000000000000000000..027c9370b644b2a1000b756dcc93f8e47f918c05 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/.project @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.applicationlevel.library</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <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.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..cb949177a1f41ddfc3d244f4dcc381be9193521b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: edu.kit.ipd.descartes.mm.applicationlevel.library +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.library;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.emf.ecore diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..c6990f2fdfd435e9715f2c548d3ee526306e27db --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties @@ -0,0 +1,3 @@ +bin.includes = META-INF/,\ + library/,\ + plugin.xml diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype new file mode 100644 index 0000000000000000000000000000000000000000..b304da21876af180ac951f45402a01034971f9ae --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<resourcetype:ResourceTypeRepository xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:resourcetype="http://www.descartes-research.net/metamodel/resourcetype/0.1"> + <resourceTypes xsi:type="resourcetype:ProcessingResourceType" id="_3ql5IJB4EeKmfoqNH_-HEA" name="CPU"/> + <resourceTypes xsi:type="resourcetype:ProcessingResourceType" id="_52tLYJB4EeKmfoqNH_-HEA" name="DELAY"/> +</resourcetype:ResourceTypeRepository> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository new file mode 100644 index 0000000000000000000000000000000000000000..deaab44eb2800a62d77037d928c71470b7b0158f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ASCII"?> +<repository:Repository xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:repository="http://www.descartes-research.net/metamodel/repository/0.1" id="_M22LwDPEEeKm3rw9pvZMDA" name="primitivetype1"> + <datatypes xsi:type="repository:PrimitiveDataType" id="_M22LwTPEEeKm3rw9pvZMDA" name="boolean" type="BOOL"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_OBeL0DPEEeKm3rw9pvZMDA" name="int"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgDaOEeK3VJC2wj7WsA" name="char" type="CHAR"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgTaOEeK3VJC2wj7WsA" name="string" type="STRING"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgjaOEeK3VJC2wj7WsA" name="double" type="DOUBLE"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgzaOEeK3VJC2wj7WsA" name="byte" type="BYTE"/> + <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXhDaOEeK3VJC2wj7WsA" name="long" type="LONG"/> +</repository:Repository> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..c2a429c76ca74847223e23c9ebad253b97ae96c8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + point="org.eclipse.emf.ecore.uri_mapping"> + <mapping + source="pathmap://DMM_APPLICATIONLEVEL_MODELS/" + target="platform:/plugin/edu.kit.ipd.descartes.mm.applicationlevel.library/library/"> + </mapping> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..5c31e561413886524e28c90bdc3398a56657a23d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.library</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/.classpath b/edu.kit.ipd.descartes.mm.deployment.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/.project b/edu.kit.ipd.descartes.mm.deployment.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..a7cb2c010b875292cf2852109ccff4b21ad34b41 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.deployment.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/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..70a92c0dd731216e0e07bca7e534e42014980418 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.deployment.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.deployment.provider.DeploymentEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.deployment.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.deployment;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/build.properties b/edu.kit.ipd.descartes.mm.deployment.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d6e42e4548dd882b82535ee0b1a8a743697dfca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif differ diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif differ diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif differ diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..f03a0c3a7856c6ea67f57242a1cf29e6f5bb8004 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties @@ -0,0 +1,28 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Deployment 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_Deployment_type = Deployment +_UI_DeploymentContext_type = Context +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_Deployment_system_feature = System +_UI_Deployment_targetResourceLandscape_feature = Target Resource Landscape +_UI_Deployment_deploymentContexts_feature = Deployment Contexts +_UI_DeploymentContext_deployment_feature = Deployment +_UI_DeploymentContext_assemblyContext_feature = Assembly Context +_UI_DeploymentContext_resourceContainer_feature = Resource Container +_UI_Unknown_feature = Unspecified + diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..777c3fe4dadfb85bbedc0baa785d158d02f39e52 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/deployment/0.1" + class="edu.kit.ipd.descartes.mm.deployment.provider.DeploymentItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml b/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..b76711fd02fda9808e33ea6daf75af730a23ab56 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.deployment.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..4530b6637b932b7914f8ce50181c7c053bcef014 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java @@ -0,0 +1,174 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.deployment.DeploymentContext; +import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage; + +import java.util.Collection; +import java.util.List; + +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; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DeploymentContextItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentContextItemProvider(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); + + addAssemblyContextPropertyDescriptor(object); + addResourceContainerPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Assembly Context feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAssemblyContextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DeploymentContext_assemblyContext_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DeploymentContext_assemblyContext_feature", "_UI_DeploymentContext_type"), + DeploymentPackage.Literals.DEPLOYMENT_CONTEXT__ASSEMBLY_CONTEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Resource Container feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addResourceContainerPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_DeploymentContext_resourceContainer_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_DeploymentContext_resourceContainer_feature", "_UI_DeploymentContext_type"), + DeploymentPackage.Literals.DEPLOYMENT_CONTEXT__RESOURCE_CONTAINER, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns DeploymentContext.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DeploymentContext")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((DeploymentContext)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_DeploymentContext_type") : + getString("_UI_DeploymentContext_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return DeploymentEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..9a3e30adea9c0089cb19fe1c723450ea187edfc8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java @@ -0,0 +1,102 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Deployment edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class DeploymentEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final DeploymentEditPlugin INSTANCE = new DeploymentEditPlugin(); + + /** + * 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 DeploymentEditPlugin() { + super + (new ResourceLocator [] { + ApplicationlevelEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..1488450b205f30707da976e42d047f10379eaa08 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java @@ -0,0 +1,219 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.deployment.Deployment; +import edu.kit.ipd.descartes.mm.deployment.DeploymentFactory; +import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.deployment.Deployment} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DeploymentItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentItemProvider(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); + + addSystemPropertyDescriptor(object); + addTargetResourceLandscapePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the System feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSystemPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Deployment_system_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Deployment_system_feature", "_UI_Deployment_type"), + DeploymentPackage.Literals.DEPLOYMENT__SYSTEM, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Target Resource Landscape feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addTargetResourceLandscapePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Deployment_targetResourceLandscape_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Deployment_targetResourceLandscape_feature", "_UI_Deployment_type"), + DeploymentPackage.Literals.DEPLOYMENT__TARGET_RESOURCE_LANDSCAPE, + true, + false, + true, + null, + 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(DeploymentPackage.Literals.DEPLOYMENT__DEPLOYMENT_CONTEXTS); + } + 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 Deployment.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Deployment")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Deployment)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Deployment_type") : + getString("_UI_Deployment_type") + " " + 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); + + switch (notification.getFeatureID(Deployment.class)) { + case DeploymentPackage.DEPLOYMENT__DEPLOYMENT_CONTEXTS: + 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 + (DeploymentPackage.Literals.DEPLOYMENT__DEPLOYMENT_CONTEXTS, + DeploymentFactory.eINSTANCE.createDeploymentContext())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return DeploymentEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..b03790e74ec53e5594f670570697e7d8d23b0ddf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java @@ -0,0 +1,224 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.provider; + +import edu.kit.ipd.descartes.mm.deployment.util.DeploymentAdapterFactory; + +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; + +/** + * 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 DeploymentItemProviderAdapterFactory extends DeploymentAdapterFactory 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 DeploymentItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.deployment.Deployment} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentItemProvider deploymentItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.deployment.Deployment}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDeploymentAdapter() { + if (deploymentItemProvider == null) { + deploymentItemProvider = new DeploymentItemProvider(this); + } + + return deploymentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentContextItemProvider deploymentContextItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDeploymentContextAdapter() { + if (deploymentContextItemProvider == null) { + deploymentContextItemProvider = new DeploymentContextItemProvider(this); + } + + return deploymentContextItemProvider; + } + + /** + * 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 (deploymentItemProvider != null) deploymentItemProvider.dispose(); + if (deploymentContextItemProvider != null) deploymentContextItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/.classpath b/edu.kit.ipd.descartes.mm.deployment.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/.project b/edu.kit.ipd.descartes.mm.deployment.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..5b214e8ed70a3f330a85a1b52245022b7d150e5c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.deployment.editor</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/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..e3cc5228df6dabbb6eedf4f4fe00fc04a7bf44c6 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.deployment.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.deployment.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.deployment.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/build.properties b/edu.kit.ipd.descartes.mm.deployment.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..8315589c9999c927e96598f1e8e47847159a4061 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif new file mode 100644 index 0000000000000000000000000000000000000000..a6b42e7444a35d684523050b8bdd4c17d1eedc18 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif differ diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..a0d638660912923643f6918dbd1b4757f04cbc28 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties @@ -0,0 +1,54 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Deployment Editor +providerName = www.example.org + +_UI_DeploymentEditor_menu = &Deployment Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_deployment_category = System Deployment + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_DeploymentModelWizard_label = Deployment Model +_UI_DeploymentModelWizard_description = Create a new Deployment model + +_UI_DeploymentEditor_label = Deployment Model Editor + +_UI_DeploymentEditorFilenameDefaultBase = My +_UI_DeploymentEditorFilenameExtensions = deployment + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..c306bb4db18a87ef7e15c5dd50343ebec5e15938 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.deployment.category" + name="%_UI_Wizard_deployment_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentModelWizardID" + name="%_UI_DeploymentModelWizard_label" + class="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.deployment.category" + icon="icons/full/obj16/DeploymentModelFile.gif"> + <description>%_UI_DeploymentModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditorID" + name="%_UI_DeploymentEditor_label" + icon="icons/full/obj16/DeploymentModelFile.gif" + extensions="deployment" + class="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditor" + contributorClass="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml b/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..e6978b6f1940ecd4ac11131f4b6c8863b8866c2b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.deployment.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..f672b61723b24a2a3b3fd7367476ee16614213a5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java @@ -0,0 +1,424 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Deployment model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DeploymentActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(DeploymentEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(DeploymentEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("deployment-settings")); + toolBarManager.add(new Separator("deployment-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditor_menu"), "edu.kit.ipd.descartes.mm.deploymentMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..505d301ef9798687af57928291d01fed5a006891 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java @@ -0,0 +1,1846 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.deployment.provider.DeploymentItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Deployment model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DeploymentEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(DeploymentEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(DeploymentEditor.this); + handleActivate(); + } + } + else if (p == DeploymentEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(DeploymentEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == DeploymentEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(DeploymentEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.deployment.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new DeploymentItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.deployment.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.deployment.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), DeploymentEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + DeploymentEditor.this.setSelectionToViewer(selection); + DeploymentEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + DeploymentEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return DeploymentEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return DeploymentEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..f58e16787a26175127f8c45cd1605d4689567c3c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java @@ -0,0 +1,104 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Deployment editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class DeploymentEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final DeploymentEditorPlugin INSTANCE = new DeploymentEditorPlugin(); + + /** + * 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 DeploymentEditorPlugin() { + super + (new ResourceLocator [] { + ApplicationlevelEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..fa4b8f289d1b409ce4d146e1d3542837a643c186 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java @@ -0,0 +1,628 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.deployment.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.deployment.DeploymentFactory; +import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage; +import edu.kit.ipd.descartes.mm.deployment.provider.DeploymentEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DeploymentModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentPackage deploymentPackage = DeploymentPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentFactory deploymentFactory = deploymentPackage.getDeploymentFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DeploymentModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(DeploymentEditorPlugin.INSTANCE.getImage("full/wizban/NewDeployment"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : deploymentPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)deploymentPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = deploymentFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), DeploymentEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + DeploymentEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class DeploymentModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(DeploymentEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class DeploymentModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DeploymentModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(DeploymentEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(DeploymentEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return DeploymentEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + DeploymentEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(DeploymentEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new DeploymentModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_label")); + newFileCreationPage.setDescription(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_description")); + newFileCreationPage.setFileName(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new DeploymentModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_label")); + initialObjectCreationPage.setDescription(DeploymentEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..0b5b48c57a7c00da4a59e5273da2108e3cb39a50 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.resourcelandscape.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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..c82bc3de11d74837205a6adec5c58a91841ff77e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.resourcelandscape.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.containerrepository.provider, + edu.kit.ipd.descartes.mm.resourceconfiguration.provider, + edu.kit.ipd.descartes.mm.resourcelandscape.provider, + edu.kit.ipd.descartes.mm.resourcetype.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a6170e0da3df46b694951c50040942eb893f9dc Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dccd278a641469597ed65c547c9adb34f01fd1a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..a47b32b7d9b44ea2d815901ae43becbeeedfca1e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..970be05e66e8b9636471d3899a1b011e50df2011 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..88150e61379533ae117964afc9a5c0dfc09d3670 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..b41595970d5e745969978a2f93c4135768d101cb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif new file mode 100644 index 0000000000000000000000000000000000000000..23bed02a9a48a1ba19bb37ad7d17735036f2444b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e50474667d30c397798304802394a7fe89883b2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..281b5cfae116c915c886ad33ea2c472092ea1dbe Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ede289a77ed9c1c6dcb44960c17b09e08ceaa81 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1deee6934348e3785d9fdfdf0d63111696a8c3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..a57671831e45a1a8ca3240adbc3c4752ac221f14 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..f61f1983011465fb694356efbdca7452b94f81ce Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..0289a2ad631d700d3f11b3c4abc39ea915a34ef8 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif new file mode 100644 index 0000000000000000000000000000000000000000..51394a3580c3e1cb2fa05f7c231e64e888736e87 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd2a29ab6f1c79d7d460bd7181ff2ef6f96feb91 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2efc630b973c06f0fbcd03b3da861fe87e2f175 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..b89aadc0cde78d24f1477658f874a52b0703fbc5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..36bc72b827c8389d2c46ed7febfb8165c8e8bcb7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..f075771bb8f63e0bf102c50c229bcb01cb3b5129 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a4e9adb3ba98f6a7091ae75fe2c4250d5e496f6 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif new file mode 100644 index 0000000000000000000000000000000000000000..7a5b36204c5fbbd79eb11cbf23000acdab8a9688 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif new file mode 100644 index 0000000000000000000000000000000000000000..c51ddff895148855cb0c606840648cb601980b0d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a87700f4c7cdeae66d88a9f69e203fe883a50f7 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bf6bbe1059a1bf35a4fda0b73d8437f6ba48e15 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed645c34d5ac3d9bc121bc405626255ddec2f20d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif new file mode 100644 index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4fb30e96873d2484faec9d508dcbdd69e73d82e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif new file mode 100644 index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c2aaac84ee6ea15757df499505e9aa0de4288f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif new file mode 100644 index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4b530eca173b1070d5d876a0154bc370d8896b4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif new file mode 100644 index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..1f319b0e33c2550ef60aa6001a9cbdf75e6d03a8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties @@ -0,0 +1,90 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Resourcelandscape 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_ComputingInfrastructure_type = Computing Infrastructure +_UI_NetworkingInfrastructure_type = Networking Infrastructure +_UI_StorageInfrastructure_type = Storage Infrastructure +_UI_Container_type = Container +_UI_RuntimeEnvironment_type = Runtime Environment +_UI_DataCenter_type = Data Center +_UI_DistributedDataCenter_type = Distributed Data Center +_UI_CompositeHardwareInfrastructure_type = Composite Hardware Infrastructure +_UI_AbstractHardwareInfrastructure_type = Abstract Hardware Infrastructure +_UI_ConfigurationSpecification_type = Configuration Specification +_UI_ProcessingResourceSpecification_type = Processing Resource Specification +_UI_NumberOfParallelProcessingUnits_type = Number Of Parallel Processing Units +_UI_LinkingResourceSpecification_type = Linking Resource Specification +_UI_ActiveResourceSpecification_type = Active Resource Specification +_UI_CustomConfigurationSpecification_type = Custom Configuration Specification +_UI_PassiveResourceSpecification_type = Passive Resource Specification +_UI_PassiveResourceCapacity_type = Passive Resource Capacity +_UI_ContainerRepository_type = Container Repository +_UI_ContainerTemplate_type = Container Template +_UI_ResourceTypeRepository_type = Resource Type Repository +_UI_ResourceType_type = Resource Type +_UI_ProcessingResourceType_type = Processing Resource Type +_UI_CommunicationLinkResourceType_type = Communication Link Resource Type +_UI_PassiveResourceType_type = Passive Resource Type +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_Container_contains_feature = Contains +_UI_Container_configSpec_feature = Config Spec +_UI_Container_template_feature = Template +_UI_RuntimeEnvironment_containedIn_feature = Contained In +_UI_RuntimeEnvironment_ofClass_feature = Of Class +_UI_DataCenter_belongsTo_feature = Belongs To +_UI_DataCenter_contains_feature = Contains +_UI_DistributedDataCenter_consistsOf_feature = Consists Of +_UI_CompositeHardwareInfrastructure_contains_feature = Contains +_UI_AbstractHardwareInfrastructure_partOf_feature = Part Of +_UI_ProcessingResourceSpecification_schedulingPolicy_feature = Scheduling Policy +_UI_ProcessingResourceSpecification_processingRate_feature = Processing Rate +_UI_ProcessingResourceSpecification_activeResourceType_feature = Active Resource Type +_UI_ProcessingResourceSpecification_parentResourceSpecification_feature = Parent Resource Specification +_UI_ProcessingResourceSpecification_nrOfParProcUnits_feature = Nr Of Par Proc Units +_UI_NumberOfParallelProcessingUnits_number_feature = Number +_UI_NumberOfParallelProcessingUnits_processingResourceSpec_feature = Processing Resource Spec +_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature = Connected Resource Specifications +_UI_LinkingResourceSpecification_parentResourceConfiguration_feature = Parent Resource Configuration +_UI_LinkingResourceSpecification_bandwidth_feature = Bandwidth +_UI_LinkingResourceSpecification_communicationLinkResourceType_feature = Communication Link Resource Type +_UI_ActiveResourceSpecification_processingResourceSpecifications_feature = Processing Resource Specifications +_UI_ActiveResourceSpecification_linkingResources_feature = Linking Resources +_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature = Non Functional Properties +_UI_PassiveResourceSpecification_capacity_feature = Capacity +_UI_PassiveResourceSpecification_passiveResourceType_feature = Passive Resource Type +_UI_PassiveResourceCapacity_capacity_feature = Capacity +_UI_ContainerRepository_templates_feature = Templates +_UI_ContainerTemplate_templateConfig_feature = Template Config +_UI_ResourceTypeRepository_resourceTypes_feature = Resource Types +_UI_ResourceType_parentResourceRepository_feature = Parent Resource Repository +_UI_Unknown_feature = Unspecified + +_UI_SchedulingPolicy_DELAY_literal = DELAY +_UI_SchedulingPolicy_FCFS_literal = FCFS +_UI_SchedulingPolicy_PROCESSOR_SHARING_literal = PROCESSOR_SHARING +_UI_SchedulingPolicy_RANDOM_literal = RANDOM +_UI_SchedulingPolicy_NA_literal = NA +_UI_RuntimeEnvironmentClasses_HYPERVISOR_literal = HYPERVISOR +_UI_RuntimeEnvironmentClasses_OPERATING_SYSTEM_literal = OPERATING SYSTEM +_UI_RuntimeEnvironmentClasses_OS_VM_literal = OS VM +_UI_RuntimeEnvironmentClasses_PROCESS_VM_literal = PROCESS VM +_UI_RuntimeEnvironmentClasses_MIDDLEWARE_literal = MIDDLEWARE +_UI_RuntimeEnvironmentClasses_OTHER_literal = OTHER +_UI_ContainerTemplate_referringContainers_feature = Referring Containers +_UI_ResourcePoolConfiguration_type = Resource Pool Configuration +_UI_ResourcePoolConfiguration_resourcePoolConfig_feature = Resource Pool Config +_UI_ContainerTemplate_runningOn_feature = Running On diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4523ae0015b38ff9bc4510bf4889ef6259b64bbd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/resourcelandscape/0.1" + class="edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1" + class="edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/containerrepository/0.1" + class="edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory" + 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> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/resourcetype/0.1" + class="edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..52fdb3e8b3a2cae7d086662eb09327565f37cdf7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.resourcelandscape.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d9258a8df6b0f1ea8a78a20b607715d14d09e403 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java @@ -0,0 +1,174 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository; +import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryFactory; +import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerRepositoryItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerRepositoryItemProvider(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(ContainerrepositoryPackage.Literals.CONTAINER_REPOSITORY__TEMPLATES); + } + 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 ContainerRepository.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ContainerRepository")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ContainerRepository)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ContainerRepository_type") : + getString("_UI_ContainerRepository_type") + " " + 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); + + switch (notification.getFeatureID(ContainerRepository.class)) { + case ContainerrepositoryPackage.CONTAINER_REPOSITORY__TEMPLATES: + 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 + (ContainerrepositoryPackage.Literals.CONTAINER_REPOSITORY__TEMPLATES, + ContainerrepositoryFactory.eINSTANCE.createContainerTemplate())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..37910aec28bdf1804a890d71c4326148664643fc --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java @@ -0,0 +1,232 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate; +import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerTemplateItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerTemplateItemProvider(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); + + addReferringContainersPropertyDescriptor(object); + addRunningOnPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Referring Containers feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReferringContainersPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ContainerTemplate_referringContainers_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ContainerTemplate_referringContainers_feature", "_UI_ContainerTemplate_type"), + ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__REFERRING_CONTAINERS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Running On feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRunningOnPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ContainerTemplate_runningOn_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ContainerTemplate_runningOn_feature", "_UI_ContainerTemplate_type"), + ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__RUNNING_ON, + true, + false, + true, + null, + 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(ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG); + } + 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 ContainerTemplate.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ContainerTemplate")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ContainerTemplate)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ContainerTemplate_type") : + getString("_UI_ContainerTemplate_type") + " " + 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); + + switch (notification.getFeatureID(ContainerTemplate.class)) { + case ContainerrepositoryPackage.CONTAINER_TEMPLATE__TEMPLATE_CONFIG: + 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 + (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG, + ResourceconfigurationFactory.eINSTANCE.createActiveResourceSpecification())); + + newChildDescriptors.add + (createChildParameter + (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG, + ResourceconfigurationFactory.eINSTANCE.createCustomConfigurationSpecification())); + + newChildDescriptors.add + (createChildParameter + (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG, + ResourceconfigurationFactory.eINSTANCE.createPassiveResourceSpecification())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..4571f6ed72c7b0209ef483105cb744d836c51fdd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java @@ -0,0 +1,224 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.provider; + +import edu.kit.ipd.descartes.mm.containerrepository.util.ContainerrepositoryAdapterFactory; + +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; + +/** + * 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 ContainerrepositoryItemProviderAdapterFactory extends ContainerrepositoryAdapterFactory 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 ContainerrepositoryItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerRepositoryItemProvider containerRepositoryItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createContainerRepositoryAdapter() { + if (containerRepositoryItemProvider == null) { + containerRepositoryItemProvider = new ContainerRepositoryItemProvider(this); + } + + return containerRepositoryItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerTemplateItemProvider containerTemplateItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createContainerTemplateAdapter() { + if (containerTemplateItemProvider == null) { + containerTemplateItemProvider = new ContainerTemplateItemProvider(this); + } + + return containerTemplateItemProvider; + } + + /** + * 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 (containerRepositoryItemProvider != null) containerRepositoryItemProvider.dispose(); + if (containerTemplateItemProvider != null) containerTemplateItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d9e9057aa81914511a31a288d676a6ebc8febb2a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java @@ -0,0 +1,164 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ActiveResourceSpecificationItemProvider + extends ConfigurationSpecificationItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ActiveResourceSpecificationItemProvider(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(ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS); + childrenFeatures.add(ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES); + } + 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 ActiveResourceSpecification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ActiveResourceSpecification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ActiveResourceSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ActiveResourceSpecification_type") : + getString("_UI_ActiveResourceSpecification_type") + " " + 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); + + switch (notification.getFeatureID(ActiveResourceSpecification.class)) { + case ResourceconfigurationPackage.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS: + case ResourceconfigurationPackage.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES: + 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 + (ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS, + ResourceconfigurationFactory.eINSTANCE.createProcessingResourceSpecification())); + + newChildDescriptors.add + (createChildParameter + (ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES, + ResourceconfigurationFactory.eINSTANCE.createLinkingResourceSpecification())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..54ea1a02998266ad03f9cb1e910c1bda43d9145c --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java @@ -0,0 +1,117 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ConfigurationSpecification; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.resourceconfiguration.ConfigurationSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ConfigurationSpecificationItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ConfigurationSpecificationItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ConfigurationSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ConfigurationSpecification_type") : + getString("_UI_ConfigurationSpecification_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..566f7bd1502efe9b45a56b37dd3729a7a3355ec2 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java @@ -0,0 +1,136 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +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; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CustomConfigurationSpecificationItemProvider + extends ConfigurationSpecificationItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CustomConfigurationSpecificationItemProvider(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); + + addNonFunctionalPropertiesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Non Functional Properties feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNonFunctionalPropertiesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature", "_UI_CustomConfigurationSpecification_type"), + ResourceconfigurationPackage.Literals.CUSTOM_CONFIGURATION_SPECIFICATION__NON_FUNCTIONAL_PROPERTIES, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns CustomConfigurationSpecification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomConfigurationSpecification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CustomConfigurationSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CustomConfigurationSpecification_type") : + getString("_UI_CustomConfigurationSpecification_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c3127cc087d2ca6b87c3c3846494fa0ba1d78987 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java @@ -0,0 +1,208 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LinkingResourceSpecificationItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LinkingResourceSpecificationItemProvider(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); + + addConnectedResourceSpecificationsPropertyDescriptor(object); + addBandwidthPropertyDescriptor(object); + addCommunicationLinkResourceTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Connected Resource Specifications feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addConnectedResourceSpecificationsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature", "_UI_LinkingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__CONNECTED_RESOURCE_SPECIFICATIONS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Bandwidth feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addBandwidthPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_LinkingResourceSpecification_bandwidth_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_bandwidth_feature", "_UI_LinkingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__BANDWIDTH, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Communication Link Resource Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCommunicationLinkResourceTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_LinkingResourceSpecification_communicationLinkResourceType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_communicationLinkResourceType_feature", "_UI_LinkingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__COMMUNICATION_LINK_RESOURCE_TYPE, + true, + false, + false, + null, + null, + null)); + } + + /** + * This returns LinkingResourceSpecification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LinkingResourceSpecification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((LinkingResourceSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_LinkingResourceSpecification_type") : + getString("_UI_LinkingResourceSpecification_type") + " " + 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); + + switch (notification.getFeatureID(LinkingResourceSpecification.class)) { + case ResourceconfigurationPackage.LINKING_RESOURCE_SPECIFICATION__BANDWIDTH: + case ResourceconfigurationPackage.LINKING_RESOURCE_SPECIFICATION__COMMUNICATION_LINK_RESOURCE_TYPE: + 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 ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ccad46cd6767004b1b1604670f1682928ec21460 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java @@ -0,0 +1,161 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class NumberOfParallelProcessingUnitsItemProvider + extends AdaptableEntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NumberOfParallelProcessingUnitsItemProvider(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); + + addNumberPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Number feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNumberPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_NumberOfParallelProcessingUnits_number_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NumberOfParallelProcessingUnits_number_feature", "_UI_NumberOfParallelProcessingUnits_type"), + ResourceconfigurationPackage.Literals.NUMBER_OF_PARALLEL_PROCESSING_UNITS__NUMBER, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns NumberOfParallelProcessingUnits.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/NumberOfParallelProcessingUnits")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((NumberOfParallelProcessingUnits)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_NumberOfParallelProcessingUnits_type") : + getString("_UI_NumberOfParallelProcessingUnits_type") + " " + 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); + + switch (notification.getFeatureID(NumberOfParallelProcessingUnits.class)) { + case ResourceconfigurationPackage.NUMBER_OF_PARALLEL_PROCESSING_UNITS__NUMBER: + 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 ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e07a311a36802874c91b90baa298d33d79ad5fe0 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java @@ -0,0 +1,161 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PassiveResourceCapacityItemProvider + extends AdaptableEntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PassiveResourceCapacityItemProvider(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); + + addCapacityPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Capacity feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCapacityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_PassiveResourceCapacity_capacity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PassiveResourceCapacity_capacity_feature", "_UI_PassiveResourceCapacity_type"), + ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_CAPACITY__CAPACITY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns PassiveResourceCapacity.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceCapacity")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PassiveResourceCapacity)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PassiveResourceCapacity_type") : + getString("_UI_PassiveResourceCapacity_type") + " " + 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); + + switch (notification.getFeatureID(PassiveResourceCapacity.class)) { + case ResourceconfigurationPackage.PASSIVE_RESOURCE_CAPACITY__CAPACITY: + 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 ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..8f647f4ef575f1caa80a3f016c76e17daec428f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java @@ -0,0 +1,181 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import java.util.Collection; +import java.util.List; + +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.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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PassiveResourceSpecificationItemProvider + extends ConfigurationSpecificationItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PassiveResourceSpecificationItemProvider(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); + + addPassiveResourceTypePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Passive Resource Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addPassiveResourceTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_PassiveResourceSpecification_passiveResourceType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PassiveResourceSpecification_passiveResourceType_feature", "_UI_PassiveResourceSpecification_type"), + ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__PASSIVE_RESOURCE_TYPE, + true, + false, + true, + null, + 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(ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY); + } + 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 PassiveResourceSpecification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceSpecification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PassiveResourceSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PassiveResourceSpecification_type") : + getString("_UI_PassiveResourceSpecification_type") + " " + 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); + + switch (notification.getFeatureID(PassiveResourceSpecification.class)) { + case ResourceconfigurationPackage.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY: + 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 + (ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY, + ResourceconfigurationFactory.eINSTANCE.createPassiveResourceCapacity())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..69750a04d71fd9f17f99a24c3799e5d3b20150e1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java @@ -0,0 +1,273 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProcessingResourceSpecificationItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProcessingResourceSpecificationItemProvider(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); + + addSchedulingPolicyPropertyDescriptor(object); + addProcessingRatePropertyDescriptor(object); + addActiveResourceTypePropertyDescriptor(object); + addParentResourceSpecificationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Scheduling Policy feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSchedulingPolicyPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProcessingResourceSpecification_schedulingPolicy_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_schedulingPolicy_feature", "_UI_ProcessingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__SCHEDULING_POLICY, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Processing Rate feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProcessingRatePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProcessingResourceSpecification_processingRate_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_processingRate_feature", "_UI_ProcessingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__PROCESSING_RATE, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Active Resource Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addActiveResourceTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProcessingResourceSpecification_activeResourceType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_activeResourceType_feature", "_UI_ProcessingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__ACTIVE_RESOURCE_TYPE, + true, + false, + false, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Parent Resource Specification feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addParentResourceSpecificationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ProcessingResourceSpecification_parentResourceSpecification_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_parentResourceSpecification_feature", "_UI_ProcessingResourceSpecification_type"), + ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__PARENT_RESOURCE_SPECIFICATION, + true, + false, + true, + null, + 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(ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS); + } + 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 ProcessingResourceSpecification.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ProcessingResourceSpecification")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ProcessingResourceSpecification)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ProcessingResourceSpecification_type") : + getString("_UI_ProcessingResourceSpecification_type") + " " + 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); + + switch (notification.getFeatureID(ProcessingResourceSpecification.class)) { + case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__SCHEDULING_POLICY: + case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__PROCESSING_RATE: + case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__ACTIVE_RESOURCE_TYPE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS: + 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 + (ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS, + ResourceconfigurationFactory.eINSTANCE.createNumberOfParallelProcessingUnits())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..569a5b4121e83ed69cf3b7a6230a71a5802ea48f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java @@ -0,0 +1,344 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.provider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.util.ResourceconfigurationAdapterFactory; + +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; + +/** + * 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 ResourceconfigurationItemProviderAdapterFactory extends ResourceconfigurationAdapterFactory 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 ResourceconfigurationItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ProcessingResourceSpecificationItemProvider processingResourceSpecificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createProcessingResourceSpecificationAdapter() { + if (processingResourceSpecificationItemProvider == null) { + processingResourceSpecificationItemProvider = new ProcessingResourceSpecificationItemProvider(this); + } + + return processingResourceSpecificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected NumberOfParallelProcessingUnitsItemProvider numberOfParallelProcessingUnitsItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createNumberOfParallelProcessingUnitsAdapter() { + if (numberOfParallelProcessingUnitsItemProvider == null) { + numberOfParallelProcessingUnitsItemProvider = new NumberOfParallelProcessingUnitsItemProvider(this); + } + + return numberOfParallelProcessingUnitsItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected LinkingResourceSpecificationItemProvider linkingResourceSpecificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createLinkingResourceSpecificationAdapter() { + if (linkingResourceSpecificationItemProvider == null) { + linkingResourceSpecificationItemProvider = new LinkingResourceSpecificationItemProvider(this); + } + + return linkingResourceSpecificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ActiveResourceSpecificationItemProvider activeResourceSpecificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createActiveResourceSpecificationAdapter() { + if (activeResourceSpecificationItemProvider == null) { + activeResourceSpecificationItemProvider = new ActiveResourceSpecificationItemProvider(this); + } + + return activeResourceSpecificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CustomConfigurationSpecificationItemProvider customConfigurationSpecificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCustomConfigurationSpecificationAdapter() { + if (customConfigurationSpecificationItemProvider == null) { + customConfigurationSpecificationItemProvider = new CustomConfigurationSpecificationItemProvider(this); + } + + return customConfigurationSpecificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PassiveResourceSpecificationItemProvider passiveResourceSpecificationItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPassiveResourceSpecificationAdapter() { + if (passiveResourceSpecificationItemProvider == null) { + passiveResourceSpecificationItemProvider = new PassiveResourceSpecificationItemProvider(this); + } + + return passiveResourceSpecificationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PassiveResourceCapacityItemProvider passiveResourceCapacityItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPassiveResourceCapacityAdapter() { + if (passiveResourceCapacityItemProvider == null) { + passiveResourceCapacityItemProvider = new PassiveResourceCapacityItemProvider(this); + } + + return passiveResourceCapacityItemProvider; + } + + /** + * 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 (processingResourceSpecificationItemProvider != null) processingResourceSpecificationItemProvider.dispose(); + if (numberOfParallelProcessingUnitsItemProvider != null) numberOfParallelProcessingUnitsItemProvider.dispose(); + if (linkingResourceSpecificationItemProvider != null) linkingResourceSpecificationItemProvider.dispose(); + if (activeResourceSpecificationItemProvider != null) activeResourceSpecificationItemProvider.dispose(); + if (customConfigurationSpecificationItemProvider != null) customConfigurationSpecificationItemProvider.dispose(); + if (passiveResourceSpecificationItemProvider != null) passiveResourceSpecificationItemProvider.dispose(); + if (passiveResourceCapacityItemProvider != null) passiveResourceCapacityItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..68b42c162b238bd5f973276e7e538c21449e0ea7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java @@ -0,0 +1,112 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.core.provider.EntityItemProvider; +import edu.kit.ipd.descartes.mm.resourcelandscape.AbstractHardwareInfrastructure; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.AbstractHardwareInfrastructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AbstractHardwareInfrastructureItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AbstractHardwareInfrastructureItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AbstractHardwareInfrastructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AbstractHardwareInfrastructure_type") : + getString("_UI_AbstractHardwareInfrastructure_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..22f4ec2bd62e2c264a890a31ecbf4adcd6c41b4b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java @@ -0,0 +1,172 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CompositeHardwareInfrastructureItemProvider + extends AbstractHardwareInfrastructureItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CompositeHardwareInfrastructureItemProvider(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(ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS); + } + 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 CompositeHardwareInfrastructure.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeHardwareInfrastructure")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CompositeHardwareInfrastructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CompositeHardwareInfrastructure_type") : + getString("_UI_CompositeHardwareInfrastructure_type") + " " + 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); + + switch (notification.getFeatureID(CompositeHardwareInfrastructure.class)) { + case ResourcelandscapePackage.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS: + 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 + (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createComputingInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createNetworkingInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createStorageInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createCompositeHardwareInfrastructure())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..f25dd86f5ccf22827953dd80e1927392172b761d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ComputingInfrastructureItemProvider + extends ContainerItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComputingInfrastructureItemProvider(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 ComputingInfrastructure.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ComputingInfrastructure")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ComputingInfrastructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ComputingInfrastructure_type") : + getString("_UI_ComputingInfrastructure_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b03239e7806703d0d616cb0f4194ea791b6ab4cd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java @@ -0,0 +1,204 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.Container; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.Container} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerItemProvider(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); + + addTemplatePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Template feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addTemplatePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Container_template_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Container_template_feature", "_UI_Container_type"), + ResourcelandscapePackage.Literals.CONTAINER__TEMPLATE, + true, + false, + true, + null, + 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(ResourcelandscapePackage.Literals.CONTAINER__CONTAINS); + childrenFeatures.add(ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC); + } + 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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Container)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Container_type") : + getString("_UI_Container_type") + " " + 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); + + switch (notification.getFeatureID(Container.class)) { + case ResourcelandscapePackage.CONTAINER__CONTAINS: + case ResourcelandscapePackage.CONTAINER__CONFIG_SPEC: + 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 + (ResourcelandscapePackage.Literals.CONTAINER__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createRuntimeEnvironment())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC, + ResourceconfigurationFactory.eINSTANCE.createActiveResourceSpecification())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC, + ResourceconfigurationFactory.eINSTANCE.createCustomConfigurationSpecification())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC, + ResourceconfigurationFactory.eINSTANCE.createPassiveResourceSpecification())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..45d07743a3a578e33f8845a7156a7d04309e4ddb --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java @@ -0,0 +1,187 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DataCenterItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DataCenterItemProvider(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(ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS); + } + 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 DataCenter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DataCenter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((DataCenter)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_DataCenter_type") : + getString("_UI_DataCenter_type") + " " + 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); + + switch (notification.getFeatureID(DataCenter.class)) { + case ResourcelandscapePackage.DATA_CENTER__CONTAINS: + 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 + (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createComputingInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createNetworkingInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createStorageInfrastructure())); + + newChildDescriptors.add + (createChildParameter + (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS, + ResourcelandscapeFactory.eINSTANCE.createCompositeHardwareInfrastructure())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..53e74acfbdc68985e86168b7376186fa428ae848 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java @@ -0,0 +1,172 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DistributedDataCenterItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DistributedDataCenterItemProvider(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(ResourcelandscapePackage.Literals.DISTRIBUTED_DATA_CENTER__CONSISTS_OF); + } + 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 DistributedDataCenter.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DistributedDataCenter")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((DistributedDataCenter)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_DistributedDataCenter_type") : + getString("_UI_DistributedDataCenter_type") + " " + 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); + + switch (notification.getFeatureID(DistributedDataCenter.class)) { + case ResourcelandscapePackage.DISTRIBUTED_DATA_CENTER__CONSISTS_OF: + 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 + (ResourcelandscapePackage.Literals.DISTRIBUTED_DATA_CENTER__CONSISTS_OF, + ResourcelandscapeFactory.eINSTANCE.createDataCenter())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..bb5c0644b0b0fc87741711846541a27e1fd5105a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class NetworkingInfrastructureItemProvider + extends ContainerItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NetworkingInfrastructureItemProvider(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 NetworkingInfrastructure.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/NetworkingInfrastructure")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((NetworkingInfrastructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_NetworkingInfrastructure_type") : + getString("_UI_NetworkingInfrastructure_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..15cf54a08f540dbcf14239cd6746a7ee25197192 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java @@ -0,0 +1,96 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Resourcelandscape edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class ResourcelandscapeEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final ResourcelandscapeEditPlugin INSTANCE = new ResourcelandscapeEditPlugin(); + + /** + * 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 ResourcelandscapeEditPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..1adfd9f93818802e4a5e63e3851cd27a3cd70225 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java @@ -0,0 +1,344 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + +import edu.kit.ipd.descartes.mm.resourcelandscape.util.ResourcelandscapeAdapterFactory; + +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; + +/** + * 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 ResourcelandscapeItemProviderAdapterFactory extends ResourcelandscapeAdapterFactory 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 ResourcelandscapeItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComputingInfrastructureItemProvider computingInfrastructureItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createComputingInfrastructureAdapter() { + if (computingInfrastructureItemProvider == null) { + computingInfrastructureItemProvider = new ComputingInfrastructureItemProvider(this); + } + + return computingInfrastructureItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected NetworkingInfrastructureItemProvider networkingInfrastructureItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createNetworkingInfrastructureAdapter() { + if (networkingInfrastructureItemProvider == null) { + networkingInfrastructureItemProvider = new NetworkingInfrastructureItemProvider(this); + } + + return networkingInfrastructureItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StorageInfrastructureItemProvider storageInfrastructureItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStorageInfrastructureAdapter() { + if (storageInfrastructureItemProvider == null) { + storageInfrastructureItemProvider = new StorageInfrastructureItemProvider(this); + } + + return storageInfrastructureItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected RuntimeEnvironmentItemProvider runtimeEnvironmentItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createRuntimeEnvironmentAdapter() { + if (runtimeEnvironmentItemProvider == null) { + runtimeEnvironmentItemProvider = new RuntimeEnvironmentItemProvider(this); + } + + return runtimeEnvironmentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DataCenterItemProvider dataCenterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDataCenterAdapter() { + if (dataCenterItemProvider == null) { + dataCenterItemProvider = new DataCenterItemProvider(this); + } + + return dataCenterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DistributedDataCenterItemProvider distributedDataCenterItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDistributedDataCenterAdapter() { + if (distributedDataCenterItemProvider == null) { + distributedDataCenterItemProvider = new DistributedDataCenterItemProvider(this); + } + + return distributedDataCenterItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CompositeHardwareInfrastructureItemProvider compositeHardwareInfrastructureItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCompositeHardwareInfrastructureAdapter() { + if (compositeHardwareInfrastructureItemProvider == null) { + compositeHardwareInfrastructureItemProvider = new CompositeHardwareInfrastructureItemProvider(this); + } + + return compositeHardwareInfrastructureItemProvider; + } + + /** + * 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 (computingInfrastructureItemProvider != null) computingInfrastructureItemProvider.dispose(); + if (networkingInfrastructureItemProvider != null) networkingInfrastructureItemProvider.dispose(); + if (storageInfrastructureItemProvider != null) storageInfrastructureItemProvider.dispose(); + if (runtimeEnvironmentItemProvider != null) runtimeEnvironmentItemProvider.dispose(); + if (dataCenterItemProvider != null) dataCenterItemProvider.dispose(); + if (distributedDataCenterItemProvider != null) distributedDataCenterItemProvider.dispose(); + if (compositeHardwareInfrastructureItemProvider != null) compositeHardwareInfrastructureItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6fdb007d9048c9cfb614293e9c7502067ebaec88 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java @@ -0,0 +1,144 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class RuntimeEnvironmentItemProvider + extends ContainerItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public RuntimeEnvironmentItemProvider(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); + + addOfClassPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Of Class feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOfClassPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_RuntimeEnvironment_ofClass_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_RuntimeEnvironment_ofClass_feature", "_UI_RuntimeEnvironment_type"), + ResourcelandscapePackage.Literals.RUNTIME_ENVIRONMENT__OF_CLASS, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns RuntimeEnvironment.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/RuntimeEnvironment")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((RuntimeEnvironment)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_RuntimeEnvironment_type") : + getString("_UI_RuntimeEnvironment_type") + " " + 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); + + switch (notification.getFeatureID(RuntimeEnvironment.class)) { + case ResourcelandscapePackage.RUNTIME_ENVIRONMENT__OF_CLASS: + 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); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7c1ff861eac63aa16d30158b81e66233f45a0be2 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StorageInfrastructureItemProvider + extends ContainerItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StorageInfrastructureItemProvider(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 StorageInfrastructure.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/StorageInfrastructure")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((StorageInfrastructure)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_StorageInfrastructure_type") : + getString("_UI_StorageInfrastructure_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6699a456e812d718b1962254df41ca5e237b17f6 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + + +import edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CommunicationLinkResourceTypeItemProvider + extends ProcessingResourceTypeItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public CommunicationLinkResourceTypeItemProvider(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 CommunicationLinkResourceType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CommunicationLinkResourceType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CommunicationLinkResourceType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CommunicationLinkResourceType_type") : + getString("_UI_CommunicationLinkResourceType_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3ef877ea8141272ac4967c253b9fc7511208a89b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + + +import edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PassiveResourceTypeItemProvider + extends ResourceTypeItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PassiveResourceTypeItemProvider(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 PassiveResourceType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PassiveResourceType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PassiveResourceType_type") : + getString("_UI_PassiveResourceType_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a51cfb3b46adcc49638c6910aebe59b65cb2c91a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java @@ -0,0 +1,111 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + + +import edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ProcessingResourceTypeItemProvider + extends ResourceTypeItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ProcessingResourceTypeItemProvider(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 ProcessingResourceType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ProcessingResourceType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ProcessingResourceType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ProcessingResourceType_type") : + getString("_UI_ProcessingResourceType_type") + " " + 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/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..48abfa8e0c8342eb6f11541b6a1476c2fcba23a3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java @@ -0,0 +1,117 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcetype.ResourceType; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.mm.resourcetype.ResourceType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceTypeItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceTypeItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ResourceType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ResourceType_type") : + getString("_UI_ResourceType_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..89dae178076fe2536f44114f5a774e947083238a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java @@ -0,0 +1,180 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository; +import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypeFactory; +import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypePackage; + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceTypeRepositoryItemProvider + 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 ResourceTypeRepositoryItemProvider(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(ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES); + } + 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 ResourceTypeRepository.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ResourceTypeRepository")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ResourceTypeRepository_type"); + } + + /** + * 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(ResourceTypeRepository.class)) { + case ResourcetypePackage.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES: + 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 + (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES, + ResourcetypeFactory.eINSTANCE.createProcessingResourceType())); + + newChildDescriptors.add + (createChildParameter + (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES, + ResourcetypeFactory.eINSTANCE.createCommunicationLinkResourceType())); + + newChildDescriptors.add + (createChildParameter + (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES, + ResourcetypeFactory.eINSTANCE.createPassiveResourceType())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ResourcelandscapeEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..efce4050b1f8fa53e6eb3f21b5c8049db46674ea --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java @@ -0,0 +1,258 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.provider; + +import edu.kit.ipd.descartes.mm.resourcetype.util.ResourcetypeAdapterFactory; + +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.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 ResourcetypeItemProviderAdapterFactory extends ResourcetypeAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier { + /** + * 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 ResourcetypeItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceTypeRepositoryItemProvider resourceTypeRepositoryItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createResourceTypeRepositoryAdapter() { + if (resourceTypeRepositoryItemProvider == null) { + resourceTypeRepositoryItemProvider = new ResourceTypeRepositoryItemProvider(this); + } + + return resourceTypeRepositoryItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ProcessingResourceTypeItemProvider processingResourceTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createProcessingResourceTypeAdapter() { + if (processingResourceTypeItemProvider == null) { + processingResourceTypeItemProvider = new ProcessingResourceTypeItemProvider(this); + } + + return processingResourceTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CommunicationLinkResourceTypeItemProvider communicationLinkResourceTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCommunicationLinkResourceTypeAdapter() { + if (communicationLinkResourceTypeItemProvider == null) { + communicationLinkResourceTypeItemProvider = new CommunicationLinkResourceTypeItemProvider(this); + } + + return communicationLinkResourceTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PassiveResourceTypeItemProvider passiveResourceTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPassiveResourceTypeAdapter() { + if (passiveResourceTypeItemProvider == null) { + passiveResourceTypeItemProvider = new PassiveResourceTypeItemProvider(this); + } + + return passiveResourceTypeItemProvider; + } + + /** + * 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); + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..3ca6ecbad648c8b761d96e9993aee84c93d4cfa4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.resourcelandscape.editor</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/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..9f5b3044e7fc4fb326f4721ea452888ee08c0c64 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.resourcelandscape.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.containerrepository.presentation, + edu.kit.ipd.descartes.mm.resourceconfiguration.presentation, + edu.kit.ipd.descartes.mm.resourcelandscape.presentation, + edu.kit.ipd.descartes.mm.resourcetype.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b3ad8009f0caae5b5b5a4991df65394f2887c97 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..a99fd8140c4a8cc080010639813e239b20a2c77c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..366f9ff33929abad861653d50512f3d93bac89ca Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3db6b0059d777b73ac5f5f94c86c442b813ed4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..33f212f1c1479ee58d4886f99d9a3add393e8ed1 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif new file mode 100644 index 0000000000000000000000000000000000000000..897c9baa83caf1d5ae527be9f2bcf3002bbc7931 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif new file mode 100644 index 0000000000000000000000000000000000000000..e85f1da21d92ca93e4dcf62ba760305d61d146a3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a4d3bfcee04f68a4c9f191918b9df0dc0f669e Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif differ diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..008e5d5ac480cf6bbad7b51ec85b42c9d5986708 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties @@ -0,0 +1,96 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Resourcelandscape Editor +providerName = www.example.org + +_UI_ResourcelandscapeEditor_menu = &Resource Landscape Editor +_UI_ResourceconfigurationEditor_menu = &Resource Configuration Editor +_UI_ContainerrepositoryEditor_menu = &Container Repository Editor +_UI_RuntimeenvironmentclassesEditor_menu = &Runtime Environment Classes Editor +_UI_ParameterEditor_menu = &Parameter Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_resourcelandscape_category = Resource Landscape + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_ResourcelandscapeModelWizard_label = Resource Landscape Model +_UI_ResourcelandscapeModelWizard_description = Create a new Resource Landscape model + +_UI_ResourcelandscapeEditor_label = Resource Landscape Model Editor + +_UI_ResourcelandscapeEditorFilenameDefaultBase = My +_UI_ResourcelandscapeEditorFilenameExtensions = resourcelandscape + +_UI_ResourceconfigurationModelWizard_label = Resource Configuration Model +_UI_ResourceconfigurationModelWizard_description = Create a new Resource Configuration model + +_UI_ResourceconfigurationEditor_label = Resource Configuration Model Editor + +_UI_ResourceconfigurationEditorFilenameDefaultBase = My +_UI_ResourceconfigurationEditorFilenameExtensions = resourceconfiguration + +_UI_ContainerrepositoryModelWizard_label = Container Repository Model +_UI_ContainerrepositoryModelWizard_description = Create a new Container Repository model + +_UI_ContainerrepositoryEditor_label = Container Repository Model Editor + +_UI_ContainerrepositoryEditorFilenameDefaultBase = My +_UI_ContainerrepositoryEditorFilenameExtensions = containerrepository + +_UI_RuntimeenvironmentclassesModelWizard_label = Runtime Environment Classes Model +_UI_RuntimeenvironmentclassesModelWizard_description = Create a new Runtime Environment Classes model + +_UI_RuntimeenvironmentclassesEditor_label = Runtime Environment Classes Model Editor + +_UI_RuntimeenvironmentclassesEditorFilenameDefaultBase = My +_UI_RuntimeenvironmentclassesEditorFilenameExtensions = runtimeenvironmentclasses + +_UI_ParameterModelWizard_label = Parameter Model +_UI_ParameterModelWizard_description = Create a new Parameter model + +_UI_ParameterEditor_label = Parameter Model Editor + +_UI_ParameterEditorFilenameDefaultBase = My +_UI_ParameterEditorFilenameExtensions = parameter + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + +_UI_ResourcetypeEditor_menu = &Resource Type Editor +_UI_ResourcetypeModelWizard_label = Resource Type Model +_UI_ResourcetypeModelWizard_description = Create a new Resource Type model +_UI_ResourcetypeEditor_label = Resource Type Model Editor +_UI_ResourcetypeEditorFilenameDefaultBase = My +_UI_ResourcetypeEditorFilenameExtensions = resourcetype diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..1bf0f47760806f57fc7ecc618f2ebe2f64149f5e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.resourcelandscape.category" + name="%_UI_Wizard_resourcelandscape_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeModelWizardID" + name="%_UI_ResourcelandscapeModelWizard_label" + class="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category" + icon="icons/full/obj16/ResourcelandscapeModelFile.gif"> + <description>%_UI_ResourcelandscapeModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorID" + name="%_UI_ResourcelandscapeEditor_label" + icon="icons/full/obj16/ResourcelandscapeModelFile.gif" + extensions="resourcelandscape" + class="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditor" + contributorClass="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeActionBarContributor"> + </editor> + </extension> + +<!-- <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.resourcelandscape.category" + name="%_UI_Wizard_resourcelandscape_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationModelWizardID" + name="%_UI_ResourceconfigurationModelWizard_label" + class="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category" + icon="icons/full/obj16/ResourceconfigurationModelFile.gif"> + <description>%_UI_ResourceconfigurationModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension>--> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationEditorID" + name="%_UI_ResourceconfigurationEditor_label" + icon="icons/full/obj16/ResourceconfigurationModelFile.gif" + extensions="resourceconfiguration" + class="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationEditor" + contributorClass="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationActionBarContributor"> + </editor> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.resourcelandscape.category" + name="%_UI_Wizard_resourcelandscape_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryModelWizardID" + name="%_UI_ContainerrepositoryModelWizard_label" + class="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category" + icon="icons/full/obj16/ContainerrepositoryModelFile.gif"> + <description>%_UI_ContainerrepositoryModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryEditorID" + name="%_UI_ContainerrepositoryEditor_label" + icon="icons/full/obj16/ContainerrepositoryModelFile.gif" + extensions="containerrepository" + class="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryEditor" + contributorClass="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryActionBarContributor"> + </editor> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.resourcelandscape.category" + name="%_UI_Wizard_resourcelandscape_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeModelWizardID" + name="%_UI_ResourcetypeModelWizard_label" + class="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category" + icon="icons/full/obj16/ResourcetypeModelFile.gif"> + <description>%_UI_ResourcetypeModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <editor + id="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeEditorID" + name="%_UI_ResourcetypeEditor_label" + icon="icons/full/obj16/ResourcetypeModelFile.gif" + extensions="resourcetype" + class="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeEditor" + contributorClass="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..759bc1033025b1fc6027e0ace0f9f5c88b8d11b5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.resourcelandscape.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..0da5c2d183a8584fc33e4770d8308d3ec2093db4 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.presentation; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Containerrepository model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerrepositoryActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerrepositoryActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("containerrepository-settings")); + toolBarManager.add(new Separator("containerrepository-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditor_menu"), "edu.kit.ipd.descartes.mm.containerrepositoryMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..8a7b6e16f26a5ca989fe0d5fdacdfc654e2bc722 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java @@ -0,0 +1,1830 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Containerrepository model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerrepositoryEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ContainerrepositoryEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(ContainerrepositoryEditor.this); + handleActivate(); + } + } + else if (p == ContainerrepositoryEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ContainerrepositoryEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ContainerrepositoryEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ContainerrepositoryEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerrepositoryEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ContainerrepositoryEditor.this.setSelectionToViewer(selection); + ContainerrepositoryEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..67c1ccd73045971b14496b2872a10247a858421d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java @@ -0,0 +1,631 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.containerrepository.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryFactory; +import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ContainerrepositoryModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerrepositoryPackage containerrepositoryPackage = ContainerrepositoryPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerrepositoryFactory containerrepositoryFactory = containerrepositoryPackage.getContainerrepositoryFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerrepositoryModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ContainerrepositoryModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewContainerrepository"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : containerrepositoryPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)containerrepositoryPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = containerrepositoryFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ContainerrepositoryModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerrepositoryModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ContainerrepositoryModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ContainerrepositoryModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ResourcelandscapeEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ContainerrepositoryModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_label")); + newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_description")); + newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ContainerrepositoryModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_label")); + initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..ae6bccb86a2b4472fe87bf830231c27af7c0670d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Resourceconfiguration model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceconfigurationActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceconfigurationActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("resourceconfiguration-settings")); + toolBarManager.add(new Separator("resourceconfiguration-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditor_menu"), "edu.kit.ipd.descartes.mm.resourceconfigurationMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..9bc3233582b115782dd5f817675c392afc784b8b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java @@ -0,0 +1,1830 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Resourceconfiguration model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceconfigurationEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ResourceconfigurationEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(ResourceconfigurationEditor.this); + handleActivate(); + } + } + else if (p == ResourceconfigurationEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ResourceconfigurationEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ResourceconfigurationEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ResourceconfigurationEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceconfigurationEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ResourceconfigurationEditor.this.setSelectionToViewer(selection); + ResourceconfigurationEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..d4fc5b9ab97e43ed850397b2a923cb150aa93d6e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java @@ -0,0 +1,631 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory; +import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourceconfigurationModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceconfigurationPackage resourceconfigurationPackage = ResourceconfigurationPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceconfigurationFactory resourceconfigurationFactory = resourceconfigurationPackage.getResourceconfigurationFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceconfigurationModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourceconfigurationModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourceconfiguration"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : resourceconfigurationPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)resourceconfigurationPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = resourceconfigurationFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourceconfigurationModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceconfigurationModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourceconfigurationModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceconfigurationModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ResourcelandscapeEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ResourceconfigurationModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_label")); + newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_description")); + newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ResourceconfigurationModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_label")); + initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..1bc2d7c7ba26295ea348b3d295d9380ba69546d9 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java @@ -0,0 +1,424 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Resourcelandscape model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcelandscapeActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcelandscapeActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("resourcelandscape-settings")); + toolBarManager.add(new Separator("resourcelandscape-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditor_menu"), "edu.kit.ipd.descartes.mm.resourcelandscapeMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..117f7f28f3a72e2db984d9dbda72386a3f0c4d06 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java @@ -0,0 +1,1831 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Resourcelandscape model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcelandscapeEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ResourcelandscapeEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(ResourcelandscapeEditor.this); + handleActivate(); + } + } + else if (p == ResourcelandscapeEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ResourcelandscapeEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ResourcelandscapeEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ResourcelandscapeEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcelandscapeEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + + // Add default resource types model. + editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/defaultresourcetypes.resourcetype"); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ResourcelandscapeEditor.this.setSelectionToViewer(selection); + ResourcelandscapeEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..b38530ea0b2c3299bcde54153975934469f25db1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java @@ -0,0 +1,98 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Resourcelandscape editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class ResourcelandscapeEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final ResourcelandscapeEditorPlugin INSTANCE = new ResourcelandscapeEditorPlugin(); + + /** + * 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 ResourcelandscapeEditorPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..c25a2c55e9f741dedee7821398f92c2b4f186050 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java @@ -0,0 +1,628 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcelandscape.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcelandscapeModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcelandscapePackage resourcelandscapePackage = ResourcelandscapePackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcelandscapeFactory resourcelandscapeFactory = resourcelandscapePackage.getResourcelandscapeFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcelandscapeModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcelandscapeModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourcelandscape"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : resourcelandscapePackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)resourcelandscapePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = resourcelandscapeFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourcelandscapeModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcelandscapeModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourcelandscapeModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcelandscapeModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ResourcelandscapeEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ResourcelandscapeModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_label")); + newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_description")); + newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ResourcelandscapeModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_label")); + initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..af3f90bd8c845a3069c7abbe2d064f9e98ba9aab --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java @@ -0,0 +1,426 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.presentation; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Resourcetype model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcetypeActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcetypeActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("resourcetype-settings")); + toolBarManager.add(new Separator("resourcetype-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditor_menu"), "edu.kit.ipd.descartes.mm.resourcetypeMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..4778fc3cffd68fe1a693d6bdbd50479af14b2490 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java @@ -0,0 +1,1830 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EValidator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Resourcetype model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcetypeEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertySheetPage propertySheetPage; + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ResourcetypeEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (((PropertySheet)p).getCurrentPage() == propertySheetPage) { + getActionBarContributor().setActiveEditor(ResourcetypeEditor.this); + handleActivate(); + } + } + else if (p == ResourcetypeEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ResourcetypeEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ResourcetypeEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ResourcetypeEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcetypeEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { + propertySheetPage.refresh(); + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.resourcelandscape.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + if (propertySheetPage == null) { + propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + ResourcetypeEditor.this.setSelectionToViewer(selection); + ResourcetypeEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + } + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + try { + if (marker.getType().equals(EValidator.MARKER)) { + String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null); + if (uriAttribute != null) { + URI uri = URI.createURI(uriAttribute); + EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); + if (eObject != null) { + setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject))); + } + } + } + } + catch (CoreException exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + if (propertySheetPage != null) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..22252d62d5644893fac4fb796d02e5d92dad4f25 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java @@ -0,0 +1,630 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.resourcetype.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypeFactory; +import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypePackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + + +import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResourcetypeModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcetypePackage resourcetypePackage = ResourcetypePackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcetypeFactory resourcetypeFactory = resourcetypePackage.getResourcetypeFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcetypeModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResourcetypeModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourcetype"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : resourcetypePackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)resourcetypePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = resourcetypeFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ResourcelandscapeEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourcetypeModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcetypeModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ResourcetypeModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourcetypeModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ResourcelandscapeEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ResourcetypeModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_label")); + newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_description")); + newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ResourcetypeModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_label")); + initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath b/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/.project b/edu.kit.ipd.descartes.mm.usageprofile.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..086c3eae40acbe6b6a416a3c9fb5617d42190ea6 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.usageprofile.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/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..7f798acb13d655ae1b76090e57f30bb20e6323fe --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.usageprofile.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.usageprofile.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.mm.usageprofile;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties b/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..7adf9acc6d9973159ba8eb5c0162949cc73e05b4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..18c3881224685be21357329b46c6eea9b54bfdc5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..00da844bb39721a6b117d055c12bde522647dba5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d51bba34adc9ada6a22ace37b4172e4dc00d013 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..f768689d3de81bb2be5fbe5aab1d1e727a97bffc Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..28e491c2adb5300c834607d6889ff3bebba3d15b Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dcb65c3c2e28aa8ec0e020833f9db583a490c22 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..1611c0c15443b0532e4233aa9f1fa6498ba9ab85 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..98c2fa25c69c9e1016861b40e26b271e1edc4a95 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fc15c12ddf119e4ba484ae71c3f64d25b640526 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..ddf2faab4622ae12946a48f6388a4e02c79172f5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d1f9adc07271d5b68acf8452a552891f4ae5810 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ecfb1a47d0ac0dea6b41d771561685ead2d2af2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif new file mode 100644 index 0000000000000000000000000000000000000000..495d02787ca2b1ffc9abd74f72d32e8112084a7d Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2326eff67c36937694a28717e53021d52f9fc72 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif new file mode 100644 index 0000000000000000000000000000000000000000..a674b69c27110f2fc17ff3f0cd277c7e415d8506 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4bffd128967482a53a248a94b8ae51da10ef745 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif new file mode 100644 index 0000000000000000000000000000000000000000..30f0c48da8d4450f7e94a696c4de0a7cc41aa728 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif new file mode 100644 index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif new file mode 100644 index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif new file mode 100644 index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..136e3b27269e84a045f9b528614d7dfd316e444c Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif new file mode 100644 index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif new file mode 100644 index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..27780f920f69d05511a60cdf9c17cea441fbf234 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties @@ -0,0 +1,59 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = UsageProfile 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_UsageProfile_type = Usage Profile +_UI_UsageScenario_type = Usage Scenario +_UI_ScenarioBehavior_type = Scenario Behavior +_UI_WorkloadType_type = Workload Type +_UI_OpenWorkloadType_type = Open Workload Type +_UI_ClosedWorkloadType_type = Closed Workload Type +_UI_AbstractUserAction_type = Abstract User Action +_UI_LoopUserAction_type = Loop User Action +_UI_DelayUserAction_type = Delay User Action +_UI_BranchUserAction_type = Branch User Action +_UI_SystemCallUserAction_type = System Call User Action +_UI_CallParameterSetting_type = Call Parameter Setting +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_UsageProfile_usageScenarios_feature = Usage Scenarios +_UI_UsageScenario_usageModel_feature = Usage Model +_UI_UsageScenario_scenarioBehavior_feature = Scenario Behavior +_UI_UsageScenario_workloadType_feature = Workload Type +_UI_ScenarioBehavior_system_feature = System +_UI_ScenarioBehavior_actions_feature = Actions +_UI_WorkloadType_usageScenario_feature = Usage Scenario +_UI_OpenWorkloadType_interArrivalTime_feature = Inter Arrival Time +_UI_ClosedWorkloadType_population_feature = Population +_UI_ClosedWorkloadType_thinkTime_feature = Think Time +_UI_AbstractUserAction_parentScenarioBehavior_feature = Parent Scenario Behavior +_UI_LoopUserAction_loopBodyScenarioBehavior_feature = Loop Body Scenario Behavior +_UI_LoopUserAction_loopIterationCount_feature = Loop Iteration Count +_UI_DelayUserAction_delay_feature = Delay +_UI_BranchUserAction_branches_feature = Branches +_UI_BranchUserAction_branchingProbabilities_feature = Branching Probabilities +_UI_SystemCallUserAction_providingRole_feature = Providing Role +_UI_SystemCallUserAction_signature_feature = Signature +_UI_SystemCallUserAction_inputParameterSettings_feature = Input Parameter Settings +_UI_CallParameterSetting_name_feature = Name +_UI_CallParameterSetting_characterization_feature = Characterization +_UI_CallParameterSetting_value_feature = Value +_UI_Unknown_feature = Unspecified + +_UI_Import_type = Import +_UI_UsageProfile_imports_feature = Imports +_UI_Import_importURI_feature = Import URI +_UI_Import_usageprofile_feature = Usageprofile +_UI_UsageProfile_system_feature = System diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..859282ac13cf3b8138a1706ef144f6181944b8a7 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated usageprofile --> + <factory + uri="http://www.descartes-research.net/metamodel/usageprofile/0.1" + class="edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml b/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..c657c4cd5e77d5de7b37c9704db1be0bef218a4e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.usageprofile.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c7a5aaddbb4e1fe1a1a4454f72f5fea49d70785b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java @@ -0,0 +1,106 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; +import edu.kit.ipd.descartes.mm.usageprofile.AbstractUserAction; +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.AbstractUserAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class AbstractUserActionItemProvider + 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 AbstractUserActionItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_AbstractUserAction_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3a06f42f3d07288c6e89f8e6dfbd82caca35c089 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java @@ -0,0 +1,152 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class BranchUserActionItemProvider extends AbstractUserActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public BranchUserActionItemProvider(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(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHES); + childrenFeatures.add(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES); + } + 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 BranchUserAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchUserAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BranchUserAction_type"); + } + + + /** + * 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(BranchUserAction.class)) { + case UsageProfilePackage.BRANCH_USER_ACTION__BRANCHES: + case UsageProfilePackage.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES: + 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 + (UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHES, + UsageProfileFactory.eINSTANCE.createScenarioBehavior())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..89dcd26ffaaa95b5da84be868dcfb4f969183642 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java @@ -0,0 +1,225 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class CallParameterSettingItemProvider + 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 CallParameterSettingItemProvider(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); + addCharacterizationPropertyDescriptor(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_CallParameterSetting_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameterSetting_name_feature", "_UI_CallParameterSetting_type"), + UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Characterization feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addCharacterizationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_CallParameterSetting_characterization_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_CallParameterSetting_characterization_feature", "_UI_CallParameterSetting_type"), + UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__CHARACTERIZATION, + 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(UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__VALUE); + } + 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 CallParameterSetting.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/CallParameterSetting")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((CallParameterSetting)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_CallParameterSetting_type") : + getString("_UI_CallParameterSetting_type") + " " + 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); + + switch (notification.getFeatureID(CallParameterSetting.class)) { + case UsageProfilePackage.CALL_PARAMETER_SETTING__NAME: + case UsageProfilePackage.CALL_PARAMETER_SETTING__CHARACTERIZATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case UsageProfilePackage.CALL_PARAMETER_SETTING__VALUE: + 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 + (UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__VALUE, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c27ad6440e4a7a4465b0df83d9a4ea48485f022f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java @@ -0,0 +1,178 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.math.BigInteger; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ClosedWorkloadTypeItemProvider extends WorkloadTypeItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ClosedWorkloadTypeItemProvider(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); + + addPopulationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Population feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addPopulationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ClosedWorkloadType_population_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ClosedWorkloadType_population_feature", "_UI_ClosedWorkloadType_type"), + UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__POPULATION, + 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(UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__THINK_TIME); + } + 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 ClosedWorkloadType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ClosedWorkloadType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + BigInteger labelValue = ((ClosedWorkloadType)object).getPopulation(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_ClosedWorkloadType_type") : + getString("_UI_ClosedWorkloadType_type") + " " + 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); + + switch (notification.getFeatureID(ClosedWorkloadType.class)) { + case UsageProfilePackage.CLOSED_WORKLOAD_TYPE__POPULATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case UsageProfilePackage.CLOSED_WORKLOAD_TYPE__THINK_TIME: + 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 + (UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__THINK_TIME, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d4c658695f82f5f5028f3ce9b8520d9d77d02954 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java @@ -0,0 +1,144 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class DelayUserActionItemProvider extends AbstractUserActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public DelayUserActionItemProvider(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(UsageProfilePackage.Literals.DELAY_USER_ACTION__DELAY); + } + 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 DelayUserAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DelayUserAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_DelayUserAction_type"); + } + + + /** + * 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(DelayUserAction.class)) { + case UsageProfilePackage.DELAY_USER_ACTION__DELAY: + 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 + (UsageProfilePackage.Literals.DELAY_USER_ACTION__DELAY, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..3acd27d1483376d872028938a7d0f2e90e690a7f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java @@ -0,0 +1,159 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.usageprofile.Import; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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 edu.kit.ipd.descartes.mm.usageprofile.Import} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ImportItemProvider + 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 ImportItemProvider(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); + + addImportURIPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Import URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addImportURIPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Import_importURI_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Import_importURI_feature", "_UI_Import_type"), + UsageProfilePackage.Literals.IMPORT__IMPORT_URI, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Import.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Import")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Import)object).getImportURI(); + return label == null || label.length() == 0 ? + getString("_UI_Import_type") : + getString("_UI_Import_type") + " " + 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); + + switch (notification.getFeatureID(Import.class)) { + case UsageProfilePackage.IMPORT__IMPORT_URI: + 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 UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6c780ec6f58f2811f6cfb9bb61d42c62fe0f0f38 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java @@ -0,0 +1,152 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class LoopUserActionItemProvider extends AbstractUserActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public LoopUserActionItemProvider(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(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR); + childrenFeatures.add(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_ITERATION_COUNT); + } + 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 LoopUserAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopUserAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_LoopUserAction_type"); + } + + + /** + * 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(LoopUserAction.class)) { + case UsageProfilePackage.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR: + case UsageProfilePackage.LOOP_USER_ACTION__LOOP_ITERATION_COUNT: + 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 + (UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR, + UsageProfileFactory.eINSTANCE.createScenarioBehavior())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_ITERATION_COUNT, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0fa03ecd8d4b4b5fab6d138a7efa4eef7e53cea3 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java @@ -0,0 +1,144 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory; + +import edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class OpenWorkloadTypeItemProvider extends WorkloadTypeItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OpenWorkloadTypeItemProvider(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(UsageProfilePackage.Literals.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME); + } + 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 OpenWorkloadType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/OpenWorkloadType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_OpenWorkloadType_type"); + } + + + /** + * 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(OpenWorkloadType.class)) { + case UsageProfilePackage.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME: + 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 + (UsageProfilePackage.Literals.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME, + FunctionsFactory.eINSTANCE.createRandomVariable())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..39bd2359cecd21a85ba3cfc1b0557e38189e20bb --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java @@ -0,0 +1,185 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ScenarioBehaviorItemProvider + 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 ScenarioBehaviorItemProvider(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(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS); + } + 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 ScenarioBehavior.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ScenarioBehavior")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ScenarioBehavior_type"); + } + + + /** + * 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(ScenarioBehavior.class)) { + case UsageProfilePackage.SCENARIO_BEHAVIOR__ACTIONS: + 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 + (UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS, + UsageProfileFactory.eINSTANCE.createLoopUserAction())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS, + UsageProfileFactory.eINSTANCE.createDelayUserAction())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS, + UsageProfileFactory.eINSTANCE.createBranchUserAction())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS, + UsageProfileFactory.eINSTANCE.createSystemCallUserAction())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2ff003d53dc0186f7b8cce1baa34f54f499266d8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java @@ -0,0 +1,246 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.core.CorePackage; +import edu.kit.ipd.descartes.identifier.IdentifierPackage; +import edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class SystemCallUserActionItemProvider extends AbstractUserActionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SystemCallUserActionItemProvider(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); + + addIdPropertyDescriptor(object); + addNamePropertyDescriptor(object); + addProvidingRolePropertyDescriptor(object); + addSignaturePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Id feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addIdPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Identifier_id_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Identifier_id_feature", "_UI_Identifier_type"), + IdentifierPackage.Literals.IDENTIFIER__ID, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * 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_NamedElement_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"), + CorePackage.Literals.NAMED_ELEMENT__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Providing Role feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProvidingRolePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_SystemCallUserAction_providingRole_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_SystemCallUserAction_providingRole_feature", "_UI_SystemCallUserAction_type"), + UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__PROVIDING_ROLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Signature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSignaturePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_SystemCallUserAction_signature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_SystemCallUserAction_signature_feature", "_UI_SystemCallUserAction_type"), + UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__SIGNATURE, + true, + false, + true, + null, + 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(UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS); + } + 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 SystemCallUserAction.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/SystemCallUserAction")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((SystemCallUserAction)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_SystemCallUserAction_type") : + getString("_UI_SystemCallUserAction_type") + " " + 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); + + switch (notification.getFeatureID(SystemCallUserAction.class)) { + case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__ID: + case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS: + 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 + (UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS, + UsageProfileFactory.eINSTANCE.createCallParameterSetting())); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..7e9143ddf7572a845dc925ba2210511c3e4faf1e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java @@ -0,0 +1,102 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the UsageProfile edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class UsageProfileEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final UsageProfileEditPlugin INSTANCE = new UsageProfileEditPlugin(); + + /** + * 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 UsageProfileEditPlugin() { + super + (new ResourceLocator [] { + ApplicationlevelEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..4b5588d942bad4464160dfa3e16a06f722f2bbf5 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java @@ -0,0 +1,192 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfile; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageProfile} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UsageProfileItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageProfileItemProvider(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); + + addSystemPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the System feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSystemPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_UsageProfile_system_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_UsageProfile_system_feature", "_UI_UsageProfile_type"), + UsageProfilePackage.Literals.USAGE_PROFILE__SYSTEM, + true, + false, + true, + null, + 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(UsageProfilePackage.Literals.USAGE_PROFILE__IMPORTS); + childrenFeatures.add(UsageProfilePackage.Literals.USAGE_PROFILE__USAGE_SCENARIOS); + } + 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 UsageProfile.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/UsageProfile")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((UsageProfile)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_UsageProfile_type") : + getString("_UI_UsageProfile_type") + " " + 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); + + switch (notification.getFeatureID(UsageProfile.class)) { + case UsageProfilePackage.USAGE_PROFILE__IMPORTS: + case UsageProfilePackage.USAGE_PROFILE__USAGE_SCENARIOS: + 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 + (UsageProfilePackage.Literals.USAGE_PROFILE__IMPORTS, + UsageProfileFactory.eINSTANCE.createImport())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.USAGE_PROFILE__USAGE_SCENARIOS, + UsageProfileFactory.eINSTANCE.createUsageScenario())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..0b39ded59c8f24681ac2ff945cd45912cc6998fc --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java @@ -0,0 +1,440 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + +import edu.kit.ipd.descartes.mm.usageprofile.util.UsageProfileAdapterFactory; + +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; + +/** + * 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 UsageProfileItemProviderAdapterFactory extends UsageProfileAdapterFactory 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 UsageProfileItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.mm.usageprofile.UsageProfile} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageProfileItemProvider usageProfileItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageProfile}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createUsageProfileAdapter() { + if (usageProfileItemProvider == null) { + usageProfileItemProvider = new UsageProfileItemProvider(this); + } + + return usageProfileItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageScenarioItemProvider usageScenarioItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createUsageScenarioAdapter() { + if (usageScenarioItemProvider == null) { + usageScenarioItemProvider = new UsageScenarioItemProvider(this); + } + + return usageScenarioItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ScenarioBehaviorItemProvider scenarioBehaviorItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createScenarioBehaviorAdapter() { + if (scenarioBehaviorItemProvider == null) { + scenarioBehaviorItemProvider = new ScenarioBehaviorItemProvider(this); + } + + return scenarioBehaviorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.Import} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ImportItemProvider importItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.Import}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createImportAdapter() { + if (importItemProvider == null) { + importItemProvider = new ImportItemProvider(this); + } + + return importItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OpenWorkloadTypeItemProvider openWorkloadTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createOpenWorkloadTypeAdapter() { + if (openWorkloadTypeItemProvider == null) { + openWorkloadTypeItemProvider = new OpenWorkloadTypeItemProvider(this); + } + + return openWorkloadTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ClosedWorkloadTypeItemProvider closedWorkloadTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createClosedWorkloadTypeAdapter() { + if (closedWorkloadTypeItemProvider == null) { + closedWorkloadTypeItemProvider = new ClosedWorkloadTypeItemProvider(this); + } + + return closedWorkloadTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected LoopUserActionItemProvider loopUserActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createLoopUserActionAdapter() { + if (loopUserActionItemProvider == null) { + loopUserActionItemProvider = new LoopUserActionItemProvider(this); + } + + return loopUserActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected DelayUserActionItemProvider delayUserActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createDelayUserActionAdapter() { + if (delayUserActionItemProvider == null) { + delayUserActionItemProvider = new DelayUserActionItemProvider(this); + } + + return delayUserActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected BranchUserActionItemProvider branchUserActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createBranchUserActionAdapter() { + if (branchUserActionItemProvider == null) { + branchUserActionItemProvider = new BranchUserActionItemProvider(this); + } + + return branchUserActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected SystemCallUserActionItemProvider systemCallUserActionItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createSystemCallUserActionAdapter() { + if (systemCallUserActionItemProvider == null) { + systemCallUserActionItemProvider = new SystemCallUserActionItemProvider(this); + } + + return systemCallUserActionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected CallParameterSettingItemProvider callParameterSettingItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createCallParameterSettingAdapter() { + if (callParameterSettingItemProvider == null) { + callParameterSettingItemProvider = new CallParameterSettingItemProvider(this); + } + + return callParameterSettingItemProvider; + } + + /** + * 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 (usageProfileItemProvider != null) usageProfileItemProvider.dispose(); + if (usageScenarioItemProvider != null) usageScenarioItemProvider.dispose(); + if (scenarioBehaviorItemProvider != null) scenarioBehaviorItemProvider.dispose(); + if (importItemProvider != null) importItemProvider.dispose(); + if (openWorkloadTypeItemProvider != null) openWorkloadTypeItemProvider.dispose(); + if (closedWorkloadTypeItemProvider != null) closedWorkloadTypeItemProvider.dispose(); + if (loopUserActionItemProvider != null) loopUserActionItemProvider.dispose(); + if (delayUserActionItemProvider != null) delayUserActionItemProvider.dispose(); + if (branchUserActionItemProvider != null) branchUserActionItemProvider.dispose(); + if (systemCallUserActionItemProvider != null) systemCallUserActionItemProvider.dispose(); + if (callParameterSettingItemProvider != null) callParameterSettingItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7f6487c9eab4a4d585cb08c8d45919aacd532345 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java @@ -0,0 +1,173 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; +import edu.kit.ipd.descartes.mm.usageprofile.UsageScenario; + +import java.util.Collection; +import java.util.List; + +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.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UsageScenarioItemProvider extends EntityItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageScenarioItemProvider(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(UsageProfilePackage.Literals.USAGE_SCENARIO__SCENARIO_BEHAVIOR); + childrenFeatures.add(UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE); + } + 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 UsageScenario.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/UsageScenario")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((UsageScenario)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_UsageScenario_type") : + getString("_UI_UsageScenario_type") + " " + 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); + + switch (notification.getFeatureID(UsageScenario.class)) { + case UsageProfilePackage.USAGE_SCENARIO__SCENARIO_BEHAVIOR: + case UsageProfilePackage.USAGE_SCENARIO__WORKLOAD_TYPE: + 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 + (UsageProfilePackage.Literals.USAGE_SCENARIO__SCENARIO_BEHAVIOR, + UsageProfileFactory.eINSTANCE.createScenarioBehavior())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE, + UsageProfileFactory.eINSTANCE.createOpenWorkloadType())); + + newChildDescriptors.add + (createChildParameter + (UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE, + UsageProfileFactory.eINSTANCE.createClosedWorkloadType())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2009542b60d3fa0935313b91343a75ff3a7037bf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java @@ -0,0 +1,110 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.provider; + + +import java.util.Collection; +import java.util.List; + +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.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.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.WorkloadType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class WorkloadTypeItemProvider + 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 WorkloadTypeItemProvider(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 the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_WorkloadType_type"); + } + + + /** + * 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return UsageProfileEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath b/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/.project b/edu.kit.ipd.descartes.mm.usageprofile.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..fd2eb55f2ff7694f05ade3f4dbc358f815f47f3b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.mm.usageprofile.editor</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/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..f7a9eb5a2a5ad4e00c0b9ad8a5884d72e9dabc6a --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.mm.usageprofile.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.mm.usageprofile.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + edu.kit.ipd.descartes.mm.usageprofile.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport, + edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport, + edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties b/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..96a88f811b7bbc6609bc46463126b55cc7651542 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif new file mode 100644 index 0000000000000000000000000000000000000000..426010601a6d829b0653876d6097dadec6e4d0e3 Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif differ diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..474cfdee495da0e8a0753f27db2059d83932c2a6 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties @@ -0,0 +1,54 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = UsageProfile Editor +providerName = www.example.org + +_UI_UsageProfileEditor_menu = &Usage Profile Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = DML +_UI_Wizard_usageprofile_category = Usage Profile + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_UsageProfileModelWizard_label = Usage Profile Model +_UI_UsageProfileModelWizard_description = Create a new Usage Profile model + +_UI_UsageProfileEditor_label = Usage Profile Model Editor + +_UI_UsageProfileEditorFilenameDefaultBase = My +_UI_UsageProfileEditorFilenameExtensions = usageprofile + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5c7897ba2a769d4e4c627b96f7f68363e8c4ec1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated usageprofile --> + <category + id="tools.descartes.dml.category" + name="%_UI_Wizard_category"/> + <category + id="tools.descartes.dml.usageprofile.category" + name="%_UI_Wizard_usageprofile_category" + parentCategory="tools.descartes.dml.category"> + </category> + <wizard + id="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileModelWizardID" + name="%_UI_UsageProfileModelWizard_label" + class="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileModelWizard" + category="tools.descartes.dml.category/tools.descartes.dml.usageprofile.category" + icon="icons/full/obj16/UsageProfileModelFile.gif"> + <description>%_UI_UsageProfileModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated usageprofile --> + <editor + id="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditorID" + name="%_UI_UsageProfileEditor_label" + icon="icons/full/obj16/UsageProfileModelFile.gif" + extensions="usageprofile" + class="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditor" + contributorClass="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml b/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..352f4b7bd44b56c1fbd10c4e74a56074663b80f1 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.mm.usageprofile.editor</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..2a16ddd8f6a190d576e022d43456c184fbce5e85 --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java @@ -0,0 +1,424 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the UsageProfile model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UsageProfileActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(UsageProfileEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = + new Action(UsageProfileEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageProfileActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("usageprofile-settings")); + toolBarManager.add(new Separator("usageprofile-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditor_menu"), "edu.kit.ipd.descartes.mm.usageprofileMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..5069ed2b5134022ba63d8f66202d58d4f133c0bf --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java @@ -0,0 +1,1843 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory; + +import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a UsageProfile model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UsageProfileEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(UsageProfileEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(UsageProfileEditor.this); + handleActivate(); + } + } + else if (p == UsageProfileEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(UsageProfileEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == UsageProfileEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(UsageProfileEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "edu.kit.ipd.descartes.mm.usageprofile.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageProfileEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new UsageProfileItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.usageprofile.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "edu.kit.ipd.descartes.mm.usageprofile.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), UsageProfileEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List<?> selection) { + UsageProfileEditor.this.setSelectionToViewer(selection); + UsageProfileEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return UsageProfileEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return UsageProfileEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..9bd09d5b7ffe984eee835baaabc060c27cdc642f --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java @@ -0,0 +1,104 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.presentation; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin; + +import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the UsageProfile editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class UsageProfileEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final UsageProfileEditorPlugin INSTANCE = new UsageProfileEditorPlugin(); + + /** + * 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 UsageProfileEditorPlugin() { + super + (new ResourceLocator [] { + ApplicationlevelEditPlugin.INSTANCE, + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + ResourcelandscapeEditPlugin.INSTANCE, + }); + } + + /** + * 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 EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..8871ab68bb83c3cf25aa2d0a3507d8e37231569b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java @@ -0,0 +1,628 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.mm.usageprofile.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory; +import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage; +import edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class UsageProfileModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageProfilePackage usageProfilePackage = UsageProfilePackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageProfileFactory usageProfileFactory = usageProfilePackage.getUsageProfileFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageProfileModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected UsageProfileModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(UsageProfileEditorPlugin.INSTANCE.getImage("full/wizban/NewUsageProfile"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : usageProfilePackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)usageProfilePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = usageProfileFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), UsageProfileEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + UsageProfileEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class UsageProfileModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageProfileModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(UsageProfileEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class UsageProfileModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public UsageProfileModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(UsageProfileEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(UsageProfileEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return UsageProfileEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + UsageProfileEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(UsageProfileEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new UsageProfileModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_label")); + newFileCreationPage.setDescription(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_description")); + newFileCreationPage.setFileName(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new UsageProfileModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_label")); + initialObjectCreationPage.setDescription(UsageProfileEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath b/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/.project b/edu.kit.ipd.descartes.perfdatarepo.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..d1c05f59e557cb20684b3c333db23926bec04b27 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>edu.kit.ipd.descartes.perfdatarepo.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/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..36b0a22c995a51f3ae7da5e9374ca8e9a3b8da0f --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: edu.kit.ipd.descartes.perfdatarepo.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: edu.kit.ipd.descartes.perfdatarepo.provider +Require-Bundle: org.eclipse.core.runtime, + edu.kit.ipd.descartes.perfdatarepo;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport, + edu.kit.ipd.descartes.core;visibility:=reexport, + edu.kit.ipd.descartes.core.edit;visibility:=reexport, + edu.kit.ipd.descartes.identifier;visibility:=reexport, + edu.kit.ipd.descartes.identifier.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties b/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties @@ -0,0 +1,10 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif new file mode 100644 index 0000000000000000000000000000000000000000..f420604f4047de6fb03edd17e3cfa3c7b3b2c6c5 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif new file mode 100644 index 0000000000000000000000000000000000000000..08f15c5851e003aa21471cc9e59ddd3b43beedce Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b6df378675bf2d7a741c5933395bafc19999544 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a340d5744ab5325b89ca5706ed316ebf4219ae3 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c2aaac84ee6ea15757df499505e9aa0de4288f9 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif new file mode 100644 index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif new file mode 100644 index 0000000000000000000000000000000000000000..338fb8d9a728b682e398849d2038959d01b4e0f2 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50 Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif differ diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..8b7c3e42ebd1bbdc6b2b0331be87115b95711343 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties @@ -0,0 +1,34 @@ +# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + +pluginName = Perfdatarepo 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_PerformanceDataRepository_type = Performance Data Repository +_UI_Result_type = Result +_UI_MetricType_type = Metric Type +_UI_MetricValue_type = Metric Value +_UI_Impact_type = Impact +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_PerformanceDataRepository_resultHistory_feature = Result History +_UI_PerformanceDataRepository_metricTypes_feature = Metric Types +_UI_PerformanceDataRepository_impactHistory_feature = Impact History +_UI_Result_timestamp_feature = Timestamp +_UI_Result_metricValues_feature = Metric Values +_UI_MetricValue_metricType_feature = Metric Type +_UI_MetricValue_value_feature = Value +_UI_Impact_before_feature = Before +_UI_Impact_after_feature = After +_UI_Unknown_feature = Unspecified + diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..5905d65320b3647d61b4ea564ceb52109984225a --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- + Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <factory + uri="http://www.descartes-research.net/metamodel/perfdata/0.1" + class="edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoItemProviderAdapterFactory" + 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/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml b/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..10e1ece9b58c337700a32ee0a838b0ada54bf5c7 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml @@ -0,0 +1,12 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>edu.kit.ipd.descartes.perfdatarepo.edit</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>edu.kit.ipd.descartes.mm</groupId> + <artifactId>edu.kit.ipd.descartes.releng</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath> + </parent> +</project> \ No newline at end of file diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c17eb91857ab71fa6d4526c6a648aa99db7134d4 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java @@ -0,0 +1,174 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.perfdatarepo.Impact; +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage; + +import java.util.Collection; +import java.util.List; + +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; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Impact} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ImpactItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ImpactItemProvider(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); + + addBeforePropertyDescriptor(object); + addAfterPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Before feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addBeforePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Impact_before_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Impact_before_feature", "_UI_Impact_type"), + PerfdatarepoPackage.Literals.IMPACT__BEFORE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the After feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAfterPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Impact_after_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Impact_after_feature", "_UI_Impact_type"), + PerfdatarepoPackage.Literals.IMPACT__AFTER, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns Impact.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Impact")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Impact)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Impact_type") : + getString("_UI_Impact_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PerfdatarepoEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..f52693968b103f2562ce5001c53ada9d6734775f --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java @@ -0,0 +1,126 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.perfdatarepo.MetricType; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.perfdatarepo.MetricType} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class MetricTypeItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public MetricTypeItemProvider(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 MetricType.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/MetricType")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((MetricType)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_MetricType_type") : + getString("_UI_MetricType_type") + " " + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PerfdatarepoEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..15464b07be488bcb75566001489702452d4cbb64 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java @@ -0,0 +1,182 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.perfdatarepo.MetricValue; +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class MetricValueItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public MetricValueItemProvider(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); + + addMetricTypePropertyDescriptor(object); + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Metric Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMetricTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_MetricValue_metricType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_MetricValue_metricType_feature", "_UI_MetricValue_type"), + PerfdatarepoPackage.Literals.METRIC_VALUE__METRIC_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_MetricValue_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_MetricValue_value_feature", "_UI_MetricValue_type"), + PerfdatarepoPackage.Literals.METRIC_VALUE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.REAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns MetricValue.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/MetricValue")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((MetricValue)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_MetricValue_type") : + getString("_UI_MetricValue_type") + " " + 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); + + switch (notification.getFeatureID(MetricValue.class)) { + case PerfdatarepoPackage.METRIC_VALUE__VALUE: + 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 PerfdatarepoEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..b4794438cc5609b7022f6d3971e590d7fa7b119b --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java @@ -0,0 +1,96 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + +import edu.kit.ipd.descartes.core.provider.CoreEditPlugin; + +import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Perfdatarepo edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class PerfdatarepoEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final PerfdatarepoEditPlugin INSTANCE = new PerfdatarepoEditPlugin(); + + /** + * 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 PerfdatarepoEditPlugin() { + super + (new ResourceLocator [] { + CoreEditPlugin.INSTANCE, + IdentifierEditPlugin.INSTANCE, + }); + } + + /** + * 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/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..89882ab99747dd813385dee3c83167616d8751ee --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java @@ -0,0 +1,296 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + +import edu.kit.ipd.descartes.perfdatarepo.util.PerfdatarepoAdapterFactory; + +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; + +/** + * 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 PerfdatarepoItemProviderAdapterFactory extends PerfdatarepoAdapterFactory 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 PerfdatarepoItemProviderAdapterFactory() { + 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 edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PerformanceDataRepositoryItemProvider performanceDataRepositoryItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPerformanceDataRepositoryAdapter() { + if (performanceDataRepositoryItemProvider == null) { + performanceDataRepositoryItemProvider = new PerformanceDataRepositoryItemProvider(this); + } + + return performanceDataRepositoryItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.Result} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ResultItemProvider resultItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Result}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createResultAdapter() { + if (resultItemProvider == null) { + resultItemProvider = new ResultItemProvider(this); + } + + return resultItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.MetricType} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MetricTypeItemProvider metricTypeItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createMetricTypeAdapter() { + if (metricTypeItemProvider == null) { + metricTypeItemProvider = new MetricTypeItemProvider(this); + } + + return metricTypeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MetricValueItemProvider metricValueItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createMetricValueAdapter() { + if (metricValueItemProvider == null) { + metricValueItemProvider = new MetricValueItemProvider(this); + } + + return metricValueItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.Impact} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ImpactItemProvider impactItemProvider; + + /** + * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Impact}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createImpactAdapter() { + if (impactItemProvider == null) { + impactItemProvider = new ImpactItemProvider(this); + } + + return impactItemProvider; + } + + /** + * 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 (performanceDataRepositoryItemProvider != null) performanceDataRepositoryItemProvider.dispose(); + if (resultItemProvider != null) resultItemProvider.dispose(); + if (metricTypeItemProvider != null) metricTypeItemProvider.dispose(); + if (metricValueItemProvider != null) metricValueItemProvider.dispose(); + if (impactItemProvider != null) impactItemProvider.dispose(); + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..82d6ee951daf68bf94efe4675096487bdc42cf08 --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java @@ -0,0 +1,186 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory; +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage; +import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; + +import java.util.Collection; +import java.util.List; + +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.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 edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PerformanceDataRepositoryItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PerformanceDataRepositoryItemProvider(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(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY); + childrenFeatures.add(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES); + childrenFeatures.add(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY); + } + 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 PerformanceDataRepository.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PerformanceDataRepository")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PerformanceDataRepository)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PerformanceDataRepository_type") : + getString("_UI_PerformanceDataRepository_type") + " " + 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); + + switch (notification.getFeatureID(PerformanceDataRepository.class)) { + case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY: + case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES: + case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY: + 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 + (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY, + PerfdatarepoFactory.eINSTANCE.createResult())); + + newChildDescriptors.add + (createChildParameter + (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES, + PerfdatarepoFactory.eINSTANCE.createMetricType())); + + newChildDescriptors.add + (createChildParameter + (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY, + PerfdatarepoFactory.eINSTANCE.createImpact())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PerfdatarepoEditPlugin.INSTANCE; + } + +} diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..8b6cb3d107161d32fea066420ffe4333b79f9c7d --- /dev/null +++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java @@ -0,0 +1,200 @@ +/** + * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT + */ +package edu.kit.ipd.descartes.perfdatarepo.provider; + + +import edu.kit.ipd.descartes.core.provider.EntityItemProvider; + +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory; +import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage; +import edu.kit.ipd.descartes.perfdatarepo.Result; + +import java.util.Collection; +import java.util.List; + +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.ViewerNotification; + +/** + * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Result} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ResultItemProvider + extends EntityItemProvider + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResultItemProvider(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); + + addTimestampPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Timestamp feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addTimestampPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Result_timestamp_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Result_timestamp_feature", "_UI_Result_type"), + PerfdatarepoPackage.Literals.RESULT__TIMESTAMP, + 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(PerfdatarepoPackage.Literals.RESULT__METRIC_VALUES); + } + 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 Result.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Result")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Result)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Result_type") : + getString("_UI_Result_type") + " " + 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); + + switch (notification.getFeatureID(Result.class)) { + case PerfdatarepoPackage.RESULT__TIMESTAMP: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case PerfdatarepoPackage.RESULT__METRIC_VALUES: + 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 + (PerfdatarepoPackage.Literals.RESULT__METRIC_VALUES, + PerfdatarepoFactory.eINSTANCE.createMetricValue())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PerfdatarepoEditPlugin.INSTANCE; + } + +}