From bb04c6604aeea05d64528cf9c03c484fee4b79da Mon Sep 17 00:00:00 2001 From: Valeriy Svydenko Date: Tue, 30 Aug 2016 11:09:59 +0300 Subject: [PATCH] CODENVY-106: remove widgets from Process panel when the machine was destroyed Signed-off-by: Valeriy Svydenko --- .../panel/ProcessesPanelPresenter.java | 33 ++++++++++++++----- .../panel/ProcessesPanelViewImpl.java | 12 ++++++- .../panel/ProcessesPanelPresenterTest.java | 9 +++-- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelPresenter.java b/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelPresenter.java index 96ef232a4c..2d5bd6662b 100644 --- a/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelPresenter.java +++ b/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelPresenter.java @@ -59,6 +59,7 @@ import org.eclipse.che.ide.util.loging.Log; import org.vectomatic.dom.svg.ui.SVGResource; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -210,10 +211,20 @@ public class ProcessesPanelPresenter extends BasePresenter implements ProcessesP } rootNodes.remove(destroyedMachineNode); - onCloseTerminal(destroyedMachineNode); - onStopCommandProcess(destroyedMachineNode); - view.setProcessesData(rootNode); + + final Collection children = new ArrayList<>(); + children.addAll(destroyedMachineNode.getChildren()); + for (ProcessTreeNode child : children) { + if (TERMINAL_NODE.equals(child.getType()) && terminals.containsKey(child.getId())) { + onCloseTerminal(child); + } else if (COMMAND_NODE.equals(child.getType()) && consoles.containsKey(child.getId())) { + onStopCommandProcess(child); + view.hideProcessOutput(child.getId()); + } + } + + view.hideProcessOutput(destroyedMachineNode.getId()); } @Override @@ -394,10 +405,9 @@ public class ProcessesPanelPresenter extends BasePresenter implements ProcessesP outputConsole.getTitleIcon(), null); commandId = commandNode.getId(); - view.addProcessNode(commandNode); addChildToMachineNode(commandNode, machineTreeNode); - addOutputConsole(commandId, outputConsole, false); + addOutputConsole(commandId, commandNode, outputConsole, false); refreshStopButtonState(commandId); workspaceAgent.setActivePart(this); @@ -417,15 +427,21 @@ public class ProcessesPanelPresenter extends BasePresenter implements ProcessesP return consoles.containsKey(commandId) && consoles.get(commandId).isFinished(); } - private void addOutputConsole(final String id, final OutputConsole outputConsole, final boolean machineConsole) { + private void addOutputConsole(final String id, + final ProcessTreeNode processNode, + final OutputConsole outputConsole, + final boolean machineConsole) { consoles.put(id, outputConsole); consoleCommands.put(outputConsole, id); outputConsole.go(new AcceptsOneWidget() { @Override public void setWidget(final IsWidget widget) { + view.addProcessNode(processNode); view.addWidget(id, outputConsole.getTitle(), outputConsole.getTitleIcon(), widget, machineConsole); - view.selectNode(view.getNodeById(id)); + if (!MACHINE_NODE.equals(processNode.getType())) { + view.selectNode(view.getNodeById(id)); + } } }); @@ -593,7 +609,8 @@ public class ProcessesPanelPresenter extends BasePresenter implements ProcessesP rootNodes.add(machineNode); OutputConsole outputConsole = commandConsoleFactory.create(machine.getConfig().getName()); - addOutputConsole(machine.getId(), outputConsole, true); + + addOutputConsole(machine.getId(), machineNode, outputConsole, true); view.setProcessesData(rootNode); diff --git a/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelViewImpl.java b/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelViewImpl.java index 6f19a6c8bf..16df08b187 100644 --- a/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelViewImpl.java +++ b/plugins/plugin-machine/che-plugin-machine-ext-client/src/main/java/org/eclipse/che/ide/extension/machine/client/processes/panel/ProcessesPanelViewImpl.java @@ -53,6 +53,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static org.eclipse.che.ide.extension.machine.client.processes.ProcessTreeNode.ProcessNodeType.MACHINE_NODE; + /** * Implementation of {@link ProcessesPanelView}. * @@ -282,6 +284,10 @@ public class ProcessesPanelViewImpl extends BaseView