From c6f49fccf678a36d01c4b8e87a281400591201a1 Mon Sep 17 00:00:00 2001 From: Martin Oberhuber < martin.oberhuber@windriver.com> Date: Fri, 4 Jun 2010 12:40:37 +0000 Subject: [PATCH] Bug 314977 - [terminal][local] Confusing error when trying to install Local Terminal on Windows from Helios --- .../org.eclipse.rse.build/maps/terminal.map | 4 +-- .../META-INF/MANIFEST.MF | 1 - .../plugin.properties | 2 +- .../local/LocalTerminalConnector.java | 32 +++++++++++++++---- .../terminal/local/LocalTerminalMessages.java | 5 ++- .../local/LocalTerminalMessages.properties | 2 ++ .../terminal/view/ViewMessages.properties | 4 +-- 7 files changed, 37 insertions(+), 13 deletions(-) diff --git a/releng/org.eclipse.rse.build/maps/terminal.map b/releng/org.eclipse.rse.build/maps/terminal.map index a40d3640fde..d023bfb3e23 100644 --- a/releng/org.eclipse.rse.build/maps/terminal.map +++ b/releng/org.eclipse.rse.build/maps/terminal.map @@ -8,9 +8,9 @@ feature@org.eclipse.tm.terminal.telnet=v201005032000,:pserver:anonymous:none@dev feature@org.eclipse.tm.terminal.test=v200905272300,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.test-feature feature@org.eclipse.tm.terminal.view=v201006030830,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view-feature plugin@org.eclipse.tm.terminal=v201006030830,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal -plugin@org.eclipse.tm.terminal.local=v201006030730,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local +plugin@org.eclipse.tm.terminal.local=v201006041240,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local plugin@org.eclipse.tm.terminal.serial=v200905272300,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.serial plugin@org.eclipse.tm.terminal.ssh=v201005271030,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.ssh plugin@org.eclipse.tm.terminal.telnet=v200909160005,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.telnet plugin@org.eclipse.tm.terminal.test=v201005220050,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.test -plugin@org.eclipse.tm.terminal.view=v201006030830,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view \ No newline at end of file +plugin@org.eclipse.tm.terminal.view=v201006041240,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view \ No newline at end of file diff --git a/terminal/org.eclipse.tm.terminal.local/META-INF/MANIFEST.MF b/terminal/org.eclipse.tm.terminal.local/META-INF/MANIFEST.MF index b192be99f47..8682cfaeb28 100644 --- a/terminal/org.eclipse.tm.terminal.local/META-INF/MANIFEST.MF +++ b/terminal/org.eclipse.tm.terminal.local/META-INF/MANIFEST.MF @@ -17,5 +17,4 @@ Require-Bundle: org.eclipse.tm.terminal;bundle-version="[3.0.0,3.1.0)", Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy Eclipse-LazyStart: true -Eclipse-PlatformFilter: (!(osgi.os=win32)) Import-Package: org.eclipse.core.variables diff --git a/terminal/org.eclipse.tm.terminal.local/plugin.properties b/terminal/org.eclipse.tm.terminal.local/plugin.properties index 9fd177c567a..44ea6949c36 100644 --- a/terminal/org.eclipse.tm.terminal.local/plugin.properties +++ b/terminal/org.eclipse.tm.terminal.local/plugin.properties @@ -17,4 +17,4 @@ providerName=Eclipse.org - DSDP terminalLaunch=Terminal terminalLaunchDescription=Run a program in a terminal -localConnection=Local program +localConnection=Local Program diff --git a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalConnector.java b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalConnector.java index 301ad7f85a8..ad6b6c70b58 100644 --- a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalConnector.java +++ b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalConnector.java @@ -8,13 +8,14 @@ * Contributors: * Mirko Raner - [196337] initial implementation; some methods adapted from * org.eclipse.tm.terminal.ssh/SshConnector + * Mirko Raner - [314977] Dynamically disable when no PTY is available **************************************************************************************************/ package org.eclipse.tm.internal.terminal.local; import java.io.OutputStream; -import java.text.Format; -import java.text.MessageFormat; + +import org.eclipse.cdt.utils.Platform; import org.eclipse.cdt.utils.pty.PTY; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; @@ -31,6 +32,7 @@ import org.eclipse.debug.core.model.IStreamMonitor; import org.eclipse.debug.core.model.IStreamsProxy; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.tm.internal.terminal.local.launch.LocalTerminalLaunchUtilities; @@ -50,7 +52,7 @@ import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnect * vi editor). * * @author Mirko Raner - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class LocalTerminalConnector extends TerminalConnectorImpl implements IDebugEventSetListener { @@ -80,6 +82,25 @@ implements IDebugEventSetListener { settings = new LocalTerminalSettings(); } + /** + * Initializes the connector. This method checks whether a pty driver is available + * and will fail if that is not the case. + * + * @throws Exception if the connector could not be initialized + */ + public void initialize() throws Exception { + + super.initialize(); + if (!PTY.isSupported()) { + + final String OS = Platform.getOS(); + final String ARCH = Platform.getOSArch(); + String message = NLS.bind(LocalTerminalMessages.errorNoPTYSupport, OS, ARCH); + IStatus status = new Status(IStatus.WARNING, LocalTerminalActivator.PLUGIN_ID, message); + throw new CoreException(status); + } + } + /** * Loads the connector's settings from the specified store. * @@ -191,9 +212,8 @@ implements IDebugEventSetListener { Shell shell = Display.getDefault().getActiveShell(); String title = LocalTerminalMessages.errorTitleCouldNotConnectToTerminal; - Format text; - text = new MessageFormat(LocalTerminalMessages.errorLaunchConfigurationNoLongerExists); - String message = text.format(new Object[] {configurationName}); + String text = LocalTerminalMessages.errorLaunchConfigurationNoLongerExists; + String message = NLS.bind(text, configurationName); IStatus status = new Status(IStatus.ERROR, LocalTerminalActivator.PLUGIN_ID, message); ErrorDialog.openError(shell, title, null, status); control.setState(TerminalState.CLOSED); diff --git a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.java b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.java index d31fd6475cb..9f1689f4114 100644 --- a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.java +++ b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.java @@ -18,7 +18,7 @@ import org.eclipse.osgi.util.NLS; * messages used by the Local Terminal Connector. * * @author Mirko Raner - * @version $Revision: 1.3 $ + * @version $Revision: 1.4 $ */ public class LocalTerminalMessages extends NLS { @@ -89,6 +89,9 @@ public class LocalTerminalMessages extends NLS { /** The question title for confirming deletion of a launch configuration. */ public static String questionTitleDeleteLaunchConfiguration; + /** The error message for platforms that don't support ptys. */ + public static String errorNoPTYSupport; + /** The error message for attempting to directly launch a Terminal launch configuration. */ public static String errorDirectLaunch; diff --git a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.properties b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.properties index 6a8d5a985e5..f3238b967ad 100644 --- a/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.properties +++ b/terminal/org.eclipse.tm.terminal.local/src/org/eclipse/tm/internal/terminal/local/LocalTerminalMessages.properties @@ -31,6 +31,8 @@ invalidWorkingDirectory=The path {0} is not a directory and cannot be used as wo for ''{1}'' questionDeleteLaunchConfiguration=Do you wish to delete the selected launch configuration? questionTitleDeleteLaunchConfiguration=Confirm Launch Configuration Deletion +errorNoPTYSupport=CDT PTY support is not available on your host ({0}.{1}).\n\n\ +The Local Terminal connector has been disabled. errorDirectLaunch=Terminal launch configurations can only be launched from the Terminal view. \ Please open the Terminal view and click the view's Settings button to select and launch a local \ Terminal. diff --git a/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties b/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties index e7a350c1688..3b7ad376daa 100644 --- a/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties +++ b/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2003, 2009 Wind River Systems, Inc. and others. +# Copyright (c) 2003, 2010 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 @@ -39,4 +39,4 @@ STATE_CONNECTING = CONNECTING... STATE_CLOSED = CLOSED CANNOT_INITIALIZE = Cannot initialize {0}:\n{1} -CONNECTOR_NOT_AVAILABLE = Connector {0} not available! +CONNECTOR_NOT_AVAILABLE = Connector {0} is not available!