diff options
| author | Florian Barbin | 2016-01-21 16:43:22 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2016-03-30 13:23:45 +0000 |
| commit | 46b775ab2d76602fa893a69c48fda8b552949789 (patch) | |
| tree | 3dd65ac272ce3e376c37d3a9593e3d2586efd79e | |
| parent | b38268bcbf4c1ddb41a168255d7593f1c88455ca (diff) | |
| download | org.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.tar.gz org.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.tar.xz org.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.zip | |
[490565] Fixes NPE if the createLineAction context is not a line
Bug: 490565
Change-Id: Ief52e5445621abd27df14783fc4ea69d4553b627
Cherry-picks: ceae267a9fc56c3b80212f2b04bc411710c93b35
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
| -rw-r--r-- | plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java index 150edc2882..6c4bcdeb51 100644 --- a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java +++ b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java @@ -57,14 +57,12 @@ public class CreateLineAction extends AbstractLineAction { @Override public void run() { super.run(); - EObject target; + EObject target = getTarget(); LineContainer lineContainer; DLine dLine = getLine(); if (dLine != null) { - target = dLine.getTarget(); lineContainer = (LineContainer) dLine.eContainer(); } else { - target = table.getTarget(); lineContainer = table; } Command cmd = tableCommandFactory.buildCreateLineCommandFromTool(lineContainer, target, getCreateTool()); @@ -82,6 +80,15 @@ public class CreateLineAction extends AbstractLineAction { return tool; } + private EObject getTarget() { + DLine dLine = getLine(); + if (dLine != null) { + return dLine.getTarget(); + } else { + return getTable().getTarget(); + } + } + @Override public boolean canExecute() { boolean canExecute = true; @@ -90,20 +97,18 @@ public class CreateLineAction extends AbstractLineAction { canExecute = false; } else { if (getCreateTool().getPrecondition() != null && !StringUtil.isEmpty(getCreateTool().getPrecondition().trim())) { - IInterpreter interpreter; + EObject target = getTarget(); + IInterpreter interpreter = InterpreterUtil.getInterpreter(target); + interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, target); if (getLine() != null) { - interpreter = InterpreterUtil.getInterpreter(getLine().getTarget()); interpreter.setVariable(IInterpreterSiriusVariables.ROOT, TableHelper.getTable(getLine()).getTarget()); - interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, getLine().getTarget()); interpreter.setVariable(IInterpreterSiriusVariables.CONTAINER, ((LineContainer) getLine().eContainer()).getTarget()); } else { - interpreter = InterpreterUtil.getInterpreter(getTable().getTarget()); interpreter.setVariable(IInterpreterSiriusVariables.ROOT, getTable().getTarget()); - interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, getTable().getTarget()); interpreter.setVariable(IInterpreterSiriusVariables.CONTAINER, null); } try { - canExecute = interpreter.evaluateBoolean(getLine().getTarget(), getCreateTool().getPrecondition()); + canExecute = interpreter.evaluateBoolean(target, getCreateTool().getPrecondition()); } catch (final EvaluationException e) { RuntimeLoggerManager.INSTANCE.error(getCreateTool(), ToolPackage.eINSTANCE.getAbstractToolDescription_Precondition(), e); } |
