Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2015-12-04 15:44:31 +0000
committerPierre-Charles David2015-12-07 15:13:03 +0000
commit61dcebe22de868889379614a7d5a92f5882d0e7f (patch)
treee4d27a2b3542b51c65efe92bc8a887ce4628a74e /incubation
parentc69639bc01e2332cbb4dabf04cec53aa483b7c67 (diff)
downloadorg.eclipse.sirius-61dcebe22de868889379614a7d5a92f5882d0e7f.tar.gz
org.eclipse.sirius-61dcebe22de868889379614a7d5a92f5882d0e7f.tar.xz
org.eclipse.sirius-61dcebe22de868889379614a7d5a92f5882d0e7f.zip
[482528] Reorganize code in SiriusTabDescriptorProvider
Extract the different parts of the main method into smaller ones for readability. Bug: 482528 Change-Id: I361b2a95df8f059d9cba41d05b3ca90994731faa Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
Diffstat (limited to 'incubation')
-rw-r--r--incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java87
1 files changed, 44 insertions, 43 deletions
diff --git a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
index 9526d068c0..9c4eb446a1 100644
--- a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
+++ b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
@@ -11,8 +11,6 @@
package org.eclipse.sirius.ui.properties.internal;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -34,15 +32,18 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.sirius.business.api.query.EObjectQuery;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.common.interpreter.api.IInterpreterProvider;
-import org.eclipse.sirius.ext.emf.AllContents;
-import org.eclipse.sirius.properties.PropertiesPackage;
import org.eclipse.sirius.properties.ViewExtensionDescription;
import org.eclipse.sirius.viewpoint.DSemanticDecorator;
+import org.eclipse.sirius.viewpoint.description.Group;
import org.eclipse.sirius.viewpoint.description.Viewpoint;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.tabbed.ITabDescriptor;
import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
public class SiriusTabDescriptorProvider implements ITabDescriptorProvider {
@Override
@@ -54,7 +55,6 @@ public class SiriusTabDescriptorProvider implements ITabDescriptorProvider {
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object[] objects = structuredSelection.toArray();
-
// FIXME We take the first one
if (objects.length > 0) {
EObject semanticElement = SemanticElementFinder.getAssociatedSemanticElement(objects[0]);
@@ -69,50 +69,51 @@ public class SiriusTabDescriptorProvider implements ITabDescriptorProvider {
private ITabDescriptor[] getTabDescriptors(EObject semanticElement) {
Session session = new EObjectQuery(semanticElement).getSession();
- if (session != null) {
- Set<Resource> resources = new LinkedHashSet<Resource>();
- Collection<Viewpoint> selectedViewpoints = session.getSelectedViewpoints(true);
- for (Viewpoint viewpoint : selectedViewpoints) {
- Resource eResource = viewpoint.eResource();
- if (eResource != null) {
- resources.add(eResource);
- }
- }
-
- List<ViewExtensionDescription> descriptions = new ArrayList<ViewExtensionDescription>();
- for (Resource resource : resources) {
- Iterable<EObject> iterable = AllContents.of(resource.getContents().get(0), PropertiesPackage.Literals.VIEW_EXTENSION_DESCRIPTION);
- for (EObject object : iterable) {
- if (object instanceof ViewExtensionDescription) {
- descriptions.add((ViewExtensionDescription) object);
- }
- }
- }
-
- // FIXME We take only the firts one
- if (descriptions.size() > 0) {
- ViewExtensionDescription viewExtensionDescription = descriptions.get(0);
- EEFViewDescription eefViewDescription = new ViewDescriptionConverter(viewExtensionDescription).convert();
+ List<ViewExtensionDescription> descriptions = findActiveDescriptions(session, semanticElement);
+ // FIXME We take only the firts one
+ if (descriptions.size() > 0) {
+ ViewExtensionDescription viewExtensionDescription = descriptions.get(0);
+ return getTabDescriptors(session, semanticElement, viewExtensionDescription);
+ }
+ return new ITabDescriptor[0];
+ }
- IVariableManager variableManager = new EEFVariableManagerFactory().createVariableManager();
- variableManager.put(EEFExpressionUtils.SELF, semanticElement);
+ private ITabDescriptor[] getTabDescriptors(Session session, EObject semanticElement, ViewExtensionDescription viewExtensionDescription) {
+ EEFViewDescription viewDescription = new ViewDescriptionConverter(viewExtensionDescription).convert();
+ EEFView eefView = createEEFView(session, semanticElement, viewDescription);
+
+ List<ITabDescriptor> descriptors = new ArrayList<ITabDescriptor>();
+ List<EEFPage> eefPages = eefView.getPages();
+ for (EEFPage eefPage : eefPages) {
+ descriptors.add(new EEFTabDescriptor(eefPage));
+ }
+ return descriptors.toArray(new ITabDescriptor[descriptors.size()]);
+ }
- List<IInterpreterProvider> interpreterProviders = new ArrayList<IInterpreterProvider>();
- interpreterProviders.add(new SiriusInterpreterProvider(session));
- EEFView eefView = new EEFViewFactory().createEEFView(eefViewDescription, variableManager, interpreterProviders, session.getTransactionalEditingDomain(), semanticElement);
- List<ITabDescriptor> descriptors = new ArrayList<ITabDescriptor>();
+ private EEFView createEEFView(Session session, EObject semanticElement, EEFViewDescription viewDescription) {
+ IVariableManager variableManager = new EEFVariableManagerFactory().createVariableManager();
+ variableManager.put(EEFExpressionUtils.SELF, semanticElement);
+ List<IInterpreterProvider> interpreterProviders = Lists.<IInterpreterProvider> newArrayList(new SiriusInterpreterProvider(session));
+ EEFView eefView = new EEFViewFactory().createEEFView(viewDescription, variableManager, interpreterProviders, session.getTransactionalEditingDomain(), semanticElement);
+ return eefView;
+ }
- List<EEFPage> eefPages = eefView.getPages();
- for (EEFPage eefPage : eefPages) {
- EEFTabDescriptor eefTabDescriptor = new EEFTabDescriptor(eefPage);
- descriptors.add(eefTabDescriptor);
+ private List<ViewExtensionDescription> findActiveDescriptions(Session session, EObject semanticElement) {
+ List<ViewExtensionDescription> descriptions = new ArrayList<ViewExtensionDescription>();
+ if (session != null) {
+ Set<Resource> activeVSMs = Sets.newLinkedHashSet();
+ for (Viewpoint viewpoint : session.getSelectedViewpoints(true)) {
+ Resource vsm = viewpoint.eResource();
+ if (vsm != null) {
+ activeVSMs.add(vsm);
}
-
- return descriptors.toArray(new ITabDescriptor[descriptors.size()]);
}
+ for (Resource vsm : activeVSMs) {
+ Group group = (Group) vsm.getContents().get(0);
+ return Lists.newArrayList(Iterables.filter(group.getExtensions(), ViewExtensionDescription.class));
+ }
}
-
- return new ITabDescriptor[0];
+ return descriptions;
}
}

Back to the top