diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java index 7a90b68b5da..b72f34dafa5 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java @@ -1340,7 +1340,7 @@ private void showActionDialog( } } - private void splitHop(PipelineHopMeta hi) { + private void splitHop(PipelineHopMeta hop) { int id = 0; if (!hopGui.getProps().getAutoSplit()) { MessageDialogWithToggle md = @@ -1349,7 +1349,7 @@ private void splitHop(PipelineHopMeta hi) { BaseMessages.getString(PKG, "PipelineGraph.Dialog.SplitHop.Title"), BaseMessages.getString(PKG, "PipelineGraph.Dialog.SplitHop.Message") + Const.CR - + hi.toString(), + + hop.toString(), SWT.ICON_QUESTION, new String[] { BaseMessages.getString(PKG, "System.Button.Yes"), @@ -1362,24 +1362,11 @@ private void splitHop(PipelineHopMeta hi) { } if ((id & 0xFF) == 0) { // Means: "Yes" button clicked! - - // Only split A-->--B by putting C in between IF... - // C-->--A or B-->--C don't exists... - // A ==> hi.getFromTransform() - // B ==> hi.getToTransform() - // C ==> selectedTransform - // - boolean caExists = - pipelineMeta.findPipelineHop(selectedTransform, hi.getFromTransform()) != null; - boolean bcExists = - pipelineMeta.findPipelineHop(hi.getToTransform(), selectedTransform) != null; - if (!caExists && !bcExists) { - pipelineTransformDelegate.insertTransform(pipelineMeta, hi, currentTransform); - redraw(); - } - - // else: Silently discard this hop-split attempt. + pipelineTransformDelegate.insertTransform(pipelineMeta, hop, currentTransform); + redraw(); } + // Discard this hop-split attempt. + splitHop = false; } @Override @@ -1502,9 +1489,14 @@ public void mouseMove(MouseEvent event) { findPipelineHop(icon.x + iconSize / 2, icon.y + iconSize / 2, selectedTransform); if (hi != null) { // OK, we want to split the hop in 2 + + // Check if we can split A-->--B and insert the selected transform C if + // C-->--A or C-->--B or A-->--C or B-->--C don't exists... // - if (!hi.getFromTransform().equals(selectedTransform) - && !hi.getToTransform().equals(selectedTransform)) { + if (pipelineMeta.findPipelineHop(selectedTransform, hi.getFromTransform()) == null + && pipelineMeta.findPipelineHop(selectedTransform, hi.getToTransform()) == null + && pipelineMeta.findPipelineHop(hi.getToTransform(), selectedTransform) == null + && pipelineMeta.findPipelineHop(hi.getFromTransform(), selectedTransform) == null) { splitHop = true; lastHopSplit = hi; hi.split = true; diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java index e665fbe9ade..8cd98ba5c21 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java @@ -837,11 +837,11 @@ public void mouseUp(MouseEvent event) { } } - // OK, we moved the transform, did we move it across a hop? + // OK, we moved the action, did we move it across a hop? // If so, ask to split the hop! if (splitHop) { - WorkflowHopMeta hi = findHop(icon.x + iconSize / 2, icon.y + iconSize / 2, selectedAction); - if (hi != null) { + WorkflowHopMeta hop = findHop(icon.x + iconSize / 2, icon.y + iconSize / 2, selectedAction); + if (hop != null) { int id = 0; if (!hopGui.getProps().getAutoSplit()) { MessageDialogWithToggle md = @@ -850,7 +850,7 @@ public void mouseUp(MouseEvent event) { BaseMessages.getString(PKG, "HopGuiWorkflowGraph.Dialog.SplitHop.Title"), BaseMessages.getString(PKG, "HopGuiWorkflowGraph.Dialog.SplitHop.Message") + Const.CR - + hi.toString(), + + hop.toString(), SWT.ICON_QUESTION, new String[] { BaseMessages.getString(PKG, "System.Button.Yes"), @@ -863,23 +863,11 @@ public void mouseUp(MouseEvent event) { hopGui.getProps().setAutoSplit(md.getToggleState()); } - if ((id & 0xFF) == 0) { - // Means: "Yes" button clicked! - - // Only split A-->--B by putting C in between IF... - // C-->--A or B-->--C don't exists... - // A ==> hi.getFromAction() - // B ==> hi.getToAction() - // C ==> selectedTransform - // - if (workflowMeta.findWorkflowHop(selectedAction, hi.getFromAction()) == null - && workflowMeta.findWorkflowHop(hi.getToAction(), selectedAction) == null) { - - workflowActionDelegate.insetAction(workflowMeta, hi, selectedAction); - } - // else: Silently discard this hop-split attempt. + if ((id & 0xFF) == 0) { // Means: "Yes" button clicked! + workflowActionDelegate.insetAction(workflowMeta, hop, selectedAction); } } + // Discard this hop-split attempt. splitHop = false; } @@ -1190,9 +1178,14 @@ public void mouseMove(MouseEvent event) { WorkflowHopMeta hi = findHop(icon.x + iconSize / 2, icon.y + iconSize / 2, selectedAction); if (hi != null) { // OK, we want to split the hop in 2 + + // Check if we can split A-->--B and insert the selected transform C if + // C-->--A or C-->--B or A-->--C or B-->--C don't exists... // - if (!hi.getFromAction().equals(selectedAction) - && !hi.getToAction().equals(selectedAction)) { + if (workflowMeta.findWorkflowHop(selectedAction, hi.getFromAction()) == null + && workflowMeta.findWorkflowHop(selectedAction, hi.getToAction()) == null + && workflowMeta.findWorkflowHop(hi.getToAction(), selectedAction) == null + && workflowMeta.findWorkflowHop(hi.getFromAction(), selectedAction) == null) { splitHop = true; lastHopSplit = hi; hi.split = true;