diff options
author | Maged Elaasar | 2018-03-28 12:05:07 +0000 |
---|---|---|
committer | Patrick Tessier | 2018-04-04 09:29:25 +0000 |
commit | 1bed9aceb3f2641db64630a58e3622c35182272a (patch) | |
tree | 64178408d6cd4587be9d26966cbaad93f53798fd /plugins/infra/viewpoints | |
parent | 05d1e3df05a90b922102c99dacca0903aff4f520 (diff) | |
download | org.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')
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; + } + +} |