Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Guilet2018-05-09 13:04:18 +0000
committerPierre Guilet2018-05-15 08:51:11 +0000
commitb00bb1589bae98f71f4325c87a620bf47b917f52 (patch)
treee1a8fbd13b2071e97ba7e94f620a795028510ba3
parent42f27392a7aa09301b7b7e5f8f437b19e78df1e4 (diff)
downloadorg.eclipse.sirius-b00bb1589bae98f71f4325c87a620bf47b917f52.tar.gz
org.eclipse.sirius-b00bb1589bae98f71f4325c87a620bf47b917f52.tar.xz
org.eclipse.sirius-b00bb1589bae98f71f4325c87a620bf47b917f52.zip
[509070] Fix various NPE when ELK plugin is not installed
When org.eclipse.sirius.diagram.elk is not installed with Sirius, it does not cause anymore NPE when manipulating the odesign and a diagram representation with an ELK layout. The fix also applies for any new layout added in the Sirius environment. Bug: 509070 Change-Id: Ibecc3291e9efc915901623753bc97ab998a545cc Signed-off-by: Pierre Guilet <pierre.guilet@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/CustomLayoutConfigurationItemProviderSpec.java14
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumLayoutOptionItemProviderSpec.java12
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumSetLayoutOptionItemProviderSpec.java12
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/internal/layout/GenericLayoutProvider.java6
4 files changed, 27 insertions, 17 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/CustomLayoutConfigurationItemProviderSpec.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/CustomLayoutConfigurationItemProviderSpec.java
index 1fb5302a44..2fb5019af1 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/CustomLayoutConfigurationItemProviderSpec.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/CustomLayoutConfigurationItemProviderSpec.java
@@ -53,13 +53,15 @@ public class CustomLayoutConfigurationItemProviderSpec extends CustomLayoutConfi
CustomLayoutConfiguration layout = (CustomLayoutConfiguration) object;
CustomLayoutAlgorithm genericLayoutProviderSupplier = layoutProviderRegistry.get(layout.getId());
- Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
- for (LayoutOption layoutOption : layoutOptions.values()) {
- LayoutOption copy = EcoreUtil.copy(layoutOption);
- if (copy instanceof EnumOption) {
- ((EnumOption) copy).getChoices().clear();
+ if (genericLayoutProviderSupplier != null) {
+ Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
+ for (LayoutOption layoutOption : layoutOptions.values()) {
+ LayoutOption copy = EcoreUtil.copy(layoutOption);
+ if (copy instanceof EnumOption) {
+ ((EnumOption) copy).getChoices().clear();
+ }
+ newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.CUSTOM_LAYOUT_CONFIGURATION__LAYOUT_OPTIONS, copy));
}
- newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.CUSTOM_LAYOUT_CONFIGURATION__LAYOUT_OPTIONS, copy));
}
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumLayoutOptionItemProviderSpec.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumLayoutOptionItemProviderSpec.java
index b4ee5b0333..626197c136 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumLayoutOptionItemProviderSpec.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumLayoutOptionItemProviderSpec.java
@@ -55,11 +55,13 @@ public class EnumLayoutOptionItemProviderSpec extends EnumLayoutOptionItemProvid
EnumLayoutOption layoutOption = (EnumLayoutOption) object;
CustomLayoutConfiguration layout = (CustomLayoutConfiguration) layoutOption.eContainer();
CustomLayoutAlgorithm genericLayoutProviderSupplier = layoutProviderRegistry.get(layout.getId());
- Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
- EnumLayoutOption layoutOptionTemplate = (EnumLayoutOption) layoutOptions.get(layoutOption.getId());
- EList<EnumLayoutValue> choices = layoutOptionTemplate.getChoices();
- for (EnumLayoutValue enumLayoutValue : choices) {
- newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.ENUM_LAYOUT_OPTION__VALUE, EcoreUtil.copy(enumLayoutValue)));
+ if (genericLayoutProviderSupplier != null) {
+ Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
+ EnumLayoutOption layoutOptionTemplate = (EnumLayoutOption) layoutOptions.get(layoutOption.getId());
+ EList<EnumLayoutValue> choices = layoutOptionTemplate.getChoices();
+ for (EnumLayoutValue enumLayoutValue : choices) {
+ newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.ENUM_LAYOUT_OPTION__VALUE, EcoreUtil.copy(enumLayoutValue)));
+ }
}
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumSetLayoutOptionItemProviderSpec.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumSetLayoutOptionItemProviderSpec.java
index 4b34a289c7..54c6141e2a 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumSetLayoutOptionItemProviderSpec.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/internal/description/provider/EnumSetLayoutOptionItemProviderSpec.java
@@ -56,11 +56,13 @@ public class EnumSetLayoutOptionItemProviderSpec extends EnumSetLayoutOptionItem
EnumSetLayoutOption layoutOption = (EnumSetLayoutOption) object;
CustomLayoutConfiguration layout = (CustomLayoutConfiguration) layoutOption.eContainer();
CustomLayoutAlgorithm genericLayoutProviderSupplier = layoutProviderRegistry.get(layout.getId());
- Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
- EnumSetLayoutOption layoutOptionTemplate = (EnumSetLayoutOption) layoutOptions.get(layoutOption.getId());
- EList<EnumLayoutValue> choices = layoutOptionTemplate.getChoices();
- for (EnumLayoutValue enumLayoutValue : choices) {
- newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.ENUM_SET_LAYOUT_OPTION__VALUES, EcoreUtil.copy(enumLayoutValue)));
+ if (genericLayoutProviderSupplier != null) {
+ Map<String, LayoutOption> layoutOptions = genericLayoutProviderSupplier.getLayoutOptions();
+ EnumSetLayoutOption layoutOptionTemplate = (EnumSetLayoutOption) layoutOptions.get(layoutOption.getId());
+ EList<EnumLayoutValue> choices = layoutOptionTemplate.getChoices();
+ for (EnumLayoutValue enumLayoutValue : choices) {
+ newChildDescriptors.add(createChildParameter(org.eclipse.sirius.diagram.description.DescriptionPackage.Literals.ENUM_SET_LAYOUT_OPTION__VALUES, EcoreUtil.copy(enumLayoutValue)));
+ }
}
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/internal/layout/GenericLayoutProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/internal/layout/GenericLayoutProvider.java
index fd2b5293e5..94e8bdbbba 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/internal/layout/GenericLayoutProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/internal/layout/GenericLayoutProvider.java
@@ -19,6 +19,7 @@ import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.description.CustomLayoutConfiguration;
import org.eclipse.sirius.diagram.description.DiagramDescription;
import org.eclipse.sirius.diagram.description.Layout;
+import org.eclipse.sirius.diagram.ui.api.layout.CustomLayoutAlgorithm;
import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin;
import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.DefaultLayoutProvider;
import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.LayoutProvider;
@@ -86,7 +87,10 @@ public class GenericLayoutProvider implements LayoutProvider {
private DefaultLayoutProvider getGenericLayoutProvider(final IGraphicalEditPart container) {
CustomLayoutConfiguration customLayoutConfiguration = getCustomLayoutConfiguration(container);
if (customLayoutConfiguration != null) {
- return DiagramUIPlugin.getPlugin().getLayoutAlgorithms().get(customLayoutConfiguration.getId()).getLayoutAlgorithmInstance();
+ CustomLayoutAlgorithm customLayoutAlgorithm = DiagramUIPlugin.getPlugin().getLayoutAlgorithms().get(customLayoutConfiguration.getId());
+ if (customLayoutAlgorithm != null) {
+ return customLayoutAlgorithm.getLayoutAlgorithmInstance();
+ }
}
return null;
}

Back to the top