[yocto] [PATCH v2 5/7] Move TerminalHandler to org.yocto.remote.utils
Ioana Grigoropol
ioanax.grigoropol at intel.com
Thu May 9 00:47:06 PDT 2013
- move TerminalHandler to separate plugin since it performs actions that are best suited for remote utilities
- remove TerminalHandler from remotetools plugin
- modify org.yocto.sdk.remotetools to use implementation from org.yocto.remote.utils
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../org.yocto.remote.utils/META-INF/MANIFEST.MF | 9 +-
.../org/yocto/remote/utils/TerminalHandler.java | 128 ++++++++++++++++++++
.../sdk/remotetools/actions/DialogHandler.java | 1 +
.../sdk/remotetools/actions/TerminalHandler.java | 128 --------------------
4 files changed, 137 insertions(+), 129 deletions(-)
create mode 100644 plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/TerminalHandler.java
delete mode 100644 plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java
diff --git a/plugins/org.yocto.remote.utils/META-INF/MANIFEST.MF b/plugins/org.yocto.remote.utils/META-INF/MANIFEST.MF
index 9616484..e7afbd0 100644
--- a/plugins/org.yocto.remote.utils/META-INF/MANIFEST.MF
+++ b/plugins/org.yocto.remote.utils/META-INF/MANIFEST.MF
@@ -11,10 +11,17 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: org.eclipse.rse.core,
org.eclipse.rse.core.model,
org.eclipse.rse.core.subsystems,
+ org.eclipse.rse.internal.terminals.ui,
+ org.eclipse.rse.internal.terminals.ui.views,
org.eclipse.rse.services,
org.eclipse.rse.services.files,
org.eclipse.rse.services.shells,
+ org.eclipse.rse.services.terminals,
org.eclipse.rse.subsystems.files.core.servicesubsystem,
org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem,
- org.eclipse.rse.subsystems.terminals.core
+ org.eclipse.rse.subsystems.terminals.core,
+ org.eclipse.rse.subsystems.terminals.core.elements,
+ org.eclipse.rse.ui,
+ org.eclipse.tm.internal.terminal.control,
+ org.eclipse.tm.internal.terminal.provisional.api
Export-Package: org.yocto.remote.utils
diff --git a/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/TerminalHandler.java b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/TerminalHandler.java
new file mode 100644
index 0000000..e28ae79
--- /dev/null
+++ b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/TerminalHandler.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * 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.remote.utils;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.rse.core.model.IHost;
+import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
+import org.eclipse.rse.internal.terminals.ui.views.RSETerminalConnector;
+import org.eclipse.rse.internal.terminals.ui.views.TerminalViewTab;
+import org.eclipse.rse.internal.terminals.ui.views.TerminalViewer;
+import org.eclipse.rse.internal.terminals.ui.views.TerminalsUI;
+import org.eclipse.rse.services.terminals.ITerminalShell;
+import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
+import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
+import org.eclipse.rse.ui.SystemBasePlugin;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.DisposeEvent;
+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;
+
+abstract public class TerminalHandler extends AbstractHandler {
+
+
+ protected Shell shell;
+
+ protected String changeTerm = "export TERM=vt100;";
+
+ abstract protected String getInitCmd();
+ abstract protected String getConnnectionName();
+ abstract protected String getDialogTitle();
+
+ protected ITerminalShell getTerminalShellFromTab(CTabItem item) {
+ ITerminalShell terminalShell = null;
+ ITerminalViewControl terminalViewControl = (ITerminalViewControl) item
+ .getData(TerminalViewTab.DATA_KEY_CONTROL);
+ ITerminalConnector terminalConnector = terminalViewControl
+ .getTerminalConnector();
+ if (terminalConnector instanceof RSETerminalConnector) {
+ RSETerminalConnector rseTerminalConnector = (RSETerminalConnector) terminalConnector;
+ terminalShell = rseTerminalConnector.getTerminalHostShell();
+ }
+ return terminalShell;
+ }
+
+ protected boolean preProcess(final ITerminalServiceSubSystem terminalSubSystem) {
+ if (!terminalSubSystem.isConnected()) {
+ try {
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
+ dialog.run(true, true, new IRunnableWithProgress(){
+ @Override
+ 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 false;
+ } catch (Exception e) {
+ SystemBasePlugin.logError(e.getLocalizedMessage(), e);
+ return false;
+ }
+ } else
+ return true;
+ return false;
+ }
+
+ public void execute(IHost host) throws ExecutionException {
+
+ final ITerminalServiceSubSystem terminalSubSystem = RSEHelper.getTerminalSubSystem(host);
+
+ 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() {
+ @Override
+ 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);
+
+ }
+ }
+ }
+
+}
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
index d5c3583..ca6d13b 100644
--- 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
@@ -15,6 +15,7 @@ import org.eclipse.core.commands.ExecutionException;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
+import org.yocto.remote.utils.TerminalHandler;
abstract public class DialogHandler extends TerminalHandler {
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
deleted file mode 100644
index ae04dc9..0000000
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/TerminalHandler.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * 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.AbstractHandler;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.rse.core.model.IHost;
-import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
-import org.eclipse.rse.internal.terminals.ui.views.RSETerminalConnector;
-import org.eclipse.rse.internal.terminals.ui.views.TerminalViewTab;
-import org.eclipse.rse.internal.terminals.ui.views.TerminalViewer;
-import org.eclipse.rse.internal.terminals.ui.views.TerminalsUI;
-import org.eclipse.rse.services.terminals.ITerminalShell;
-import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
-import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
-import org.eclipse.rse.ui.SystemBasePlugin;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.DisposeEvent;
-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.yocto.remote.utils.CommonHelper;
-import org.yocto.remote.utils.RSEHelper;
-
-abstract public class TerminalHandler extends AbstractHandler {
-
-
- protected Shell shell;
-
- protected String changeTerm="export TERM=vt100;";
-
- abstract protected String getInitCmd();
- abstract protected String getConnnectionName();
- abstract protected String getDialogTitle();
-
- protected ITerminalShell getTerminalShellFromTab(CTabItem item) {
- ITerminalShell terminalShell = null;
- ITerminalViewControl terminalViewControl = (ITerminalViewControl) item
- .getData(TerminalViewTab.DATA_KEY_CONTROL);
- ITerminalConnector terminalConnector = terminalViewControl
- .getTerminalConnector();
- if (terminalConnector instanceof RSETerminalConnector) {
- RSETerminalConnector rseTerminalConnector = (RSETerminalConnector) terminalConnector;
- terminalShell = rseTerminalConnector.getTerminalHostShell();
- }
- return terminalShell;
- }
-
- protected boolean preProcess(final ITerminalServiceSubSystem 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 false;
- } catch (Exception e) {
- SystemBasePlugin.logError(e.getLocalizedMessage(), e);
- return false;
- }
- } else
- return true;
- return false;
- }
-
- public void execute(IHost host) throws ExecutionException {
-
- final ITerminalServiceSubSystem terminalSubSystem = RSEHelper.getTerminalSubSystem(host);
-
- 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);
-
- }
- }
- }
-
-}
--
1.7.9.5
More information about the yocto
mailing list