mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-04 07:35:24 +02:00
[226764] Contribute RSE Terminal Subsystem (MontaVista contribution)
This commit is contained in:
parent
2a01598b6f
commit
1ad1441f00
58 changed files with 3030 additions and 0 deletions
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1 @@
|
|||
bin
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.rse.subsystems.terminals.core</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,7 @@
|
|||
#Fri Apr 04 23:25:44 CEST 2008
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
|
||||
org.eclipse.jdt.core.compiler.compliance=1.4
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.3
|
|
@ -0,0 +1,23 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.rse.subsystems.terminals.core;singleton:=true
|
||||
Bundle-Version: 0.1.0.qualifier
|
||||
Bundle-Activator: org.eclipse.rse.internal.subsystems.terminals.core.Activator
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
org.eclipse.rse.services;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.ui;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.subsystems.shells.core;bundle-version="[3.0.0,4.0.0)"
|
||||
Eclipse-LazyStart: true
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-RequiredExecutionEnvironment: J2SE-1.4
|
||||
Export-Package: org.eclipse.rse.internal.subsystems.terminals.core;x-internal:=true,
|
||||
org.eclipse.rse.subsystems.terminals.core;
|
||||
uses:="org.eclipse.rse.services,
|
||||
org.eclipse.rse.core.subsystems,
|
||||
org.eclipse.rse.core.model,
|
||||
org.eclipse.rse.internal.services.terminals",
|
||||
org.eclipse.rse.subsystems.terminals.core.elements
|
||||
Bundle-ActivationPolicy: lazy
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>June 5, 2007</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,17 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2008 Wind River Systems, Inc. and others.
|
||||
# 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:
|
||||
#
|
||||
###############################################################################
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.properties,\
|
||||
about.html
|
||||
src.includes = about.html
|
|
@ -0,0 +1,16 @@
|
|||
################################################################################
|
||||
# Copyright (c) 2008 MontaVista Software, Inc.
|
||||
# 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:
|
||||
# Yu-Fen Kuo - initial API and implementation
|
||||
################################################################################
|
||||
|
||||
# NLS_MESSAGEFORMAT_NONE
|
||||
# NLS_ENCODING=UTF-8
|
||||
|
||||
pluginName = RSE Terminals Core (Incubation)
|
||||
providerName = Eclipse.org
|
|
@ -0,0 +1,87 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.subsystems.terminals.core;
|
||||
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.rse.ui.SystemBasePlugin;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends SystemBasePlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "org.eclipse.rse.subsystems.terminals.core";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
// make sure that org.eclipse.rse.terminals.ui plugin is loaded
|
||||
// Decouple from the current Thread
|
||||
new Thread("terminals.ui adapter loader") { //$NON-NLS-1$
|
||||
public void run() {
|
||||
|
||||
try {
|
||||
Bundle bundle = Platform
|
||||
.getBundle("org.eclipse.rse.terminals.ui");
|
||||
if (bundle != null) {
|
||||
bundle
|
||||
.loadClass("org.eclipse.rse.terminals.ui.TerminalServiceHelper");
|
||||
|
||||
}
|
||||
} catch (ClassNotFoundException e) {
|
||||
logError(e.getLocalizedMessage(), e);
|
||||
}
|
||||
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static Activator getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
protected void initializeImageRegistry() {
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.subsystems.terminals.core;
|
||||
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
|
||||
public interface ITerminalServiceSubSystem extends ISubSystem {
|
||||
public void addChild(TerminalElement element);
|
||||
|
||||
public void removeChild(TerminalElement element);
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.subsystems.terminals.core;
|
||||
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalService;
|
||||
|
||||
public interface ITerminalServiceSubSystemConfiguration extends
|
||||
ISubSystemConfiguration {
|
||||
public ITerminalService getTerminalService(IHost host);
|
||||
|
||||
public ITerminalService createTerminalService(IHost host);
|
||||
|
||||
}
|
|
@ -0,0 +1,136 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.subsystems.terminals.core;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.events.ISystemResourceChangeEvents;
|
||||
import org.eclipse.rse.core.events.SystemResourceChangeEvent;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.subsystems.CommunicationsEvent;
|
||||
import org.eclipse.rse.core.subsystems.ICommunicationsListener;
|
||||
import org.eclipse.rse.core.subsystems.IConnectorService;
|
||||
import org.eclipse.rse.core.subsystems.SubSystem;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalService;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
|
||||
public final class TerminalServiceSubSystem extends SubSystem implements
|
||||
ITerminalServiceSubSystem, ICommunicationsListener {
|
||||
|
||||
protected ITerminalService _hostService;
|
||||
|
||||
private ArrayList children;
|
||||
|
||||
public class Refresh implements Runnable {
|
||||
private TerminalServiceSubSystem _ss;
|
||||
|
||||
public Refresh(TerminalServiceSubSystem ss) {
|
||||
_ss = ss;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry();
|
||||
registry.fireEvent(new SystemResourceChangeEvent(_ss,
|
||||
ISystemResourceChangeEvents.EVENT_REFRESH, _ss));
|
||||
}
|
||||
}
|
||||
|
||||
protected TerminalServiceSubSystem(IHost host,
|
||||
IConnectorService connectorService) {
|
||||
super(host, connectorService);
|
||||
}
|
||||
|
||||
public TerminalServiceSubSystem(IHost host,
|
||||
IConnectorService connectorService, ITerminalService hostService) {
|
||||
super(host, connectorService);
|
||||
_hostService = hostService;
|
||||
}
|
||||
|
||||
public ITerminalService getTerminalService() {
|
||||
return _hostService;
|
||||
}
|
||||
|
||||
public Class getServiceType() {
|
||||
return ITerminalService.class;
|
||||
}
|
||||
|
||||
public void addChild(TerminalElement element) {
|
||||
if (children == null) {
|
||||
children = new ArrayList();
|
||||
// if this is first shell, start listening so that on disconnect, we
|
||||
// persist
|
||||
getConnectorService().addCommunicationsListener(this);
|
||||
}
|
||||
children.add(element);
|
||||
Display.getDefault().asyncExec(new Refresh(this));
|
||||
}
|
||||
|
||||
public void removeChild(TerminalElement element) {
|
||||
if (children != null) {
|
||||
children.remove(element);
|
||||
}
|
||||
if (children == null) {
|
||||
getConnectorService().removeCommunicationsListener(this);
|
||||
}
|
||||
Display.getDefault().asyncExec(new Refresh(this));
|
||||
}
|
||||
|
||||
public Object[] getChildren() {
|
||||
if (children != null)
|
||||
return children.toArray();
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasChildren() {
|
||||
if (children != null && children.size() > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setTerminalService(ITerminalService service) {
|
||||
_hostService = service;
|
||||
}
|
||||
|
||||
public void communicationsStateChange(CommunicationsEvent e) {
|
||||
switch (e.getState()) {
|
||||
case CommunicationsEvent.AFTER_DISCONNECT:
|
||||
// no longer listen
|
||||
getConnectorService().removeCommunicationsListener(this);
|
||||
// if (_cmdShells != null) _cmdShells.clear();
|
||||
// if (_envVars != null) _envVars.clear();
|
||||
// _defaultShell = null;
|
||||
|
||||
break;
|
||||
|
||||
case CommunicationsEvent.BEFORE_DISCONNECT:
|
||||
case CommunicationsEvent.CONNECTION_ERROR:
|
||||
// remove all shells
|
||||
// saveShellState(_cmdShells);
|
||||
// if (getShells().length > 0)
|
||||
// {
|
||||
// Display.getDefault().asyncExec(new CancelAllShells());
|
||||
// // cancelAllShells();
|
||||
// }
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isPassiveCommunicationsListener() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.subsystems.terminals.core;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.subsystems.SubSystemConfiguration;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalService;
|
||||
import org.eclipse.rse.services.IService;
|
||||
|
||||
|
||||
public abstract class TerminalServiceSubSystemConfiguration extends
|
||||
SubSystemConfiguration implements
|
||||
ITerminalServiceSubSystemConfiguration {
|
||||
|
||||
private Map _services;
|
||||
|
||||
protected TerminalServiceSubSystemConfiguration() {
|
||||
super();
|
||||
_services = new HashMap();
|
||||
}
|
||||
|
||||
public boolean supportsFilters() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public final ITerminalService getTerminalService(IHost host) {
|
||||
ITerminalService service = (ITerminalService) _services.get(host);
|
||||
if (service == null) {
|
||||
service = createTerminalService(host);
|
||||
_services.put(host, service);
|
||||
}
|
||||
return service;
|
||||
}
|
||||
|
||||
public final IService getService(IHost host) {
|
||||
return getTerminalService(host);
|
||||
}
|
||||
|
||||
public Class getServiceType() {
|
||||
return ITerminalService.class;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
* Anna Dushistova (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.subsystems.terminals.core.elements;
|
||||
|
||||
import org.eclipse.rse.core.subsystems.AbstractResource;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
|
||||
|
||||
public class TerminalElement extends AbstractResource {
|
||||
private String name;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public TerminalElement(String name,
|
||||
ITerminalServiceSubSystem terminalServiceSubSystem) {
|
||||
super(terminalServiceSubSystem);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof TerminalElement) {
|
||||
return name.equals(((TerminalElement) obj).getName());
|
||||
}
|
||||
return super.equals(obj);
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return name.hashCode();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1 @@
|
|||
bin
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.rse.subsystems.terminals.ssh</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,7 @@
|
|||
#Fri Apr 04 23:26:40 CEST 2008
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
|
||||
org.eclipse.jdt.core.compiler.compliance=1.4
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.3
|
|
@ -0,0 +1,19 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.rse.subsystems.terminals.ssh;singleton:=true
|
||||
Bundle-Version: 0.1.0.qualifier
|
||||
Bundle-Activator: org.eclipse.rse.subsystems.terminals.ssh.Activator
|
||||
Bundle-Localization: plugin
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
org.eclipse.rse.services;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.connectorservice.ssh;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.services.ssh;bundle-version="[2.0.0,3.0.0)",
|
||||
org.eclipse.rse.subsystems.terminals.core;bundle-version="[0.1.0,0.2.0)",
|
||||
org.eclipse.rse.subsystems.shells.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.ui;bundle-version="[3.0.0,4.0.0)"
|
||||
Eclipse-LazyStart: true
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-RequiredExecutionEnvironment: J2SE-1.4
|
||||
Bundle-ActivationPolicy: lazy
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>June 5, 2007</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,9 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.properties,\
|
||||
about.html,\
|
||||
plugin.xml,\
|
||||
icons/
|
||||
src.includes = about.html
|
Binary file not shown.
After Width: | Height: | Size: 938 B |
Binary file not shown.
After Width: | Height: | Size: 938 B |
|
@ -0,0 +1,19 @@
|
|||
################################################################################
|
||||
# Copyright (c) 2008 MontaVista Software Inc.
|
||||
# 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:
|
||||
# Yu-Fen Kuo - initial API and implementation
|
||||
################################################################################
|
||||
|
||||
# NLS_MESSAGEFORMAT_NONE
|
||||
# NLS_ENCODING=UTF-8
|
||||
|
||||
pluginName = RSE SSH Terminals (Incubation)
|
||||
providerName = Eclipse.org
|
||||
|
||||
SshTerminalSubsystemName=Ssh Terminals
|
||||
SshTerminalSubsystemDescription=Work with terminals and commands on remote systems using the Secure Shell (ssh) protocol.
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2008 MontaVista Software, Inc.
|
||||
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:
|
||||
Yu-Fen Kuo (MontaVista)- initial API and implementation
|
||||
-->
|
||||
<?eclipse version="3.1"?>
|
||||
<plugin>
|
||||
<extension
|
||||
point="org.eclipse.rse.core.subsystemConfigurations">
|
||||
<configuration
|
||||
category="terminals"
|
||||
class="org.eclipse.rse.subsystems.terminals.ssh.SshTerminalSubSystemConfiguration"
|
||||
description="%SshTerminalSubsystemDescription"
|
||||
icon="icons/full/obj16/terminalcommands_obj.gif"
|
||||
iconlive="icons/full/obj16/terminalcommandslive_obj.gif"
|
||||
id="ssh.terminals"
|
||||
name="%SshTerminalSubsystemName"
|
||||
priority="300"
|
||||
serviceType="_ssh._tcp;_sftp-ssh._tcp"
|
||||
systemTypeIds="org.eclipse.rse.systemtype.linux;org.eclipse.rse.systemtype.unix;org.eclipse.rse.systemtype.aix;org.eclipse.rse.systemtype.ssh"
|
||||
vendor="%providerName">
|
||||
</configuration>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
|
@ -0,0 +1,62 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.subsystems.terminals.ssh;
|
||||
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends Plugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "org.eclipse.rse.subsystems.terminals.ssh";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static Activator getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista)- initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.rse.subsystems.terminals.ssh;
|
||||
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.subsystems.IConnectorService;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.internal.connectorservice.ssh.SshConnectorService;
|
||||
import org.eclipse.rse.internal.connectorservice.ssh.SshConnectorServiceManager;
|
||||
import org.eclipse.rse.internal.services.ssh.ISshService;
|
||||
import org.eclipse.rse.internal.services.ssh.terminal.SshTerminalService;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalService;
|
||||
import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystemConfiguration;
|
||||
|
||||
public class SshTerminalSubSystemConfiguration extends
|
||||
TerminalServiceSubSystemConfiguration {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.rse.core.subsystems.SubSystemConfiguration#isFactoryFor(java.lang.Class)
|
||||
*/
|
||||
public boolean isFactoryFor(Class subSystemType) {
|
||||
boolean isFor = TerminalServiceSubSystem.class.equals(subSystemType);
|
||||
return isFor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate and return an instance of OUR subsystem. Do not populate it
|
||||
* yet though!
|
||||
*
|
||||
* @see org.eclipse.rse.core.subsystems.SubSystemConfiguration#createSubSystemInternal(IHost)
|
||||
*/
|
||||
public ISubSystem createSubSystemInternal(IHost host) {
|
||||
SshConnectorService connectorService = (SshConnectorService) getConnectorService(host);
|
||||
ISubSystem subsys = new TerminalServiceSubSystem(host,
|
||||
connectorService, createTerminalService(host));
|
||||
return subsys;
|
||||
}
|
||||
|
||||
public ITerminalService createTerminalService(IHost host) {
|
||||
SshConnectorService cserv = (SshConnectorService) getConnectorService(host);
|
||||
return new SshTerminalService(cserv);
|
||||
}
|
||||
|
||||
public IConnectorService getConnectorService(IHost host) {
|
||||
return SshConnectorServiceManager.getInstance().getConnectorService(
|
||||
host, ISshService.class);
|
||||
}
|
||||
|
||||
public void setConnectorService(IHost host,
|
||||
IConnectorService connectorService) {
|
||||
SshConnectorServiceManager.getInstance().setConnectorService(host,
|
||||
ISshService.class, connectorService);
|
||||
}
|
||||
|
||||
public Class getServiceImplType() {
|
||||
return ISshService.class;
|
||||
}
|
||||
|
||||
}
|
7
rse/plugins/org.eclipse.rse.terminals.ui/.classpath
Normal file
7
rse/plugins/org.eclipse.rse.terminals.ui/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
rse/plugins/org.eclipse.rse.terminals.ui/.cvsignore
Normal file
1
rse/plugins/org.eclipse.rse.terminals.ui/.cvsignore
Normal file
|
@ -0,0 +1 @@
|
|||
bin
|
28
rse/plugins/org.eclipse.rse.terminals.ui/.project
Normal file
28
rse/plugins/org.eclipse.rse.terminals.ui/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.rse.terminals.ui</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,7 @@
|
|||
#Fri Apr 04 23:28:00 CEST 2008
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
|
||||
org.eclipse.jdt.core.compiler.compliance=1.4
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.3
|
|
@ -0,0 +1,25 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.rse.terminals.ui;singleton:=true
|
||||
Bundle-Version: 0.1.0.qualifier
|
||||
Bundle-Activator: org.eclipse.rse.internal.terminals.ui.Activator
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
org.eclipse.rse.services;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.ui.views,
|
||||
org.eclipse.rse.subsystems.files.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.ui;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.subsystems.shells.core;bundle-version="[3.0.0,4.0.0)",
|
||||
org.eclipse.rse.subsystems.terminals.core;bundle-version="[0.1.0,0.2.0)",
|
||||
org.eclipse.tm.terminal,
|
||||
org.eclipse.tm.terminal.view
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Eclipse-LazyStart: true
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-RequiredExecutionEnvironment: J2SE-1.4
|
||||
Export-Package: org.eclipse.rse.internal.terminals.ui;x-internal:=true,
|
||||
org.eclipse.rse.internal.terminals.ui.actions;x-internal:=true,
|
||||
org.eclipse.rse.internal.terminals.ui.configuration.adapter;x-internal:=true,
|
||||
org.eclipse.rse.internal.terminals.ui.views;x-internal:=true
|
28
rse/plugins/org.eclipse.rse.terminals.ui/about.html
Normal file
28
rse/plugins/org.eclipse.rse.terminals.ui/about.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>June 5, 2007</p>
|
||||
<h3>License</h3>
|
||||
|
||||
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||
indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||
|
||||
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||
and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,9 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
about.html,\
|
||||
plugin.properties,\
|
||||
plugin.xml,\
|
||||
icons/
|
||||
src.includes = about.html
|
Binary file not shown.
After Width: | Height: | Size: 580 B |
BIN
rse/plugins/org.eclipse.rse.terminals.ui/icons/terminal_view.gif
Normal file
BIN
rse/plugins/org.eclipse.rse.terminals.ui/icons/terminal_view.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 938 B |
Binary file not shown.
After Width: | Height: | Size: 938 B |
Binary file not shown.
After Width: | Height: | Size: 938 B |
25
rse/plugins/org.eclipse.rse.terminals.ui/plugin.properties
Normal file
25
rse/plugins/org.eclipse.rse.terminals.ui/plugin.properties
Normal file
|
@ -0,0 +1,25 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2008 MontaVista Software, Inc.
|
||||
# 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:
|
||||
# Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
# NLS_MESSAGEFORMAT_NONE
|
||||
# NLS_ENCODING=UTF-8
|
||||
|
||||
pluginName = RSE Terminals UI (Incubation)
|
||||
providerName = Eclipse.org
|
||||
|
||||
view.remoteTerminal=Remote Terminal
|
||||
|
||||
PropertyPage.ServerLauncherSettings = Server Launcher Settings
|
||||
PropertyPage.Service = Service
|
||||
PropertyPage.EnvVariables = Environment Variables
|
||||
|
||||
Launch_Terminal=Launch Terminal
|
||||
Launch_Terminal_Tooltip=Launch a terminal from the selected directory
|
70
rse/plugins/org.eclipse.rse.terminals.ui/plugin.xml
Normal file
70
rse/plugins/org.eclipse.rse.terminals.ui/plugin.xml
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2006, 2008 IBM Corporation and others. 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
|
||||
|
||||
Initial Contributors:
|
||||
The following IBM employees contributed to the Remote System Explorer
|
||||
component that contains this file: David McKnight, Kushal Munir,
|
||||
Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
|
||||
Contributors:
|
||||
Martin Oberhuber (Wind River) - [180519] declaratively register adapter factories
|
||||
Yu-Fen Kuo (MontaVista) - [170910] Integrate Terminal with RSE
|
||||
-->
|
||||
<?eclipse version="3.2"?>
|
||||
<plugin>
|
||||
|
||||
<extension point="org.eclipse.core.runtime.adapters">
|
||||
<!-- ITerminalServiceSubSystemConfiguration -->
|
||||
<factory
|
||||
class="org.eclipse.rse.internal.terminals.ui.configuration.adapter.TerminalServiceSubSystemConfigurationAdapterFactory"
|
||||
adaptableType="org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystemConfiguration">
|
||||
<adapter type="org.eclipse.rse.ui.subsystems.ISubSystemConfigurationAdapter"/>
|
||||
</factory>
|
||||
<factory
|
||||
class="org.eclipse.rse.internal.terminals.ui.views.TerminalViewElementsAdapterFactory"
|
||||
adaptableType="org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement">
|
||||
<adapter type="org.eclipse.rse.ui.view.ISystemViewElementAdapter"/>
|
||||
<adapter type="org.eclipse.rse.core.subsystems.ISystemDragDropAdapter"/>
|
||||
<adapter type="org.eclipse.rse.ui.view.ISystemRemoteElementAdapter"/>
|
||||
<adapter type="org.eclipse.ui.views.properties.IPropertySource"/>
|
||||
<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
|
||||
<adapter type="org.eclipse.ui.IActionFilter"/>
|
||||
</factory>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.views">
|
||||
<view
|
||||
name="Terminals"
|
||||
icon="icons/terminal_view.gif"
|
||||
category="org.eclipse.rse.ui.view"
|
||||
class="org.eclipse.rse.internal.terminals.ui.views.TerminalViewer"
|
||||
id="org.eclipse.rse.terminals.ui.view.TerminalView">
|
||||
</view>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.popupMenus">
|
||||
<objectContribution
|
||||
objectClass="org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile"
|
||||
id="org.eclipse.rse.terminals.ui.launch">
|
||||
<visibility>
|
||||
<and>
|
||||
<objectState name="isdirectory" value="true"/>
|
||||
<objectState name="isTerminalSubSystemExists" value="true"/>
|
||||
</and>
|
||||
</visibility>
|
||||
<action
|
||||
label="Launch Terminal"
|
||||
icon="icons/terminal_view.gif"
|
||||
tooltip="%Launch_Terminal_Tooltip"
|
||||
class="org.eclipse.rse.internal.terminals.ui.actions.LaunchTerminalActionDelegate"
|
||||
enablesFor="1"
|
||||
id="org.eclipse.rse.terminalss.ui.actions.LaunchTerminalActionDelegate">
|
||||
</action>
|
||||
</objectContribution>
|
||||
</extension>
|
||||
</plugin>
|
|
@ -0,0 +1,122 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui;
|
||||
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import org.eclipse.rse.ui.SystemBasePlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends SystemBasePlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "org.eclipse.rse.internal.terminals.ui"; //$NON-NLS-1$
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
private ResourceBundle resourceBundle;
|
||||
|
||||
public static String ICON_ID_LAUNCH_TERMINAL = "icon_id_launch_terminal"; //$NON-NLS-1$
|
||||
public static String ICON_ID_TERMINAL_SUBSYSTEM = "icon_id_terminal_subsystem"; //$NON-NLS-1$
|
||||
public static String ICON_ID_TERMINAL_SUBSYSTEM_LIVE = "icon_id_terminal_subsystem_live"; //$NON-NLS-1$
|
||||
public static String ICON_ID_REMOVE_TERMINAL = "icon_id_remove_terminal"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
resourceBundle = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static Activator getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the string from the plugin's resource bundle, or 'key' if not
|
||||
* found.
|
||||
*
|
||||
* @see java.util.ResourceBundle#getString(String)
|
||||
*
|
||||
* @param key
|
||||
* the key for the desired string
|
||||
* @return the string for the given key
|
||||
*/
|
||||
public static String getResourceString(String key) {
|
||||
ResourceBundle bundle = Activator.getDefault().getResourceBundle();
|
||||
try {
|
||||
return (bundle != null) ? bundle.getString(key) : key;
|
||||
} catch (MissingResourceException e) {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the plugin's Resource bundle.
|
||||
*
|
||||
* @return the Resource bundle
|
||||
*/
|
||||
public ResourceBundle getResourceBundle() {
|
||||
try {
|
||||
if (resourceBundle == null)
|
||||
resourceBundle = ResourceBundle
|
||||
.getBundle("org.eclipse.rse.internal.terminals.ui.TerminalUIResources"); //$NON-NLS-1$
|
||||
} catch (MissingResourceException x) {
|
||||
resourceBundle = null;
|
||||
}
|
||||
return resourceBundle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the image registry by declaring all of the required graphics.
|
||||
*/
|
||||
protected void initializeImageRegistry() {
|
||||
String path = getIconPath();
|
||||
putImageInRegistry(ICON_ID_LAUNCH_TERMINAL, path + "terminal_view.gif"); //$NON-NLS-1$
|
||||
putImageInRegistry(ICON_ID_TERMINAL_SUBSYSTEM, path
|
||||
+ "terminalcommands_obj.gif"); //$NON-NLS-1$
|
||||
putImageInRegistry(ICON_ID_TERMINAL_SUBSYSTEM_LIVE, path
|
||||
+ "terminalcommandslive_obj.gif"); //$NON-NLS-1$
|
||||
putImageInRegistry(ICON_ID_REMOVE_TERMINAL, path + "removeterminal.gif"); //$NON-NLS-1$
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.swt.custom.CTabItem;
|
||||
|
||||
public class TerminalServiceHelper {
|
||||
|
||||
/**
|
||||
* Constructor for TerminalServiceHelper.
|
||||
*/
|
||||
public TerminalServiceHelper() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to return the path to change-directory to, given a selected
|
||||
* remote file object
|
||||
*/
|
||||
public static String getWorkingDirectory(IRemoteFile selectedFile) {
|
||||
String path = null;
|
||||
if (selectedFile.isDirectory())
|
||||
path = selectedFile.getAbsolutePath();
|
||||
else
|
||||
path = selectedFile.getParentPath();
|
||||
return path;
|
||||
}
|
||||
|
||||
public static ITerminalServiceSubSystem getTerminalSubSystem(
|
||||
IHost connection) {
|
||||
ISystemRegistry systemRegistry = RSECorePlugin.getTheSystemRegistry();
|
||||
ISubSystem[] subsystems = systemRegistry.getSubSystems(connection);
|
||||
for (int i = 0; i < subsystems.length; i++) {
|
||||
if ("ssh.terminals".equals(subsystems[i].getSubSystemConfiguration().getId())) {
|
||||
ITerminalServiceSubSystem subSystem = (ITerminalServiceSubSystem) subsystems[i];
|
||||
return subSystem;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ITerminalServiceSubSystem[] getTerminalSubSystems(
|
||||
IHost connection) {
|
||||
List results = new ArrayList();
|
||||
ISystemRegistry systemRegistry = RSECorePlugin.getTheSystemRegistry();
|
||||
ISubSystem[] subsystems = systemRegistry.getSubSystems(connection);
|
||||
for (int i = 0; i < subsystems.length; i++) {
|
||||
if (subsystems[i] instanceof ITerminalServiceSubSystem) {
|
||||
ITerminalServiceSubSystem subSystem = (ITerminalServiceSubSystem) subsystems[i];
|
||||
results.add(subSystem);
|
||||
}
|
||||
}
|
||||
return (ITerminalServiceSubSystem[]) results
|
||||
.toArray(new ITerminalServiceSubSystem[results.size()]);
|
||||
}
|
||||
|
||||
public static TerminalElement createTerminalElement(CTabItem item,
|
||||
ITerminalServiceSubSystem terminalServiceSubSystem) {
|
||||
TerminalElement element = new TerminalElement(item.getText(),
|
||||
terminalServiceSubSystem);
|
||||
return element;
|
||||
}
|
||||
|
||||
public static void removeTerminalElementFromHost(CTabItem item, IHost host) {
|
||||
ITerminalServiceSubSystem terminalServiceSubSystem = getTerminalSubSystem(host);
|
||||
if (terminalServiceSubSystem != null) {
|
||||
TerminalElement element = new TerminalElement(item.getText(),
|
||||
terminalServiceSubSystem);
|
||||
terminalServiceSubSystem.removeChild(element);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
################################################################################
|
||||
# Copyright (c) 2008 MontaVista Software, Inc..
|
||||
# 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:
|
||||
# Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
################################################################################
|
||||
|
||||
# NLS_MESSAGEFORMAT_VAR
|
||||
# NLS_ENCODING=UTF-8
|
||||
|
||||
LaunchTerminalAction.title=Launch Terminal
|
||||
LaunchTerminalAction.tooltip=Launch Terminal view
|
||||
TerminalsUI.cannotOpenView.error=Can not open remote terminals view
|
||||
|
||||
RemoveTerminalAction.label=Remove Terminal
|
||||
RemoveTerminalAction.tooltip=Remove current terminal from terminals view
|
||||
ShowInTerminalViewAction.label=Show In Terminals View
|
||||
ShowInTerminalViewAction.tooltip=Show current terminal in Terminals view
|
|
@ -0,0 +1,268 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2008 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
||||
* Martin Oberhuber (Wind River) - [174945] Remove obsolete icons from rse.shells.ui
|
||||
* Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty()
|
||||
* Martin Oberhuber (Wind River) - [187218] Fix error reporting for connect()
|
||||
* Kevin Doyle (IBM) - [187083] Launch Shell action available on folders inside virtual files
|
||||
* David McKnight (IBM) - [216252] [api][nls] Resource Strings specific to subsystems should be moved from rse.ui into files.ui / shells.ui / processes.ui where possible
|
||||
* David McKnight (IBM) - [220547] [api][breaking] SimpleSystemMessage needs to specify a message id and some messages should be shared
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from SystemCommandAction
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.actions;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.rse.core.filters.ISystemFilterReference;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalViewer;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalsUI;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.rse.ui.actions.SystemBaseAction;
|
||||
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
|
||||
import org.eclipse.swt.custom.CTabItem;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
/**
|
||||
* action to launch a terminal from either the terminal subsystem or selected
|
||||
* directory
|
||||
*
|
||||
*/
|
||||
public class LaunchTerminalAction extends SystemBaseAction {
|
||||
|
||||
private ITerminalServiceSubSystem subSystem;
|
||||
private IRemoteFile selected;
|
||||
private ISystemFilterReference selectedFilterRef;
|
||||
|
||||
public LaunchTerminalAction(String text, ImageDescriptor image, Shell shell) {
|
||||
super(text, image, shell);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for LaunchTerminalAction
|
||||
*
|
||||
* @param parent
|
||||
* @param subSystem
|
||||
* the terminal subsystem to use if launching a terminal
|
||||
*/
|
||||
public LaunchTerminalAction(Shell parent,
|
||||
ITerminalServiceSubSystem subSystem) {
|
||||
this(Activator.getResourceString("LaunchTerminalAction.title"), //$NON-NLS-1$
|
||||
Activator.getResourceString("LaunchTerminalAction.tooltip"), //$NON-NLS-1$
|
||||
parent, subSystem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for LaunchTerminalAction
|
||||
*
|
||||
* @param title
|
||||
* title of the action
|
||||
* @param tooltip
|
||||
* tooltip of the action
|
||||
* @param parent
|
||||
* @param subSystem
|
||||
* the terminal subsystem to use if launching a terminal
|
||||
*/
|
||||
public LaunchTerminalAction(String title, String tooltip, Shell parent,
|
||||
ITerminalServiceSubSystem subSystem) {
|
||||
this(title, tooltip, Activator.getDefault().getImageDescriptor(
|
||||
Activator.ICON_ID_LAUNCH_TERMINAL), parent,
|
||||
|
||||
subSystem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for LaunchTerminalAction
|
||||
*
|
||||
* @param title
|
||||
* title of the action
|
||||
* @param tooltip
|
||||
* tooltip of the action
|
||||
* @param descriptor
|
||||
* image descriptor to be displayed for this action
|
||||
* @param parent
|
||||
* @param subSystem
|
||||
* the terminal subsystem to use if launching a terminal
|
||||
*/
|
||||
public LaunchTerminalAction(String title, String tooltip,
|
||||
ImageDescriptor descriptor, Shell parent,
|
||||
ITerminalServiceSubSystem subSystem) {
|
||||
super(title, tooltip, descriptor, parent);
|
||||
this.subSystem = subSystem;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the terminal subsystem
|
||||
*/
|
||||
public ITerminalServiceSubSystem getSubSystem() {
|
||||
return subSystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* settor for the terminal subsystem
|
||||
*
|
||||
* @param subSystem
|
||||
* terminal subsystem
|
||||
*/
|
||||
public void setSubSystem(ITerminalServiceSubSystem subSystem) {
|
||||
this.subSystem = subSystem;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.rse.ui.actions.SystemBaseAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
|
||||
*/
|
||||
public boolean updateSelection(IStructuredSelection selection) {
|
||||
boolean enable = false;
|
||||
|
||||
Iterator e = selection.iterator();
|
||||
Object selectedObject = e.next();
|
||||
|
||||
if (selectedObject != null) {
|
||||
if (selectedObject instanceof ISystemFilterReference) {
|
||||
selectedFilterRef = (ISystemFilterReference) selectedObject;
|
||||
selected = null;
|
||||
enable = true;
|
||||
}
|
||||
if (selectedObject instanceof IRemoteFile) {
|
||||
selected = (IRemoteFile) selectedObject;
|
||||
selectedFilterRef = null;
|
||||
IHost host = selected.getParentRemoteFileSubSystem().getHost();
|
||||
subSystem = TerminalServiceHelper.getTerminalSubSystem(host);
|
||||
// If the selected object is a virtual folder then we need to
|
||||
// select the parent
|
||||
// of the archive
|
||||
if (ArchiveHandlerManager.isVirtual(selected.getAbsolutePath())) {
|
||||
IRemoteFileSubSystem rfss = selected
|
||||
.getParentRemoteFileSubSystem();
|
||||
String file = selected.getAbsolutePath();
|
||||
// Get the archive's path
|
||||
file = file.substring(0, file
|
||||
.indexOf(ArchiveHandlerManager.VIRTUAL_SEPARATOR));
|
||||
// Get the parent of the archive's path
|
||||
file = file.substring(0, file.lastIndexOf(selected
|
||||
.getSeparator()));
|
||||
try {
|
||||
selected = rfss.getRemoteFileObject(file, null);
|
||||
} catch (SystemMessageException exc) {
|
||||
}
|
||||
}
|
||||
if (!selected.isFile()) {
|
||||
enable = checkObjectType(selected);
|
||||
}
|
||||
} else if (selectedObject instanceof ITerminalServiceSubSystem) {
|
||||
subSystem = (ITerminalServiceSubSystem) selectedObject;
|
||||
enable = true;
|
||||
}
|
||||
}
|
||||
|
||||
return enable;
|
||||
}
|
||||
|
||||
private ITerminalServiceSubSystem getTerminalSubSystem() {
|
||||
IHost currentHost = null;
|
||||
|
||||
if (selectedFilterRef != null) {
|
||||
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter) ((IAdaptable) selectedFilterRef)
|
||||
.getAdapter(ISystemViewElementAdapter.class);
|
||||
if (adapter != null) {
|
||||
ISubSystem ss = adapter.getSubSystem(selectedFilterRef);
|
||||
if (ss != null) {
|
||||
currentHost = ss.getHost();
|
||||
}
|
||||
}
|
||||
} else if (selected != null) {
|
||||
currentHost = selected.getSystemConnection();
|
||||
}
|
||||
if (currentHost != null) {
|
||||
return TerminalServiceHelper.getTerminalSubSystem(currentHost);
|
||||
|
||||
}
|
||||
|
||||
return getSubSystem();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.rse.ui.actions.SystemBaseAction#run()
|
||||
*/
|
||||
public void run() {
|
||||
if (selectedFilterRef != null) {
|
||||
ISystemViewElementAdapter adapter = (ISystemViewElementAdapter) ((IAdaptable) selectedFilterRef)
|
||||
.getAdapter(ISystemViewElementAdapter.class);
|
||||
if (adapter != null) {
|
||||
ISubSystem ss = adapter.getSubSystem(selectedFilterRef);
|
||||
if (ss != null) {
|
||||
Object target = ss.getTargetForFilter(selectedFilterRef);
|
||||
if (target != null && target instanceof IRemoteFile) {
|
||||
selected = (IRemoteFile) target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ITerminalServiceSubSystem terminalSubSystem = getTerminalSubSystem();
|
||||
if (terminalSubSystem != null) {
|
||||
TerminalsUI terminalsUI = TerminalsUI.getInstance();
|
||||
TerminalViewer viewer = terminalsUI.activateTerminalsView();
|
||||
if (!terminalSubSystem.isConnected()) {
|
||||
try {
|
||||
terminalSubSystem.connect(new NullProgressMonitor(), false);
|
||||
|
||||
} catch (Exception e) {
|
||||
Activator.logError(e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
if (terminalSubSystem.isConnected()) {
|
||||
CTabItem tab = viewer.getTabFolder().createTabItem(
|
||||
terminalSubSystem.getHost(), getInitialDirectoryCmd());
|
||||
TerminalElement element = TerminalServiceHelper
|
||||
.createTerminalElement(tab, terminalSubSystem);
|
||||
terminalSubSystem.addChild(element);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getInitialDirectoryCmd() {
|
||||
if (selected == null)
|
||||
return null;
|
||||
String path = TerminalServiceHelper.getWorkingDirectory(selected);
|
||||
|
||||
String cdCmd = "cd " + PathUtility.enQuoteUnix(path); //$NON-NLS-1$
|
||||
if (getTerminalSubSystem().getHost().getSystemType().isWindows()) {
|
||||
cdCmd = "cd /d \"" + path + '\"'; //$NON-NLS-1$
|
||||
}
|
||||
return cdCmd + "\r"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006, 2007 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [168870] refactor org.eclipse.rse.core package of the UI plugin
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from LaunchShellActionDelegate
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.actions;
|
||||
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.rse.ui.SystemBasePlugin;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.ui.IActionDelegate;
|
||||
import org.eclipse.ui.actions.ActionDelegate;
|
||||
|
||||
public class LaunchTerminalActionDelegate extends ActionDelegate implements
|
||||
IActionDelegate {
|
||||
|
||||
private LaunchTerminalAction launchTerminalAction;
|
||||
private ISelection selection;
|
||||
|
||||
public void run(IAction action) {
|
||||
if (launchTerminalAction == null) {
|
||||
launchTerminalAction = new LaunchTerminalAction(SystemBasePlugin
|
||||
.getActiveWorkbenchShell(), null);
|
||||
}
|
||||
launchTerminalAction.updateSelection((IStructuredSelection) selection);
|
||||
launchTerminalAction.run();
|
||||
}
|
||||
|
||||
public void runWithEvent(IAction action, Event event) {
|
||||
super.runWithEvent(action, event);
|
||||
}
|
||||
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
super.selectionChanged(action, selection);
|
||||
this.selection = selection;
|
||||
}
|
||||
|
||||
public LaunchTerminalActionDelegate() {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2004, 2007 IBM Corporation and others.
|
||||
* 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work
|
||||
* Anna Dushistova (MontaVista) - Adapted from SystemShowInShellViewAction
|
||||
* Anna Dushistova (MontaVista) - Adapted from ShowInTerminalViewAction
|
||||
*******************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.actions;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalViewer;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalsUI;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public class RemoveTerminalAction extends TerminalElementBaseAction {
|
||||
public RemoveTerminalAction(Shell parent) {
|
||||
this(Activator.getResourceString("RemoveTerminalAction.label"), //$NON-NLS-1$
|
||||
Activator.getResourceString("RemoveTerminalAction.tooltip"), //$NON-NLS-1$
|
||||
Activator.getDefault().getImageDescriptor(
|
||||
Activator.ICON_ID_REMOVE_TERMINAL), parent);
|
||||
}
|
||||
|
||||
public RemoveTerminalAction(String label, String tooltip,
|
||||
ImageDescriptor image, Shell parent) {
|
||||
super(label, tooltip, image, parent);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
TerminalsUI terminalsUI = TerminalsUI.getInstance();
|
||||
TerminalViewer viewPart = terminalsUI.activateTerminalsView();
|
||||
for (int i = 0; i < selected.size(); i++) {
|
||||
TerminalElement element = (TerminalElement) selected.get(i);
|
||||
viewPart.getTabFolder().disposePageFor(element.getName());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2004, 2007 IBM Corporation and others.
|
||||
* 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work
|
||||
* Anna Dushistova (MontaVista) - Adapted from SystemShowInShellViewAction
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.actions;
|
||||
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalViewer;
|
||||
import org.eclipse.rse.internal.terminals.ui.views.TerminalsUI;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public class ShowInTerminalViewAction extends TerminalElementBaseAction {
|
||||
|
||||
public ShowInTerminalViewAction(Shell parent) {
|
||||
super(
|
||||
Activator.getResourceString("ShowInTerminalViewAction.label"), //$NON-NLS-1$
|
||||
Activator.getResourceString("ShowInTerminalViewAction.tooltip"), //$NON-NLS-1$
|
||||
Activator.getDefault().getImageDescriptor(
|
||||
Activator.ICON_ID_LAUNCH_TERMINAL), parent);
|
||||
allowOnMultipleSelection(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when this action is selected from the popup menu.
|
||||
*/
|
||||
public void run() {
|
||||
TerminalsUI terminalsUI = TerminalsUI.getInstance();
|
||||
TerminalViewer viewPart = terminalsUI.activateTerminalsView();
|
||||
for (int i = 0; i < selected.size(); i++) {
|
||||
TerminalElement element = (TerminalElement) selected.get(i);
|
||||
viewPart.getTabFolder().showPageFor(element.getName());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2007 IBM Corporation and others.
|
||||
* 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Anna Dushistova (MontaVista) - Adapted from SystemBaseShellAction
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from SystemBaseShellAction
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.actions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.rse.ui.actions.SystemBaseAction;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public abstract class TerminalElementBaseAction extends SystemBaseAction {
|
||||
protected List selected;
|
||||
|
||||
public TerminalElementBaseAction(String name, String tooltip,
|
||||
ImageDescriptor image, Shell parent) {
|
||||
super(name, tooltip, image, parent);
|
||||
setAvailableOffline(true);
|
||||
allowOnMultipleSelection(true);
|
||||
selected = new ArrayList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the selection changes. The selection is checked to make sure
|
||||
* this action can be performed on the selected object.
|
||||
*/
|
||||
public boolean updateSelection(IStructuredSelection selection) {
|
||||
boolean enable = false;
|
||||
Iterator e = selection.iterator();
|
||||
selected.clear();
|
||||
while (e.hasNext()) {
|
||||
Object object = e.next();
|
||||
if (object instanceof TerminalElement) {
|
||||
if (isApplicable((TerminalElement) object)) {
|
||||
selected.add(object);
|
||||
enable = true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return enable;
|
||||
}
|
||||
|
||||
protected boolean isApplicable(TerminalElement element) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006, 2008 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from ShellServiceSubSystemConfigurationAdapter
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.configuration.adapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
|
||||
import org.eclipse.rse.internal.terminals.ui.actions.LaunchTerminalAction;
|
||||
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
|
||||
import org.eclipse.rse.ui.SystemMenuManager;
|
||||
import org.eclipse.rse.ui.view.SubSystemConfigurationAdapter;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public class TerminalServiceSubSystemConfigurationAdapter extends
|
||||
SubSystemConfigurationAdapter {
|
||||
protected LaunchTerminalAction terminalAction;
|
||||
protected ImageDescriptor activeImageDescriptor;
|
||||
protected ImageDescriptor inactiveImageDescriptor;
|
||||
|
||||
public IAction[] getSubSystemActions(SystemMenuManager menu,
|
||||
IStructuredSelection selection, Shell shell, String menuGroup,
|
||||
ISubSystemConfiguration factory, ISubSystem selectedSubSystem) {
|
||||
List allActions = new ArrayList();
|
||||
IAction[] baseActions = super.getSubSystemActions(menu, selection,
|
||||
shell, menuGroup, factory, selectedSubSystem);
|
||||
for (int i = 0; i < baseActions.length; i++) {
|
||||
allActions.add(baseActions[i]);
|
||||
}
|
||||
|
||||
// launching terminals and finding files
|
||||
if (selectedSubSystem instanceof IRemoteFileSubSystem) {
|
||||
IRemoteFileSubSystem fs = (IRemoteFileSubSystem) selectedSubSystem;
|
||||
ITerminalServiceSubSystem cmdSubSystem = TerminalServiceHelper
|
||||
.getTerminalSubSystem(fs.getHost());
|
||||
if (cmdSubSystem != null) {
|
||||
allActions.add(getTerminalAction(cmdSubSystem, shell));
|
||||
}
|
||||
} else if (selectedSubSystem instanceof ITerminalServiceSubSystem) {
|
||||
allActions.add(getTerminalAction(
|
||||
(ITerminalServiceSubSystem) selectedSubSystem, shell));
|
||||
}
|
||||
|
||||
return (IAction[]) allActions.toArray(new IAction[allActions.size()]);
|
||||
}
|
||||
|
||||
public IAction getTerminalAction(
|
||||
ITerminalServiceSubSystem selectedSubSystem, Shell shell) {
|
||||
if (terminalAction == null) {
|
||||
terminalAction = new LaunchTerminalAction(shell, selectedSubSystem);
|
||||
} else {
|
||||
terminalAction.setSubSystem(selectedSubSystem);
|
||||
}
|
||||
return terminalAction;
|
||||
}
|
||||
|
||||
public ImageDescriptor getImage(ISubSystemConfiguration config) {
|
||||
if (inactiveImageDescriptor == null) {
|
||||
inactiveImageDescriptor = Activator.getDefault()
|
||||
.getImageDescriptor(Activator.ICON_ID_TERMINAL_SUBSYSTEM);
|
||||
}
|
||||
return inactiveImageDescriptor;
|
||||
}
|
||||
|
||||
public ImageDescriptor getLiveImage(ISubSystemConfiguration config) {
|
||||
if (activeImageDescriptor == null) {
|
||||
activeImageDescriptor = Activator.getDefault().getImageDescriptor(
|
||||
Activator.ICON_ID_TERMINAL_SUBSYSTEM_LIVE);
|
||||
}
|
||||
return activeImageDescriptor;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006, 2007 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [180519][api] declaratively register adapter factories
|
||||
* Martin Oberhuber (Wind River) - [186748] Move ISubSystemConfigurationAdapter from UI/rse.core.subsystems.util
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from ShellServiceSubSystemConfigurationAdapterFactory
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.configuration.adapter;
|
||||
|
||||
import org.eclipse.core.runtime.IAdapterFactory;
|
||||
import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystemConfiguration;
|
||||
import org.eclipse.rse.ui.subsystems.ISubSystemConfigurationAdapter;
|
||||
|
||||
public class TerminalServiceSubSystemConfigurationAdapterFactory implements
|
||||
IAdapterFactory {
|
||||
|
||||
private ISubSystemConfigurationAdapter factoryAdapter;
|
||||
|
||||
public TerminalServiceSubSystemConfigurationAdapterFactory() {
|
||||
super();
|
||||
factoryAdapter = new TerminalServiceSubSystemConfigurationAdapter();
|
||||
}
|
||||
|
||||
public Object getAdapter(Object adaptableObject, Class adapterType) {
|
||||
Object adapter = null;
|
||||
if (adaptableObject instanceof TerminalServiceSubSystemConfiguration)
|
||||
adapter = factoryAdapter;
|
||||
|
||||
return adapter;
|
||||
}
|
||||
|
||||
public Class[] getAdapterList() {
|
||||
return new Class[] { ISubSystemConfigurationAdapter.class };
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Anna Dushistova (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InterruptedIOException;
|
||||
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalShell;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalService;
|
||||
import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem;
|
||||
import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.Logger;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
|
||||
|
||||
public class RSETerminalConnectionThread extends Thread {
|
||||
private final ITerminalControl fControl;
|
||||
private final RSETerminalConnectorImpl fConn;
|
||||
private ITerminalShell shell;
|
||||
|
||||
public RSETerminalConnectionThread(RSETerminalConnectorImpl conn,
|
||||
ITerminalControl control) {
|
||||
super();
|
||||
fControl = control;
|
||||
fConn = conn;
|
||||
fControl.setState(TerminalState.CONNECTING);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
ITerminalServiceSubSystem subsystem = TerminalServiceHelper
|
||||
.getTerminalSubSystem(fConn.host);
|
||||
|
||||
try {
|
||||
subsystem.connect(new NullProgressMonitor(), false);
|
||||
} catch (Exception e1) {
|
||||
connectFailed(e1.getMessage(), e1.getMessage());
|
||||
}
|
||||
try {
|
||||
if (subsystem instanceof TerminalServiceSubSystem) {
|
||||
ITerminalService ts = ((TerminalServiceSubSystem) subsystem).getTerminalService();
|
||||
shell = ts.launchTerminal("ansi", null, null, "/", null, new NullProgressMonitor());
|
||||
}
|
||||
fConn.setInputStream(shell.getInputStream());
|
||||
fConn.setOutputStream(shell.getOutputStream());
|
||||
} catch (SystemMessageException e1) {
|
||||
// TODO Auto-generated catch block
|
||||
e1.printStackTrace();
|
||||
}
|
||||
fConn.setTerminalHostShell(shell);
|
||||
fControl.setState(TerminalState.CONNECTED);
|
||||
try {
|
||||
// this is the workaround to delay read data
|
||||
// otherwise we might end of with race condition to processText
|
||||
// before dimension is set.
|
||||
Thread.sleep(500);
|
||||
// read data until the connection gets terminated
|
||||
readDataForever(fConn.getInputStream());
|
||||
} catch (InterruptedIOException e) {
|
||||
// we got interrupted: we are done...
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
// when reading is done, we set the state to closed
|
||||
fControl.setState(TerminalState.CLOSED);
|
||||
}
|
||||
|
||||
/**
|
||||
* disconnect the ssh session
|
||||
*/
|
||||
void disconnect() {
|
||||
interrupt();
|
||||
synchronized (this) {
|
||||
try {
|
||||
// do not close the connection
|
||||
// TerminalServiceHelper.getTerminalSubSystem(fConn.host)
|
||||
// .disconnect();
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the data from the connection and display it in the terminal.
|
||||
*
|
||||
* @param in
|
||||
* @throws IOException
|
||||
*/
|
||||
private void readDataForever(InputStream in) throws IOException {
|
||||
// read the data
|
||||
byte bytes[] = new byte[32 * 1024];
|
||||
int n;
|
||||
// read until the thread gets interrupted....
|
||||
while ((n = in.read(bytes)) != -1) {
|
||||
fControl.getRemoteToTerminalOutputStream().write(bytes, 0, n);
|
||||
}
|
||||
}
|
||||
|
||||
private void connectFailed(String terminalText, String msg) {
|
||||
Logger.log(terminalText);
|
||||
fControl.displayTextInTerminal(terminalText);
|
||||
fControl.setState(TerminalState.CLOSED);
|
||||
fControl.setMsg(msg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Anna Dushistova (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
|
||||
|
||||
public class RSETerminalConnector extends RSETerminalConnectorImpl implements ITerminalConnector {
|
||||
|
||||
public RSETerminalConnector(IHost host) {
|
||||
super(host);
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return "rse_internal_connector"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public String getInitializationErrorMessage() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return "rse_internal_connector";
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public Object getAdapter(Class adapterType) {
|
||||
if (adapterType.isInstance(this))
|
||||
return this;
|
||||
return Platform.getAdapterManager().getAdapter(this, adapterType);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Anna Dushistova (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.internal.services.terminals.ITerminalShell;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
|
||||
|
||||
public class RSETerminalConnectorImpl extends TerminalConnectorImpl {
|
||||
private OutputStream fOutputStream;
|
||||
private InputStream fInputStream;
|
||||
IHost host;
|
||||
private RSETerminalConnectionThread fConnection;
|
||||
private ITerminalShell shell;
|
||||
|
||||
public RSETerminalConnectorImpl(IHost host) {
|
||||
super();
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public void connect(ITerminalControl control) {
|
||||
super.connect(control);
|
||||
fConnection = new RSETerminalConnectionThread(this, control);
|
||||
fConnection.start();
|
||||
}
|
||||
|
||||
public void doDisconnect() {
|
||||
fConnection.disconnect();
|
||||
if (getInputStream() != null) {
|
||||
try {
|
||||
getInputStream().close();
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (getTerminalToRemoteStream() != null) {
|
||||
try {
|
||||
getTerminalToRemoteStream().close();
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public OutputStream getTerminalToRemoteStream() {
|
||||
return fOutputStream;
|
||||
}
|
||||
|
||||
public String getSettingsSummary() {
|
||||
return "RSE: " + host.getName();
|
||||
}
|
||||
|
||||
public boolean isLocalEcho() {
|
||||
return shell.isLocalEcho();
|
||||
}
|
||||
|
||||
public void setTerminalSize(int newWidth, int newHeight) {
|
||||
shell.setTerminalSize(newWidth, newHeight);
|
||||
}
|
||||
|
||||
public InputStream getInputStream() {
|
||||
return fInputStream;
|
||||
}
|
||||
|
||||
public void setOutputStream(OutputStream outputStream) {
|
||||
fOutputStream = outputStream;
|
||||
}
|
||||
|
||||
public void setInputStream(InputStream inputStream) {
|
||||
fInputStream = inputStream;
|
||||
}
|
||||
|
||||
public void setTerminalHostShell(ITerminalShell shell) {
|
||||
this.shell = shell;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,172 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2002, 2008 IBM Corporation and others.
|
||||
* 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [180562] dont implement ISystemOutputRemoteTypes
|
||||
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
|
||||
* Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation
|
||||
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
||||
* Martin Oberhuber (Wind River) - [174945] Remove obsolete icons from rse.shells.ui
|
||||
* Martin Oberhuber (Wind River) - [186748] Move ISubSystemConfigurationAdapter from UI/rse.core.subsystems.util
|
||||
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
|
||||
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core
|
||||
* David McKnight (IBM) - [196842] Don't have open menu for folders
|
||||
* Xuan Chen (IBM) - [160775] [api] rename (at least within a zip) blocks UI thread
|
||||
* David McKnight (IBM) - [189873] Improve remote shell editor open action with background jobs
|
||||
* David McKnight (IBM) - [216252] [nls] Resource Strings specific to subsystems should be moved from rse.ui into files.ui / shells.ui / processes.ui where possible
|
||||
* Xuan Chen (IBM) - [223126] [api][breaking] Remove API related to User Actions in RSE Core/UI
|
||||
* Yu-Fen Kuo (MontaVista) - Adopted from SystemViewRemoteOutputAdapter
|
||||
* Anna Dushistova (MontaVista) - Adopted from SystemViewRemoteOutputAdapter
|
||||
*******************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.rse.internal.terminals.ui.actions.RemoveTerminalAction;
|
||||
import org.eclipse.rse.internal.terminals.ui.actions.ShowInTerminalViewAction;
|
||||
import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystemConfiguration;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.rse.ui.ISystemContextMenuConstants;
|
||||
import org.eclipse.rse.ui.SystemMenuManager;
|
||||
import org.eclipse.rse.ui.view.AbstractSystemViewAdapter;
|
||||
import org.eclipse.rse.ui.view.ISystemRemoteElementAdapter;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.views.properties.IPropertyDescriptor;
|
||||
|
||||
public class TerminalViewElementAdapter extends AbstractSystemViewAdapter
|
||||
implements ISystemRemoteElementAdapter {
|
||||
private List actions = null;
|
||||
private ShowInTerminalViewAction showInTerminalViewAction;
|
||||
private RemoveTerminalAction closeTerminalAction;
|
||||
|
||||
public TerminalViewElementAdapter() {
|
||||
actions = new ArrayList();
|
||||
}
|
||||
|
||||
public void addActions(SystemMenuManager menu,
|
||||
IStructuredSelection selection, Shell parent, String menuGroup) {
|
||||
Object firstSelection = selection.getFirstElement();
|
||||
|
||||
if (firstSelection != null) {
|
||||
if (firstSelection instanceof TerminalElement) {
|
||||
TerminalElement cmdShell = (TerminalElement) firstSelection;
|
||||
if (showInTerminalViewAction == null) {
|
||||
showInTerminalViewAction = new ShowInTerminalViewAction(
|
||||
shell);
|
||||
|
||||
}
|
||||
menu.add(ISystemContextMenuConstants.GROUP_OPEN,
|
||||
showInTerminalViewAction);
|
||||
|
||||
getTerminalActions((ITerminalServiceSubSystemConfiguration) cmdShell
|
||||
.getSubSystem().getSubSystemConfiguration());
|
||||
|
||||
menu.add(ISystemContextMenuConstants.GROUP_CHANGE,
|
||||
closeTerminalAction);
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public List getTerminalActions(ITerminalServiceSubSystemConfiguration factory) {
|
||||
actions.clear();
|
||||
if (actions.size() == 0) {
|
||||
if (closeTerminalAction == null) {
|
||||
closeTerminalAction = new RemoveTerminalAction(shell);
|
||||
}
|
||||
actions.add(closeTerminalAction);
|
||||
}
|
||||
return actions;
|
||||
}
|
||||
|
||||
public Object[] getChildren(IAdaptable element, IProgressMonitor monitor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ImageDescriptor getImageDescriptor(Object element) {
|
||||
// TODO different image for different state?
|
||||
return Activator.getDefault().getImageDescriptor(
|
||||
Activator.ICON_ID_TERMINAL_SUBSYSTEM_LIVE);
|
||||
}
|
||||
|
||||
public Object getParent(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getType(Object element) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasChildren(IAdaptable element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected IPropertyDescriptor[] internalGetPropertyDescriptors() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Object internalGetPropertyValue(Object key) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getAbsoluteParentName(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object getRemoteParent(Object element, IProgressMonitor monitor)
|
||||
throws Exception {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String[] getRemoteParentNamesInUse(Object element,
|
||||
IProgressMonitor monitor) throws Exception {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean refreshRemoteObject(Object oldElement, Object newElement) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getRemoteSubType(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getRemoteType(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getRemoteTypeCategory(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getSubSystemConfigurationId(Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getText(Object element) {
|
||||
return element.toString();
|
||||
}
|
||||
|
||||
public String getAbsoluteName(Object object) {
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2008 MontaVista Software, Inc.
|
||||
* 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:
|
||||
* Yu-Fen Kuo (MontaVista) - initial API and implementation
|
||||
* Anna Dushistova (MontaVista) - initial API and implementation
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import org.eclipse.core.runtime.IAdapterFactory;
|
||||
import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter;
|
||||
import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement;
|
||||
import org.eclipse.rse.ui.SystemBasePlugin;
|
||||
import org.eclipse.rse.ui.view.ISystemRemoteElementAdapter;
|
||||
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
|
||||
import org.eclipse.ui.IActionFilter;
|
||||
import org.eclipse.ui.model.IWorkbenchAdapter;
|
||||
import org.eclipse.ui.views.properties.IPropertySource;
|
||||
|
||||
public class TerminalViewElementsAdapterFactory implements IAdapterFactory {
|
||||
|
||||
private TerminalViewElementAdapter elementAdapter = new TerminalViewElementAdapter();
|
||||
|
||||
public Object getAdapter(Object adaptableObject, Class adapterType) {
|
||||
Object adapter = null;
|
||||
if (adaptableObject instanceof TerminalElement)
|
||||
adapter = elementAdapter;
|
||||
|
||||
if ((adapter != null) && (adapterType == IPropertySource.class)) {
|
||||
((ISystemViewElementAdapter) adapter)
|
||||
.setPropertySourceInput(adaptableObject);
|
||||
} else if (adapter == null) {
|
||||
SystemBasePlugin
|
||||
.logWarning("No adapter found for object of type: " + adaptableObject.getClass().getName()); //$NON-NLS-1$
|
||||
}
|
||||
return adapter;
|
||||
}
|
||||
|
||||
public Class[] getAdapterList() {
|
||||
return new Class[] { ISystemViewElementAdapter.class,
|
||||
ISystemDragDropAdapter.class,
|
||||
ISystemRemoteElementAdapter.class, IPropertySource.class,
|
||||
IWorkbenchAdapter.class, IActionFilter.class };
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,451 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2002, 2007 IBM Corporation and others.
|
||||
* 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from CommandsViewWorkbook
|
||||
* Anna Dushistova (MontaVista) - Adapted from CommandsViewWorkbook
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.jface.action.IMenuListener;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
import org.eclipse.jface.action.MenuManager;
|
||||
import org.eclipse.jface.action.Separator;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper;
|
||||
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.CTabFolder;
|
||||
import org.eclipse.swt.custom.CTabItem;
|
||||
import org.eclipse.swt.dnd.TextTransfer;
|
||||
import org.eclipse.swt.events.DisposeEvent;
|
||||
import org.eclipse.swt.events.DisposeListener;
|
||||
import org.eclipse.swt.events.MenuEvent;
|
||||
import org.eclipse.swt.events.MenuListener;
|
||||
import org.eclipse.swt.layout.FillLayout;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalAction;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalActionClearAll;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalActionCopy;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalActionCut;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalActionPaste;
|
||||
import org.eclipse.tm.internal.terminal.actions.TerminalActionSelectAll;
|
||||
import org.eclipse.tm.internal.terminal.control.ITerminalListener;
|
||||
import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
|
||||
import org.eclipse.tm.internal.terminal.control.TerminalViewControlFactory;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
|
||||
import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
|
||||
import org.eclipse.tm.internal.terminal.view.ITerminalView;
|
||||
|
||||
/**
|
||||
* This is the desktop view wrapper of the System View viewer.
|
||||
*/
|
||||
public class TerminalViewTab extends Composite implements ITerminalListener,
|
||||
ITerminalView {
|
||||
|
||||
public static String DATA_KEY_CONTROL = "$_control_$"; //$NON-NLS-1$
|
||||
private CTabFolder tabFolder;
|
||||
private Menu menu;
|
||||
private TerminalViewer viewer;
|
||||
private boolean fMenuAboutToShow;
|
||||
private TerminalAction fActionEditCopy;
|
||||
|
||||
private TerminalAction fActionEditCut;
|
||||
|
||||
private TerminalAction fActionEditPaste;
|
||||
|
||||
private TerminalAction fActionEditClearAll;
|
||||
|
||||
private TerminalAction fActionEditSelectAll;
|
||||
|
||||
protected class TerminalContextMenuHandler implements MenuListener,
|
||||
IMenuListener {
|
||||
public void menuHidden(MenuEvent event) {
|
||||
fMenuAboutToShow = false;
|
||||
updateEditCopy();
|
||||
}
|
||||
|
||||
public void menuShown(MenuEvent e) {
|
||||
//
|
||||
}
|
||||
|
||||
public void menuAboutToShow(IMenuManager menuMgr) {
|
||||
fMenuAboutToShow = true;
|
||||
updateEditCopy();
|
||||
updateEditCut();
|
||||
updateEditSelectAll();
|
||||
updateEditPaste();
|
||||
updateEditClearAll();
|
||||
}
|
||||
}
|
||||
|
||||
public TerminalViewTab(final Composite parent, TerminalViewer viewer) {
|
||||
super(parent, SWT.NONE);
|
||||
tabFolder = new CTabFolder(this, SWT.NONE);
|
||||
tabFolder.setLayout(new FillLayout());
|
||||
tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
setLayout(new FillLayout());
|
||||
this.viewer = viewer;
|
||||
tabFolder.setBackground(parent.getBackground());
|
||||
tabFolder.setSimple(false);
|
||||
tabFolder.setUnselectedImageVisible(false);
|
||||
tabFolder.setUnselectedCloseVisible(false);
|
||||
|
||||
tabFolder.setMinimizeVisible(false);
|
||||
tabFolder.setMaximizeVisible(false);
|
||||
setupActions();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
if (!tabFolder.isDisposed()) {
|
||||
tabFolder.dispose();
|
||||
}
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
public CTabFolder getFolder() {
|
||||
return tabFolder;
|
||||
}
|
||||
|
||||
public void remove(Object root) {
|
||||
|
||||
}
|
||||
|
||||
public CTabItem getSelectedTab() {
|
||||
if (tabFolder.getItemCount() > 0) {
|
||||
int index = tabFolder.getSelectionIndex();
|
||||
CTabItem item = tabFolder.getItem(index);
|
||||
return item;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void showCurrentPage() {
|
||||
tabFolder.setFocus();
|
||||
}
|
||||
|
||||
public void showPageFor(Object root) {
|
||||
for (int i = 0; i < tabFolder.getItemCount(); i++) {
|
||||
CTabItem item = tabFolder.getItem(i);
|
||||
if (item.getData() == root) {
|
||||
tabFolder.setSelection(item);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void showPageFor(String tabName) {
|
||||
for (int i = 0; i < tabFolder.getItemCount(); i++) {
|
||||
CTabItem item = tabFolder.getItem(i);
|
||||
if (item.getText().equals(tabName)) {
|
||||
tabFolder.setSelection(item);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void disposePageFor(String tabName) {
|
||||
for (int i = 0; i < tabFolder.getItemCount(); i++) {
|
||||
CTabItem item = tabFolder.getItem(i);
|
||||
if (item.getText().equals(tabName)) {
|
||||
item.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public CTabItem createTabItem(IAdaptable root, String initialWorkingDirCmd) {
|
||||
|
||||
CTabItem item = new CTabItem(tabFolder, SWT.CLOSE);
|
||||
setTabTitle(root, item);
|
||||
|
||||
item.setData(root);
|
||||
Composite c = new Composite(tabFolder, SWT.NONE);
|
||||
c.setLayout(new FillLayout());
|
||||
|
||||
tabFolder.getParent().layout(true);
|
||||
if (root instanceof IHost) {
|
||||
IHost host = (IHost) root;
|
||||
|
||||
ITerminalConnector connector = new RSETerminalConnector(host);
|
||||
ITerminalViewControl terminalControl = TerminalViewControlFactory
|
||||
.makeControl(this, c,
|
||||
new ITerminalConnector[] { connector });
|
||||
// TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=204796
|
||||
// Specify Encoding for Terminal
|
||||
// try {
|
||||
// terminalControl.setEncoding(host.getDefaultEncoding(true));
|
||||
// } catch (UnsupportedEncodingException e) {
|
||||
// /* ignore and allow fallback to default encoding */
|
||||
// }
|
||||
terminalControl.setConnector(connector);
|
||||
terminalControl.connectTerminal();
|
||||
if (initialWorkingDirCmd != null) {
|
||||
while (!terminalControl.pasteString(initialWorkingDirCmd))
|
||||
;
|
||||
}
|
||||
item.setData(DATA_KEY_CONTROL, terminalControl);
|
||||
|
||||
}
|
||||
item.setControl(c);
|
||||
tabFolder.setSelection(item);
|
||||
item.addDisposeListener(new DisposeListener() {
|
||||
|
||||
public void widgetDisposed(DisposeEvent e) {
|
||||
Object source = e.getSource();
|
||||
if (source instanceof CTabItem) {
|
||||
CTabItem currentItem = (CTabItem) source;
|
||||
Object data = currentItem.getData(DATA_KEY_CONTROL);
|
||||
if (data instanceof ITerminalViewControl) {
|
||||
((ITerminalViewControl) data).disposeTerminal();
|
||||
}
|
||||
data = currentItem.getData();
|
||||
if (data instanceof IHost) {
|
||||
TerminalServiceHelper.removeTerminalElementFromHost(
|
||||
currentItem, (IHost) data);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
setupContextMenus();
|
||||
return item;
|
||||
|
||||
}
|
||||
|
||||
protected void setupActions() {
|
||||
fActionEditCopy = new TerminalActionCopy(this);
|
||||
fActionEditCut = new TerminalActionCut(this);
|
||||
fActionEditPaste = new TerminalActionPaste(this);
|
||||
fActionEditClearAll = new TerminalActionClearAll(this);
|
||||
fActionEditSelectAll = new TerminalActionSelectAll(this);
|
||||
}
|
||||
|
||||
protected void setupContextMenus() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
|
||||
if (menu == null) {
|
||||
MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
|
||||
menu = menuMgr.createContextMenu(tabFolder);
|
||||
loadContextMenus(menuMgr);
|
||||
TerminalContextMenuHandler contextMenuHandler = new TerminalContextMenuHandler();
|
||||
menuMgr.addMenuListener(contextMenuHandler);
|
||||
menu.addMenuListener(contextMenuHandler);
|
||||
}
|
||||
Control ctlText = terminalViewControl.getControl();
|
||||
ctlText.setMenu(menu);
|
||||
}
|
||||
|
||||
protected void loadContextMenus(IMenuManager menuMgr) {
|
||||
menuMgr.add(fActionEditCopy);
|
||||
menuMgr.add(fActionEditPaste);
|
||||
menuMgr.add(new Separator());
|
||||
menuMgr.add(fActionEditClearAll);
|
||||
menuMgr.add(fActionEditSelectAll);
|
||||
menuMgr.add(new Separator());
|
||||
|
||||
// Other plug-ins can contribute there actions here
|
||||
menuMgr.add(new Separator("Additions")); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void onEditCopy() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
String selection = terminalViewControl.getSelection();
|
||||
|
||||
if (!selection.equals("")) {//$NON-NLS-1$
|
||||
terminalViewControl.copy();
|
||||
} else {
|
||||
terminalViewControl.sendKey('\u0003');
|
||||
}
|
||||
}
|
||||
|
||||
public void updateEditCopy() {
|
||||
boolean bEnabled = true;
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
if (fMenuAboutToShow) {
|
||||
bEnabled = terminalViewControl.getSelection().length() > 0;
|
||||
}
|
||||
|
||||
fActionEditCopy.setEnabled(bEnabled);
|
||||
}
|
||||
|
||||
public void onEditCut() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
terminalViewControl.sendKey('\u0018');
|
||||
}
|
||||
|
||||
public void updateEditCut() {
|
||||
boolean bEnabled;
|
||||
|
||||
bEnabled = !fMenuAboutToShow;
|
||||
fActionEditCut.setEnabled(bEnabled);
|
||||
}
|
||||
|
||||
public void onEditPaste() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
terminalViewControl.paste();
|
||||
}
|
||||
|
||||
public void updateEditPaste() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
String strText = (String) terminalViewControl.getClipboard()
|
||||
.getContents(TextTransfer.getInstance());
|
||||
|
||||
boolean bEnabled = ((strText != null) && (!strText.equals("")));//$NON-NLS-1$
|
||||
|
||||
fActionEditPaste.setEnabled(bEnabled);
|
||||
}
|
||||
|
||||
public void onEditClearAll() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
terminalViewControl.clearTerminal();
|
||||
}
|
||||
|
||||
public void updateEditClearAll() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
fActionEditClearAll.setEnabled(!terminalViewControl.isEmpty());
|
||||
}
|
||||
|
||||
public void onEditSelectAll() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
terminalViewControl.selectAll();
|
||||
}
|
||||
|
||||
public void updateEditSelectAll() {
|
||||
ITerminalViewControl terminalViewControl = getCurrentTerminalViewControl();
|
||||
if (terminalViewControl == null)
|
||||
return;
|
||||
fActionEditSelectAll.setEnabled(!terminalViewControl.isEmpty());
|
||||
}
|
||||
|
||||
private void setTabTitle(IAdaptable root, CTabItem titem) {
|
||||
ISystemViewElementAdapter va = (ISystemViewElementAdapter) root
|
||||
.getAdapter(ISystemViewElementAdapter.class);
|
||||
if (va != null) {
|
||||
updateWithUniqueTitle(va.getName(root), titem);
|
||||
titem.setImage(va.getImageDescriptor(root).createImage());
|
||||
}
|
||||
}
|
||||
|
||||
public void setState(TerminalState state) {
|
||||
// terminalControl.setState(state);
|
||||
}
|
||||
|
||||
public void setTerminalTitle(String title) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public boolean hasCommandInputField() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isScrollLock() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onTerminalConnect() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void onTerminalDisconnect() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void onTerminalFontChanged() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void onTerminalNewTerminal() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void onTerminalSettings() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setCommandInputField(boolean on) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setScrollLock(boolean b) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
private void updateWithUniqueTitle(String title, CTabItem currentItem) {
|
||||
CTabItem[] items = tabFolder.getItems();
|
||||
int increment = 1;
|
||||
String temp = title;
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
if (items[i] != currentItem) {
|
||||
String name = items[i].getText();
|
||||
if (name != null) {
|
||||
if (name.equals(temp)) {
|
||||
temp = title + " " + increment++; //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
currentItem.setText(temp);
|
||||
}
|
||||
|
||||
private ITerminalViewControl getCurrentTerminalViewControl() {
|
||||
if (tabFolder != null && !tabFolder.isDisposed()) {
|
||||
CTabItem item = tabFolder.getSelection();
|
||||
if (item != null && !item.isDisposed()) {
|
||||
Object data = item.getData(DATA_KEY_CONTROL);
|
||||
if (data instanceof ITerminalViewControl)
|
||||
return ((ITerminalViewControl) data);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,199 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2008 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
|
||||
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
|
||||
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
||||
* Martin Oberhuber (Wind River) - [174945] Remove obsolete icons from rse.shells.ui
|
||||
* Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty()
|
||||
* David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work
|
||||
* Kevin Doyle (IBM) - [198534] Shell Menu Enablement Issue's
|
||||
* Radoslav Gerganov(ProSyst) - [181563] Fix hardcoded Ctrl+Space for remote shell content assist
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from SystemCommandsViewPart
|
||||
* Anna Dushistova (MontaVista) - Adapted from SystemCommandsViewPart
|
||||
********************************************************************************/
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import org.eclipse.jface.action.IMenuListener;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.events.ISystemResourceChangeEvent;
|
||||
import org.eclipse.rse.core.events.ISystemResourceChangeListener;
|
||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
|
||||
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||
import org.eclipse.rse.ui.SystemWidgetHelpers;
|
||||
import org.eclipse.rse.ui.messages.ISystemMessageLine;
|
||||
import org.eclipse.rse.ui.model.ISystemShellProvider;
|
||||
import org.eclipse.rse.ui.view.IRSEViewPart;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.ISelectionListener;
|
||||
import org.eclipse.ui.ISelectionService;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.eclipse.ui.part.ViewPart;
|
||||
|
||||
public class TerminalViewer extends ViewPart implements ISelectionListener,
|
||||
SelectionListener, ISelectionChangedListener,
|
||||
ISystemResourceChangeListener, ISystemShellProvider, IRSEViewPart,
|
||||
IMenuListener, ISystemMessageLine {
|
||||
|
||||
private TerminalViewTab tabFolder;
|
||||
|
||||
public static String VIEW_ID = "org.eclipse.rse.terminals.ui.view.TerminalView"; //$NON-NLS-1$
|
||||
|
||||
public void createPartControl(Composite parent) {
|
||||
tabFolder = new TerminalViewTab(parent, this);
|
||||
tabFolder.getFolder().addSelectionListener(this);
|
||||
|
||||
ISelectionService selectionService = getSite().getWorkbenchWindow()
|
||||
.getSelectionService();
|
||||
selectionService.addSelectionListener(this);
|
||||
|
||||
SystemWidgetHelpers.setHelp(tabFolder, RSEUIPlugin.HELPPREFIX
|
||||
+ "ucmd0000"); //$NON-NLS-1$
|
||||
|
||||
ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry();
|
||||
|
||||
registry.addSystemResourceChangeListener(this);
|
||||
|
||||
fillLocalToolBar();
|
||||
|
||||
}
|
||||
|
||||
public void setFocus() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void systemResourceChanged(ISystemResourceChangeEvent event) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public Shell getShell() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public Viewer getRSEViewer() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public void menuAboutToShow(IMenuManager manager) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void clearErrorMessage() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void clearMessage() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public SystemMessage getSystemErrorMessage() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setErrorMessage(String message) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setErrorMessage(SystemMessage message) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setErrorMessage(Throwable exc) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setMessage(SystemMessage message) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void fillLocalToolBar() {
|
||||
if (tabFolder != null) {
|
||||
// IActionBars actionBars = getViewSite().getActionBars();
|
||||
//
|
||||
// if (_shellActions == null || _shellActions.size() == 0)
|
||||
// {
|
||||
// updateShellActions();
|
||||
// _clearAction = new ClearAction();
|
||||
// _printTableAction = new SystemTablePrintAction(getTitle(), null);
|
||||
// IMenuManager menuManager = actionBars.getMenuManager();
|
||||
// addMenuItems(menuManager);
|
||||
// _statusLine = actionBars.getStatusLineManager();
|
||||
// }
|
||||
// IToolBarManager toolBarManager = actionBars.getToolBarManager();
|
||||
// addToolBarItems(toolBarManager);
|
||||
//
|
||||
// updateActionStates();
|
||||
}
|
||||
}
|
||||
|
||||
public TerminalViewTab getTabFolder() {
|
||||
return tabFolder;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2003, 2007 IBM Corporation and others. 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
|
||||
*
|
||||
* Initial Contributors:
|
||||
* The following IBM employees contributed to the Remote System Explorer
|
||||
* component that contains this file: David McKnight, Kushal Munir,
|
||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* Martin Oberhuber (Wind River) - [168870] refactor org.eclipse.rse.core package of the UI plugin
|
||||
* Yu-Fen Kuo (MontaVista) - Adapted from SystemCommandsUI
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.internal.terminals.ui.views;
|
||||
|
||||
import org.eclipse.rse.internal.terminals.ui.Activator;
|
||||
import org.eclipse.ui.IWorkbenchPage;
|
||||
import org.eclipse.ui.PartInitException;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
/**
|
||||
* A singleton class which has handle to the terminals view
|
||||
*/
|
||||
public class TerminalsUI {
|
||||
|
||||
// singleton instance
|
||||
private static TerminalsUI instance;
|
||||
private static TerminalViewer viewer;
|
||||
|
||||
private TerminalsUI() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the singleton instance.
|
||||
*
|
||||
* @return the singleton object of this type
|
||||
*/
|
||||
public static TerminalsUI getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new TerminalsUI();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public TerminalViewer activateTerminalsView() {
|
||||
try {
|
||||
IWorkbenchPage page = PlatformUI.getWorkbench()
|
||||
.getActiveWorkbenchWindow().getActivePage();
|
||||
viewer = (TerminalViewer) page.showView(TerminalViewer.VIEW_ID);
|
||||
page.bringToTop(viewer);
|
||||
} catch (PartInitException e) {
|
||||
e.printStackTrace();
|
||||
Activator.logError(Activator
|
||||
.getResourceString("TerminalsUI.cannotOpenView.error"), e); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
return viewer;
|
||||
}
|
||||
|
||||
public static TerminalViewer getTerminalsView() {
|
||||
return viewer;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue