[yocto] [PATCH v3] Separate remote logic from GUI login in TerminalHandler implementation

Zhang, Jessica jessica.zhang at intel.com
Thu May 9 13:51:00 PDT 2013


Merged to eclipse-poky master.

Thanks,
Jessica

-----Original Message-----
From: yocto-bounces at yoctoproject.org [mailto:yocto-bounces at yoctoproject.org] On Behalf Of Ioana Grigoropol
Sent: Thursday, May 09, 2013 1:01 PM
To: yocto at yoctoproject.org
Subject: [yocto] [PATCH v3] Separate remote logic from GUI login in TerminalHandler implementation

- 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     |   40 +++++++++
 .../sdk/remotetools/actions/LatencytopHandler.java |    2 +-
 .../yocto/sdk/remotetools/actions/PerfHandler.java |    2 +-
 .../sdk/remotetools/actions/TerminalHandler.java   |   93 ++++++--------------
 4 files changed, 69 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..67d33ba
--- /dev/null
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ac
+++ tions/DialogHandler.java
@@ -0,0 +1,40 @@
+/**********************************************************************
+*********
+ * Copyright (c) 2013 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 void execute(ExecutionEvent event) throws ExecutionException {
+               initialize(event);
+
+               if(setting.open() == BaseSettingDialog.OK) {
+                       IHost currentHost = setting.getHost();
+                       execute(currentHost);
+               }
+       }
+}
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/ac
+++ tions/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/ac
+++ tions/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/ac
+++ tions/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

_______________________________________________
yocto mailing list
yocto at yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto



More information about the yocto mailing list