diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java index 5f2b564ed02..6be2ccd1eca 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java @@ -72,7 +72,7 @@ public class DStoreShellOutputReader extends AbstractHostShellOutputReader imple try { - waitForResponse(); + waitForResponse(); return internalReadLine(); } catch (Exception e) @@ -80,6 +80,18 @@ public class DStoreShellOutputReader extends AbstractHostShellOutputReader imple e.printStackTrace(); } } + if (_status.getValue().equals("done")) + { + if (!_isErrorReader) + { + DataElement dummyLine = _status.getDataStore().createObject(_status, "stdout", ""); + return dummyLine; + } + else + { + return null; + } + } return ""; } diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java index 7f6dd06be11..73444137c5c 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java @@ -90,7 +90,7 @@ public abstract class AbstractHostShellOutputReader extends Thread implements I } protected void addLine(Object line) - { + { _linesOfOutput.add(line); int sizenow = _linesOfOutput.size(); int deltaSize = sizenow - _sizeAtLastEvent; @@ -146,6 +146,8 @@ public abstract class AbstractHostShellOutputReader extends Thread implements I IHostShellOutputListener listener = (IHostShellOutputListener)_listeners.get(i); listener.shellOutputChanged(event); } + if (!_keepRunning) + dispose(); } public void dispose() @@ -165,7 +167,7 @@ public abstract class AbstractHostShellOutputReader extends Thread implements I _waitIncrement = 0; _keepRunning = false; - dispose(); + //dispose(); } } diff --git a/rse/plugins/org.eclipse.rse.shells.ui/src/org/eclipse/rse/shells/ui/view/SystemCommandsViewPart.java b/rse/plugins/org.eclipse.rse.shells.ui/src/org/eclipse/rse/shells/ui/view/SystemCommandsViewPart.java index aed679d4d45..c02b7fb1fe5 100644 --- a/rse/plugins/org.eclipse.rse.shells.ui/src/org/eclipse/rse/shells/ui/view/SystemCommandsViewPart.java +++ b/rse/plugins/org.eclipse.rse.shells.ui/src/org/eclipse/rse/shells/ui/view/SystemCommandsViewPart.java @@ -344,7 +344,7 @@ public class SystemCommandsViewPart public void updateActionStates() { - if (_shellActions == null) + if (_shellActions == null || (_shellActions.size() == 0 && _folder != null && _folder.getInput() != null)) fillLocalToolBar(); if (_folder != null && _folder.getInput() != null) @@ -417,7 +417,7 @@ public class SystemCommandsViewPart boolean firstCall = false; if (_folder != null ) { - firstCall = (_shellActions == null); + firstCall = (_shellActions == null || _shellActions.size() == 0); if (firstCall) { updateShellActions(); @@ -447,7 +447,7 @@ public class SystemCommandsViewPart { toolBarManager.add(_clearAction); } - if (_shellActions != null) + if (_shellActions != null && _shellActions.size() > 0) { for (int i =0; i < _shellActions.size(); i++) { @@ -463,7 +463,6 @@ public class SystemCommandsViewPart } } toolBarManager.update(true); - } private void addMenuItems(IMenuManager menuManager) @@ -548,9 +547,11 @@ public class SystemCommandsViewPart { if (menuManager instanceof CommandMenuManager) { + /* ISystemViewElementAdapter va = (ISystemViewElementAdapter) ((IAdaptable) connection).getAdapter( ISystemViewElementAdapter.class); + */ IMenuManager sublaunchMenu = new CommandSubmenuManager(connection, cmdSubSystems); sublaunchMenu.add(new SystemBaseDummyAction());