[yocto] [PATCH 01/12] Separate remote logic from GUI login in TerminalHandler implementation
Ioana Grigoropol
ioanax.grigoropol at intel.com
Thu May 9 00:53:20 PDT 2013
- TerminalHandler is used by both Perf and Latencytop handlers for running remote commands and for holding the settings dialog
- in order to separate the common functionality for running remote commands we need to separate the GUI from the utilitary funtions
- create DialogHandler that extends TerminalHandler to hold the GUI settings
- clean-up code in TerminalHandler:
- remove references to settings dialog
- modify execute method and keep only remote control code
- change Perf and Latencytop's parent to DialogHandler
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../sdk/remotetools/actions/DialogHandler.java | 41 +++++++++
.../sdk/remotetools/actions/LatencytopHandler.java | 2 +-
.../yocto/sdk/remotetools/actions/PerfHandler.java | 2 +-
.../sdk/remotetools/actions/TerminalHandler.java | 93 ++++++--------------
4 files changed, 70 insertions(+), 68 deletions(-)
create mode 100644 plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/DialogHandler.java
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/DialogHandler.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/DialogHandler.java
new file mode 100644
index 0000000..d5c3583
--- /dev/null
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/DialogHandler.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Intel Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel - initial API and implementation
+ *******************************************************************************/
+package org.yocto.sdk.remotetools.actions;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.rse.core.model.IHost;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+abstract public class DialogHandler extends TerminalHandler {
+
+ protected BaseSettingDialog setting;
+
+ abstract protected String getDialogTitle();
+
+ protected void initialize(ExecutionEvent event) throws ExecutionException{
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+ shell = window.getShell();
+ setting = new SimpleSettingDialog(shell, getDialogTitle(), getConnnectionName());
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ initialize(event);
+
+ if(setting.open() == BaseSettingDialog.OK) {
+ IHost currentHost = setting.getHost();
+ execute(currentHost);
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/LatencytopHandler.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/LatencytopHandler.java
index ef77957..e931388 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/LatencytopHandler.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/LatencytopHandler.java
@@ -11,7 +11,7 @@
package org.yocto.sdk.remotetools.actions;
-public class LatencytopHandler extends TerminalHandler {
+public class LatencytopHandler extends DialogHandler {
private static String initCmd="export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin; cd; sudo latencytop\r";
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PerfHandler.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PerfHandler.java
index 949bd46..f3f9e49 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PerfHandler.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PerfHandler.java
@@ -11,7 +11,7 @@
package org.yocto.sdk.remotetools.actions;
-public class PerfHandler extends TerminalHandler {
+public class PerfHandler extends DialogHandler {
private static String initCmd="cd; perf\r";
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java
index 84e38f2..9e7c169 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java
@@ -11,7 +11,6 @@
package org.yocto.sdk.remotetools.actions;
import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -34,14 +33,11 @@ import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
import org.yocto.sdk.remotetools.CommonHelper;
import org.yocto.sdk.remotetools.RSEHelper;
abstract public class TerminalHandler extends AbstractHandler {
- protected BaseSettingDialog setting;
protected Shell shell;
@@ -50,11 +46,6 @@ abstract public class TerminalHandler extends AbstractHandler {
abstract protected String getInitCmd();
abstract protected String getConnnectionName();
abstract protected String getDialogTitle();
- protected void initialize(ExecutionEvent event) throws ExecutionException{
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
- shell = window.getShell();
- setting = new SimpleSettingDialog(shell, getDialogTitle(), getConnnectionName());
- }
protected ITerminalShell getTerminalShellFromTab(CTabItem item) {
ITerminalShell terminalShell = null;
@@ -98,70 +89,40 @@ abstract public class TerminalHandler extends AbstractHandler {
return false;
}
- public Object execute(ExecutionEvent event) throws ExecutionException {
+ public void execute(IHost host) throws ExecutionException {
- initialize(event);
+ final ITerminalServiceSubSystem terminalSubSystem = RSEHelper.getTerminalSubSystem(host);
- if(setting.open()==BaseSettingDialog.OK) {
- IHost currentHost = setting.getHost();
- final ITerminalServiceSubSystem terminalSubSystem = RSEHelper.getTerminalSubSystem(currentHost);
-
- if (terminalSubSystem != null) {
- TerminalsUI terminalsUI = TerminalsUI.getInstance();
- TerminalViewer viewer = terminalsUI.activateTerminalsView();
- if (preProcess(terminalSubSystem)) {
- /*if (!terminalSubSystem.isConnected()) {
- try {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
- dialog.run(true, true, new IRunnableWithProgress(){
- public void run(IProgressMonitor monitor) {
- monitor.beginTask("Connecting to remote target ...", 100);
- try {
- terminalSubSystem.connect(new NullProgressMonitor(), false);
- monitor.done();
- } catch (Exception e) {
- CommonHelper.showErrorDialog("Connection failure", null, e.getMessage());
- monitor.done();
- }
- }
- });
- } catch (OperationCanceledException e) {
- // user canceled, return silently
- return null;
- } catch (Exception e) {
- SystemBasePlugin.logError(e.getLocalizedMessage(), e);
- }
- }
- if (terminalSubSystem.isConnected()) {*/
- CTabItem tab = viewer.getTabFolder().createTabItem(
- terminalSubSystem.getHost(), changeTerm + getInitCmd());
- //since RSETerminalConnector not exit the shell during the diconnection,
- //we have manually exit it here
- try {
- tab.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
-
- Object source = e.getSource();
- if (source instanceof CTabItem) {
- CTabItem currentItem = (CTabItem) source;
- ITerminalShell shell=getTerminalShellFromTab(currentItem);
- if(shell!=null) {
- shell.exit();
- }
+ if (terminalSubSystem != null) {
+ TerminalsUI terminalsUI = TerminalsUI.getInstance();
+ TerminalViewer viewer = terminalsUI.activateTerminalsView();
+ if (preProcess(terminalSubSystem)) {
+ CTabItem tab = viewer.getTabFolder().createTabItem(
+ terminalSubSystem.getHost(), changeTerm + getInitCmd());
+ //since RSETerminalConnector not exit the shell during the diconnection,
+ //we have manually exit it here
+ try {
+ tab.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ Object source = e.getSource();
+ if (source instanceof CTabItem) {
+ CTabItem currentItem = (CTabItem) source;
+ ITerminalShell shell=getTerminalShellFromTab(currentItem);
+ if(shell!=null) {
+ shell.exit();
}
}
- });
- }catch(Exception e) {
- e.printStackTrace();
- }
- TerminalElement element = TerminalServiceHelper
- .createTerminalElement(tab, terminalSubSystem);
- terminalSubSystem.addChild(element);
-
+ }
+ });
+ }catch(Exception e) {
+ e.printStackTrace();
}
+ TerminalElement element = TerminalServiceHelper
+ .createTerminalElement(tab, terminalSubSystem);
+ terminalSubSystem.addChild(element);
+
}
}
- return null;
}
}
--
1.7.9.5
More information about the yocto
mailing list