Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaged Elaasar2018-03-28 12:05:07 +0000
committerPatrick Tessier2018-04-04 09:29:25 +0000
commit1bed9aceb3f2641db64630a58e3622c35182272a (patch)
tree64178408d6cd4587be9d26966cbaad93f53798fd /plugins/infra/viewpoints
parent05d1e3df05a90b922102c99dacca0903aff4f520 (diff)
downloadorg.eclipse.papyrus-1bed9aceb3f2641db64630a58e3622c35182272a.tar.gz
org.eclipse.papyrus-1bed9aceb3f2641db64630a58e3622c35182272a.tar.xz
org.eclipse.papyrus-1bed9aceb3f2641db64630a58e3622c35182272a.zip
Bug 486472 - [AFViewpoints] Invalid input
url:platform:/plugin/org.eclipse.papyrus.infra.viewpoints.configuration.edit/icons/full/obj16/PapyrusViewpoint.png Bug 486708 - [AFViewpoints] missing PapyrusViewpoint.png Bug 482383 - [AFViewpoints] no icon a viewpoint generate a MalformedURLException Reimplemented the Viewpoing Explorer to show the selected architecture context and viewpoints in the currently selected modelset. Change-Id: I8ea9e4fd5b3485f58819392dd49230b527381355 Signed-off-by: Maged Elaasar <melaasar@gmail.com>
Diffstat (limited to 'plugins/infra/viewpoints')
-rwxr-xr-xplugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/META-INF/MANIFEST.MF7
-rwxr-xr-xplugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewPrototypeContentProvider.java258
-rwxr-xr-xplugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewpointExplorer.java259
-rw-r--r--plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureDescriptionLanguageItemProvider.java64
-rw-r--r--plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureFrameworkItemProvider.java64
-rw-r--r--plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureViewpointItemProvider.java65
-rw-r--r--plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedItemPropertyDescriptor.java96
7 files changed, 532 insertions, 281 deletions
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/META-INF/MANIFEST.MF b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/META-INF/MANIFEST.MF
index 1b386e0df78..dc943fa4820 100755
--- a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/META-INF/MANIFEST.MF
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/META-INF/MANIFEST.MF
@@ -11,20 +11,21 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.107.0,4.0.0)";visibility:=reex
org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
- org.eclipse.papyrus.infra.core.architecture;visibility:=reexport;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.infra.core.architecture;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
org.eclipse.gmf.runtime.notation;bundle-version="[1.8.0,2.0.0)";visibility:=reexport,
org.eclipse.gmf.runtime.emf.type.core;bundle-version="[1.9.0,2.0.0)";visibility:=reexport,
org.eclipse.gmf.runtime.diagram.ui;bundle-version="[1.8.0,2.0.0)",
org.eclipse.papyrus.infra.emf;bundle-version="[3.0.0,4.0.0)",
org.eclipse.papyrus.infra.constraints;bundle-version="[2.0.0,3.0.0)";visibility:=reexport,
- org.eclipse.papyrus.infra.types;visibility:=reexport;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.types;bundle-version="[3.0.0,4.0.0)";visibility:=reexport,
org.eclipse.papyrus.infra.widgets;bundle-version="[3.0.0,4.0.0)",
org.eclipse.papyrus.infra.ui.emf;bundle-version="[2.0.0,3.0.0)",
org.eclipse.papyrus.infra.internationalization.utils;bundle-version="[1.0.0,2.0.0)",
org.eclipse.papyrus.infra.architecture;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
org.eclipse.papyrus.infra.architecture.representation;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
org.eclipse.papyrus.infra.gmfdiag.representation;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.papyrus.infra.nattable.representation;bundle-version="[1.0.0,2.0.0)"
+ org.eclipse.papyrus.infra.nattable.representation;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.infra.core.architecture.edit;bundle-version="[1.0.0,2.0.0)"
Bundle-Vendor: %providerName
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewPrototypeContentProvider.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewPrototypeContentProvider.java
deleted file mode 100755
index c0384d26743..00000000000
--- a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewPrototypeContentProvider.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2014, 2016 CEA LIST, Christian W. Damus, and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Laurent Wouters laurent.wouters@cea.fr - Initial API and implementation
- * Christian W. Damus - bug 485220
- *
- *****************************************************************************/
-package org.eclipse.papyrus.infra.viewpoints.policy;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
-import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureViewpoint;
-import org.eclipse.papyrus.infra.architecture.representation.ModelRule;
-import org.eclipse.papyrus.infra.architecture.representation.OwningRule;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Content provider of ViewPrototypes
- *
- * @author Laurent Wouters
- *
- */
-public class ViewPrototypeContentProvider implements ITreeContentProvider {
-
- private static ImageDescriptor loadImage(String uri) {
- URL url = null;
- try {
- url = new URL(uri);
- } catch (MalformedURLException e) {
- }
- return ImageDescriptor.createFromURL(url);
- }
-
- public static class LP extends LabelProvider {
- private static final String IMG_VIEWPOINT = "imageViewpoint"; //$NON-NLS-1$
- private static final String IMG_PROFILE = "imageProfile"; //$NON-NLS-1$
- private static final String IMG_MODEL = "imageModel"; //$NON-NLS-1$
- private static final String IMG_OWNER = "imageOwner"; //$NON-NLS-1$
-
- private ImageRegistry images = new ImageRegistry(JFaceResources.getResources());
-
- {
- images.put(IMG_VIEWPOINT, loadImage("platform:/plugin/org.eclipse.papyrus.infra.core.architecture.edit/icons/full/obj16/MergedArchitectureViewpoint.gif"));
- images.put(IMG_PROFILE, loadImage("platform:/plugin/org.eclipse.papyrus.infra.viewpoints.policy/icons/Profile.gif"));
- images.put(IMG_MODEL, loadImage("platform:/plugin/org.eclipse.papyrus.infra.core.architecture.edit/icons/full/obj16/ModelRule.gif"));
- images.put(IMG_OWNER, loadImage("platform:/plugin/org.eclipse.papyrus.infra.core.architecture.edit/icons/full/obj16/OwningRule.gif"));
- }
-
- @Override
- public void dispose() {
- super.dispose();
-
- images.dispose();
- }
-
- @Override
- public String getText(Object element) {
- if (element instanceof MergedArchitectureViewpoint) {
- return "Viewpoint " + ((MergedArchitectureViewpoint) element).getName();
- }
- if (element instanceof ViewPrototype) {
- return ((ViewPrototype) element).getLabel();
- }
- if (element instanceof EPackage) {
- return "Required profile: " + ((EPackage) element).getNsURI();
- }
- if (element instanceof ModelRule) {
- return getText((ModelRule) element);
- }
- if (element instanceof OwningRule) {
- return getText((OwningRule) element);
- }
- return element.toString();
- }
-
- private String getText(ModelRule rule) {
- StringBuilder builder = new StringBuilder("Possible root: ");
- boolean first = true;
- for (EClass ste : rule.getStereotypes()) {
- if (!first) {
- builder.append(", ");
- }
- builder.append("<<");
- builder.append(ste.getEPackage().getNsPrefix());
- builder.append("::");
- builder.append(ste.getName());
- builder.append(">>");
- first = false;
- }
- if (rule.getElement() != null) {
- if (!first) {
- builder.append(" ");
- }
- builder.append(rule.getElement().getEPackage().getNsPrefix());
- builder.append("::");
- builder.append(rule.getElement().getName());
- }
- return builder.toString();
- }
-
- private String getText(OwningRule rule) {
- StringBuilder builder = new StringBuilder("Possible owner: ");
- boolean first = true;
- for (EClass ste : rule.getStereotypes()) {
- if (!first) {
- builder.append(", ");
- }
- builder.append("<<");
- builder.append(ste.getEPackage().getNsPrefix());
- builder.append("::");
- builder.append(ste.getName());
- builder.append(">>");
- first = false;
- }
- if (rule.getElement() != null) {
- if (!first) {
- builder.append(" ");
- }
- builder.append(rule.getElement().getEPackage().getNsPrefix());
- builder.append("::");
- builder.append(rule.getElement().getName());
- }
- return builder.toString();
- }
-
- @Override
- public Image getImage(Object element) {
- if (element instanceof MergedArchitectureViewpoint) {
- return images.get(IMG_VIEWPOINT);
- }
- if (element instanceof ViewPrototype) {
- return ((ViewPrototype) element).getIcon();
- }
- if (element instanceof EPackage) {
- return images.get(IMG_PROFILE);
- }
- if (element instanceof ModelRule) {
- return images.get(IMG_MODEL);
- }
- if (element instanceof OwningRule) {
- return images.get(IMG_OWNER);
- }
- return null;
- }
- }
-
-
- /**
- * Creates the provider
- *
- * @param views
- * The views to provide
- */
- public ViewPrototypeContentProvider() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()
- */
- public void dispose() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement) {
- return (Object[])inputElement;
- }
-
-
- private Object[] getChildren(ViewPrototype view) {
- if (view.getRepresentationKind() == null) {
- return new String[0];
- }
- List<Object> data = new ArrayList<Object>();
- data.add(view.getRepresentationKind().eContainer());
- data.addAll(view.getRepresentationKind().getLanguage().getProfiles());
- data.addAll(view.getRepresentationKind().getModelRules());
- data.addAll(view.getRepresentationKind().getOwningRules());
- return data.toArray();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object element) {
- if (element instanceof MergedArchitectureViewpoint) {
- MergedArchitectureViewpoint viewpoint = (MergedArchitectureViewpoint)element;
- List<ViewPrototype> protos = new ArrayList<ViewPrototype>();
- for (RepresentationKind kind : viewpoint.getRepresentationKinds()) {
- protos.add(ViewPrototype.get(kind));
- }
- Collections.sort(protos, new ViewPrototype.Comp());
- return protos.toArray();
- }
- if (element instanceof ViewPrototype) {
- return getChildren((ViewPrototype) element);
- }
- return new Object[0];
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
- */
- public boolean hasChildren(Object element) {
- if (element instanceof MergedArchitectureViewpoint) {
- return true;
- }
- if (element instanceof ViewPrototype) {
- return true;
- }
- return false;
- }
-}
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewpointExplorer.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewpointExplorer.java
index 7f78549c621..d33652dc773 100755
--- a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewpointExplorer.java
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/ViewpointExplorer.java
@@ -13,14 +13,48 @@
*****************************************************************************/
package org.eclipse.papyrus.infra.viewpoints.policy;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+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.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.emf.edit.ui.provider.PropertySource;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.papyrus.infra.architecture.ArchitectureDescriptionUtils;
+import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureContext;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureDescriptionLanguage;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureFramework;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureViewpoint;
+import org.eclipse.papyrus.infra.core.architecture.provider.ArchitectureEditPlugin;
+import org.eclipse.papyrus.infra.core.architecture.provider.ArchitectureItemProviderAdapterFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.papyrus.infra.viewpoints.policy.providers.MergedArchitectureDescriptionLanguageItemProvider;
+import org.eclipse.papyrus.infra.viewpoints.policy.providers.MergedArchitectureFrameworkItemProvider;
+import org.eclipse.papyrus.infra.viewpoints.policy.providers.MergedArchitectureViewpointItemProvider;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.ViewPart;
/**
@@ -33,10 +67,46 @@ public class ViewpointExplorer extends ViewPart {
private TreeViewer tree;
+ private IPartListener listener;
+
+ private ArchitectureItemProviderAdapterFactory architectureAdapterFactory;
+ private ComposedAdapterFactory adapterFactory;
+ private AdapterFactoryContentProvider contentProvider;
+ private AdapterFactoryLabelProvider labelProvider;
+ private AdapterFactoryEditingDomain editingDomain;
+
+ private class ViewpointAdapterFactory extends ComposedAdapterFactory implements IEditingDomainProvider {
+ public ViewpointAdapterFactory(Descriptor.Registry adapterFactoryDescriptorRegistry) {
+ super(adapterFactoryDescriptorRegistry);
+ }
+
+ @Override
+ public EditingDomain getEditingDomain() {
+ return editingDomain;
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ */
public ViewpointExplorer() {
-
+ architectureAdapterFactory = new ArchitectureItemProviderAdapterFactory();
+ adapterFactory = new ViewpointAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ contentProvider = new AdapterFactoryContentProvider(adapterFactory);
+ labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, null, new HashMap<Resource, Boolean>()) {
+ public boolean isReadOnly(Resource resource) {
+ return true; // to make the editing domain non-editable
+ }
+ };
}
+ @Override
+ public void init(IViewSite site) throws PartInitException {
+ super.init(site);
+ }
+
/*
* (non-Javadoc)
*
@@ -53,12 +123,18 @@ public class ViewpointExplorer extends ViewPart {
inner.setLayout(new FillLayout());
tree = new TreeViewer(inner, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
- tree.setLabelProvider(new ViewPrototypeContentProvider.LP());
- tree.setSorter(getViewerSorter());
- tree.setContentProvider(new ViewPrototypeContentProvider());
- //tree.setInput(ViewPrototypeContentProvider.treeRoot);
+ tree.setLabelProvider(createLabelProvider(adapterFactory));
+ tree.setContentProvider(createContentProvider(adapterFactory));
+
+ getSite().getPage().addPartListener(listener = createSelectionListener(tree));
+ getSite().setSelectionProvider(tree);
}
+ public void dispose() {
+ if (listener != null)
+ getSite().getPage().removePartListener(listener);
+ }
+
/*
* (non-Javadoc)
*
@@ -69,23 +145,166 @@ public class ViewpointExplorer extends ViewPart {
}
+ private ILabelProvider createLabelProvider(ComposedAdapterFactory adapterFactory) {
+ return new LabelProvider() {
- /**
- * Gets the viewer sorter for this dialog
- *
- * @return A viewer sorter
- */
- private ViewerSorter getViewerSorter() {
- return new ViewerSorter() {
@Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- if (e1 instanceof ViewPrototype) {
- ViewPrototype b1 = (ViewPrototype) e1;
- ViewPrototype b2 = (ViewPrototype) e2;
- return b1.getFullLabel().compareTo(b2.getFullLabel());
+ public Image getImage(Object element) {
+ if (element instanceof PropertySource) {
+ element = ((PropertySource)element).getObject();
+ }
+ if (element instanceof MergedArchitectureDescriptionLanguage) {
+ Object object = ArchitectureEditPlugin.INSTANCE.getImage("full/obj16/ArchitectureDescriptionLanguage");
+ return ExtendedImageRegistry.INSTANCE.getImage(object);
}
- return super.compare(viewer, e1, e2);
+ if (element instanceof MergedArchitectureFramework) {
+ Object object = ArchitectureEditPlugin.INSTANCE.getImage("full/obj16/ArchitectureFramework");
+ return ExtendedImageRegistry.INSTANCE.getImage(object);
+ }
+ if (element instanceof MergedArchitectureViewpoint) {
+ Object object = ArchitectureEditPlugin.INSTANCE.getImage("full/obj16/ArchitectureViewpoint");
+ return ExtendedImageRegistry.INSTANCE.getImage(object);
+ }
+ return labelProvider.getImage(element);
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof PropertySource) {
+ element = ((PropertySource)element).getObject();
+ }
+ if (element instanceof MergedArchitectureDescriptionLanguage) {
+ String text = ArchitectureEditPlugin.INSTANCE.getString("_UI_ArchitectureDescriptionLanguage_type");
+ return text + " " + ((MergedArchitectureDescriptionLanguage)element).getName();
+ }
+ if (element instanceof MergedArchitectureFramework) {
+ String text = ArchitectureEditPlugin.INSTANCE.getString("_UI_ArchitectureFramework_type");
+ return text + " " + ((MergedArchitectureFramework)element).getName();
+ }
+ if (element instanceof MergedArchitectureViewpoint) {
+ String text = ArchitectureEditPlugin.INSTANCE.getString("_UI_ArchitectureViewpoint_type");
+ return text + " " + ((MergedArchitectureViewpoint)element).getName();
+ }
+ return labelProvider.getText(element);
}
};
}
+
+ private ITreeContentProvider createContentProvider(ComposedAdapterFactory adapterFactory) {
+ return new ITreeContentProvider() {
+ private ArchitectureDescriptionUtils utils;
+
+ @Override
+ public boolean hasChildren(Object element) {
+ return getChildren(element) != null;
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof ModelSet) {
+ utils = new ArchitectureDescriptionUtils((ModelSet)inputElement);
+ return getPropertySources(new Object[] {utils.getArchitectureContext()});
+ } else {
+ utils = null;
+ return null;
+ }
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof PropertySource) {
+ parentElement = ((PropertySource)parentElement).getObject();
+ if (parentElement instanceof MergedArchitectureContext)
+ return getPropertySources(utils.getArchitectureViewpoints().toArray());
+ if (parentElement instanceof MergedArchitectureViewpoint)
+ return getPropertySources(((MergedArchitectureViewpoint)parentElement).getRepresentationKinds().toArray());
+ else
+ return getPropertySources(contentProvider.getChildren(parentElement));
+ }
+ return null;
+ }
+ };
+ }
+
+ private IPartListener createSelectionListener(TreeViewer viewer) {
+ return new IPartListener() {
+ private IWorkbenchPart editor;
+
+ @Override
+ public void partActivated(IWorkbenchPart part) {
+ if (part == editor)
+ viewer.refresh();
+ else if (part instanceof IMultiDiagramEditor) {
+ EditingDomain domain = part.getAdapter(EditingDomain.class);
+ if (domain != null) {
+ ResourceSet resourceSet = domain.getResourceSet();
+ if (resourceSet instanceof ModelSet) {
+ editor = part;
+ viewer.setInput((ModelSet)resourceSet);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart part) {
+ if (part instanceof IMultiDiagramEditor) {
+
+ }
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart part) {
+ if (part == editor) {
+ viewer.setInput(null);
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart part) {
+ if (part instanceof IMultiDiagramEditor) {
+
+ }
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPart part) {
+ if (part instanceof IMultiDiagramEditor) {
+
+ }
+ }
+ };
+ }
+
+ public Object[] getPropertySources(Object[] objects) {
+ ArrayList<Object> propertySources = new ArrayList<Object>();
+ for (Object object : objects) {
+ propertySources.add(getPropertySource(object));
+ }
+ return propertySources.toArray();
+ }
+
+ public Object getPropertySource(Object object) {
+ if (object instanceof EObject)
+ return contentProvider.getPropertySource(object);
+ else if (object instanceof MergedArchitectureViewpoint) {
+ IItemPropertySource source = new MergedArchitectureViewpointItemProvider(architectureAdapterFactory);
+ return new PropertySource(object, source);
+ }
+ else if (object instanceof MergedArchitectureFramework) {
+ IItemPropertySource source = new MergedArchitectureFrameworkItemProvider(architectureAdapterFactory);
+ return new PropertySource(object, source);
+ }
+ else if (object instanceof MergedArchitectureDescriptionLanguage) {
+ IItemPropertySource source = new MergedArchitectureDescriptionLanguageItemProvider(architectureAdapterFactory);
+ return new PropertySource(object, source);
+ }
+ return object;
+ }
+
}
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureDescriptionLanguageItemProvider.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureDescriptionLanguageItemProvider.java
new file mode 100644
index 00000000000..b1e8f3480a2
--- /dev/null
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureDescriptionLanguageItemProvider.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.viewpoints.policy.providers;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.papyrus.infra.core.architecture.provider.ArchitectureDescriptionLanguageItemProvider;
+
+/**
+ * @author melaasar
+ *
+ */
+public class MergedArchitectureDescriptionLanguageItemProvider extends ArchitectureDescriptionLanguageItemProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public MergedArchitectureDescriptionLanguageItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ protected ItemPropertyDescriptor createItemPropertyDescriptor(
+ AdapterFactory adapterFactory,
+ ResourceLocator resourceLocator,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ boolean multiLine,
+ boolean sortChoices,
+ Object staticImage,
+ String category,
+ String[] filterFlags,
+ Object propertyEditorFactory) {
+ return new MergedItemPropertyDescriptor(adapterFactory,
+ resourceLocator,
+ displayName,
+ description,
+ feature,
+ false,
+ multiLine,
+ sortChoices,
+ staticImage,
+ category,
+ filterFlags,
+ propertyEditorFactory);
+ }
+}
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureFrameworkItemProvider.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureFrameworkItemProvider.java
new file mode 100644
index 00000000000..1c4d6f78d45
--- /dev/null
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureFrameworkItemProvider.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.viewpoints.policy.providers;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.papyrus.infra.core.architecture.provider.ArchitectureFrameworkItemProvider;
+
+/**
+ * @author melaasar
+ *
+ */
+public class MergedArchitectureFrameworkItemProvider extends ArchitectureFrameworkItemProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public MergedArchitectureFrameworkItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ protected ItemPropertyDescriptor createItemPropertyDescriptor(
+ AdapterFactory adapterFactory,
+ ResourceLocator resourceLocator,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ boolean multiLine,
+ boolean sortChoices,
+ Object staticImage,
+ String category,
+ String[] filterFlags,
+ Object propertyEditorFactory) {
+ return new MergedItemPropertyDescriptor(adapterFactory,
+ resourceLocator,
+ displayName,
+ description,
+ feature,
+ false,
+ multiLine,
+ sortChoices,
+ staticImage,
+ category,
+ filterFlags,
+ propertyEditorFactory);
+ }
+}
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureViewpointItemProvider.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureViewpointItemProvider.java
new file mode 100644
index 00000000000..4b2e19ca74f
--- /dev/null
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedArchitectureViewpointItemProvider.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.viewpoints.policy.providers;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.papyrus.infra.core.architecture.provider.ArchitectureViewpointItemProvider;
+
+/**
+ * @author melaasar
+ *
+ */
+public class MergedArchitectureViewpointItemProvider extends ArchitectureViewpointItemProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public MergedArchitectureViewpointItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ protected ItemPropertyDescriptor createItemPropertyDescriptor(
+ AdapterFactory adapterFactory,
+ ResourceLocator resourceLocator,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ boolean multiLine,
+ boolean sortChoices,
+ Object staticImage,
+ String category,
+ String[] filterFlags,
+ Object propertyEditorFactory) {
+ return new MergedItemPropertyDescriptor(adapterFactory,
+ resourceLocator,
+ displayName,
+ description,
+ feature,
+ false,
+ multiLine,
+ sortChoices,
+ staticImage,
+ category,
+ filterFlags,
+ propertyEditorFactory);
+ }
+
+}
diff --git a/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedItemPropertyDescriptor.java b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedItemPropertyDescriptor.java
new file mode 100644
index 00000000000..49b91d08dc5
--- /dev/null
+++ b/plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/providers/MergedItemPropertyDescriptor.java
@@ -0,0 +1,96 @@
+/*****************************************************************************
+ * Copyright (c) 2018 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.viewpoints.policy.providers;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedADElement;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureContext;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureDescriptionLanguage;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureViewpoint;
+
+/**
+ * @author melaasar
+ *
+ */
+public class MergedItemPropertyDescriptor extends ItemPropertyDescriptor {
+
+ public MergedItemPropertyDescriptor(AdapterFactory adapterFactory,
+ ResourceLocator resourceLocator,
+ String displayName,
+ String description,
+ EStructuralFeature feature,
+ boolean isSettable,
+ boolean multiLine,
+ boolean sortChoices,
+ Object staticImage,
+ String category,
+ String[] filterFlags,
+ Object editorFactory) {
+ super(adapterFactory, resourceLocator, displayName, description, feature, isSettable, multiLine, sortChoices, staticImage, category, filterFlags, null);
+ }
+
+ public Object getPropertyValue(Object object) {
+ if (object instanceof MergedArchitectureContext) {
+ switch (feature.getFeatureID()) {
+ case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
+ return ((MergedArchitectureContext)object).getConversionCommandClass();
+ case ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS:
+ return ((MergedArchitectureContext)object).getCreationCommandClass();
+ case ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS:
+ return ((MergedArchitectureContext)object).getDefaultViewpoints();
+ case ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES:
+ return ((MergedArchitectureContext)object).getElementTypes();
+ case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX:
+ return ((MergedArchitectureContext)object).getExtensionPrefix();
+ }
+ };
+ if (object instanceof MergedArchitectureDescriptionLanguage) {
+ switch (feature.getFeatureID()) {
+ case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
+ return ((MergedArchitectureDescriptionLanguage)object).getMetamodel();
+ case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
+ return ((MergedArchitectureDescriptionLanguage)object).getProfiles();
+ }
+ };
+ if (object instanceof MergedArchitectureViewpoint) {
+ switch (feature.getFeatureID()) {
+ case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS:
+ return ((MergedArchitectureViewpoint)object).getConcerns();
+ case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS:
+ return ((MergedArchitectureViewpoint)object).getRepresentationKinds();
+ }
+ };
+ if (object instanceof MergedADElement) {
+ switch (feature.getFeatureID()) {
+ case ArchitecturePackage.AD_ELEMENT__DESCRIPTION:
+ return ((MergedADElement)object).getDescription();
+ case ArchitecturePackage.AD_ELEMENT__ICON:
+ return ((MergedADElement)object).getIcon();
+ case ArchitecturePackage.AD_ELEMENT__ID:
+ return ((MergedADElement)object).getId();
+ case ArchitecturePackage.AD_ELEMENT__NAME:
+ return ((MergedADElement)object).getName();
+ case ArchitecturePackage.AD_ELEMENT__QUALIFIED_NAME:
+ return ((MergedADElement)object).getQualifiedName();
+ }
+ };
+
+ return null;
+ }
+
+}

Back to the top