Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2016-05-20 14:57:01 +0000
committerPierre-Charles David2016-05-24 13:09:30 +0000
commit3110d15a103a894399e5e66bdc69110377946e70 (patch)
tree3e5a2efbbc26cdd867a0a48ea7975326fc77d549
parente9a2afbdc2e379096be447a224543ffa9ee7e7db (diff)
downloadorg.eclipse.sirius-3110d15a103a894399e5e66bdc69110377946e70.tar.gz
org.eclipse.sirius-3110d15a103a894399e5e66bdc69110377946e70.tar.xz
org.eclipse.sirius-3110d15a103a894399e5e66bdc69110377946e70.zip
[494175] Allow specifiers to opt-out of the new properties view
If a representation description in the VSM (or any of its ancestors) contains the special keyword FORCE_LEGACY_PROPERTIES in its documentation field, revert to the old properties view and do not try to use an EEFTabbedPropertySheetPage implementation. Bug: 494175 Change-Id: I5650cadcacc93b3646d5f74f5879a39eb09c4370 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--incubation/org.eclipse.sirius.ui.properties/META-INF/MANIFEST.MF1
-rw-r--r--incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/EEFPropertySheetPageProvider.java36
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/SiriusDiagramEditor.java2
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java2
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java2
5 files changed, 40 insertions, 3 deletions
diff --git a/incubation/org.eclipse.sirius.ui.properties/META-INF/MANIFEST.MF b/incubation/org.eclipse.sirius.ui.properties/META-INF/MANIFEST.MF
index f6daaf952b..84fa2c43a0 100644
--- a/incubation/org.eclipse.sirius.ui.properties/META-INF/MANIFEST.MF
+++ b/incubation/org.eclipse.sirius.ui.properties/META-INF/MANIFEST.MF
@@ -25,6 +25,7 @@ Require-Bundle: org.eclipse.eef;bundle-version="1.6.0",
org.eclipse.eef.ide.ui.properties;bundle-version="[1.6.0,2.0.0)",
org.eclipse.sirius.ext.emf.edit;bundle-version="4.0.0"
Import-Package: com.ibm.icu.util,
+ org.eclipse.sirius.ui.business.api.dialect;version="3.1.0",
org.eclipse.sirius.ui.tools.api.properties;version="2.1.0"
Bundle-Activator: org.eclipse.sirius.ui.properties.internal.SiriusUIPropertiesPlugin$Implementation
Bundle-ActivationPolicy: lazy
diff --git a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/EEFPropertySheetPageProvider.java b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/EEFPropertySheetPageProvider.java
index d0b894357b..8042535033 100644
--- a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/EEFPropertySheetPageProvider.java
+++ b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/EEFPropertySheetPageProvider.java
@@ -11,7 +11,13 @@
package org.eclipse.sirius.ui.properties.internal;
import org.eclipse.eef.properties.ui.api.EEFTabbedPropertySheetPage;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.sirius.ui.business.api.dialect.DialectEditor;
import org.eclipse.sirius.ui.tools.api.properties.ISiriusPropertySheetPageProvider;
+import org.eclipse.sirius.viewpoint.DRepresentation;
+import org.eclipse.sirius.viewpoint.description.DocumentedElement;
+import org.eclipse.sirius.viewpoint.description.RepresentationDescription;
import org.eclipse.ui.views.properties.IPropertySheetPage;
/**
@@ -20,8 +26,38 @@ import org.eclipse.ui.views.properties.IPropertySheetPage;
* @author pcdavid
*/
public class EEFPropertySheetPageProvider implements ISiriusPropertySheetPageProvider {
+ private static final String DESCRIPTION_REFERENCE_NAME = "description";
+
@Override
public IPropertySheetPage getPropertySheetPage(Object source, String contributorId) {
+ if (source instanceof DialectEditor) {
+ DialectEditor editor = (DialectEditor) source;
+ DRepresentation representation = editor.getRepresentation();
+ if (representation != null && representation.eClass().getEStructuralFeature(EEFPropertySheetPageProvider.DESCRIPTION_REFERENCE_NAME) != null) {
+ EStructuralFeature ref = representation.eClass().getEStructuralFeature(EEFPropertySheetPageProvider.DESCRIPTION_REFERENCE_NAME);
+ Object value = representation.eGet(ref);
+ if (value instanceof RepresentationDescription) {
+ RepresentationDescription description = (RepresentationDescription) value;
+ if (forcesLegacyPropertySheet(description)) {
+ return null;
+ }
+ }
+ }
+ }
return new EEFTabbedPropertySheetPage(source, contributorId);
}
+
+ private boolean forcesLegacyPropertySheet(RepresentationDescription description) {
+ EObject current = description;
+ while (current != null) {
+ if (current instanceof DocumentedElement) {
+ String doc = ((DocumentedElement) current).getDocumentation();
+ if (doc != null && doc.contains("FORCE_LEGACY_PROPERTIES")) {
+ return true;
+ }
+ }
+ current = current.eContainer();
+ }
+ return false;
+ }
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/SiriusDiagramEditor.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/SiriusDiagramEditor.java
index bbb23de0bc..1ee0269405 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/SiriusDiagramEditor.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/SiriusDiagramEditor.java
@@ -110,7 +110,7 @@ public class SiriusDiagramEditor extends DiagramDocumentEditor implements IGotoM
};
}
if (type == IPropertySheetPage.class) {
- IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(type, getContributorId());
+ IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(this, getContributorId());
if (contributedPage != null) {
return contributedPage;
}
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java
index 4f3398f032..74e30eb207 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java
@@ -537,7 +537,7 @@ public abstract class AbstractDTreeEditor extends EditorPart
Object result = super.getAdapter(type);
if (result == null) {
if (type == IPropertySheetPage.class) {
- IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(type, getContributorId());
+ IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(this, getContributorId());
if (contributedPage != null) {
currentPropertySheetpage = null;
result = contributedPage;
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
index 25c66cefee..44add54dbb 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
@@ -142,7 +142,7 @@ public class ModelExplorerView extends CommonNavigator implements IModelExplorer
public Object getAdapter(Class type) {
Object result = null;
if (type == IPropertySheetPage.class) {
- IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(type, getContributorId());
+ IPropertySheetPage contributedPage = SiriusEditPlugin.getPlugin().getPropertySheetPage(this, getContributorId());
if (contributedPage != null) {
result = contributedPage;
} else {

Back to the top