diff options
| author | Florian Barbin | 2016-01-21 16:43:22 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2016-01-22 09:25:30 +0000 |
| commit | ceae267a9fc56c3b80212f2b04bc411710c93b35 (patch) | |
| tree | b245d325a8200c9fe28f1e356ebe46fe9890010b | |
| parent | 8d0bd550af1e6e6e986415ef798d50a18afb28a2 (diff) | |
| download | org.eclipse.sirius-ceae267a9fc56c3b80212f2b04bc411710c93b35.tar.gz org.eclipse.sirius-ceae267a9fc56c3b80212f2b04bc411710c93b35.tar.xz org.eclipse.sirius-ceae267a9fc56c3b80212f2b04bc411710c93b35.zip | |
[485554] Fixes NPE if the createLineAction context is not a line
Bug: 485554
Change-Id: I9927f7545650c84e372239c0aa7263a8c59ba39f
Signed-off-by: Florian Barbin <florian.barbin@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); } |
