Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java')
-rw-r--r--terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java359
1 files changed, 0 insertions, 359 deletions
diff --git a/terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java b/terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java
deleted file mode 100644
index e06206e2a..000000000
--- a/terminals/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/services/TerminalService.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011, 2015 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:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.tcf.te.ui.terminals.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tcf.te.core.terminals.activator.CoreBundleActivator;
-import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService;
-import org.eclipse.tcf.te.core.terminals.interfaces.ITerminalTabListener;
-import org.eclipse.tcf.te.core.terminals.interfaces.constants.ITerminalsConnectorConstants;
-import org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate;
-import org.eclipse.tcf.te.ui.terminals.interfaces.IUIConstants;
-import org.eclipse.tcf.te.ui.terminals.launcher.LauncherDelegateManager;
-import org.eclipse.tcf.te.ui.terminals.manager.ConsoleManager;
-import org.eclipse.tcf.te.ui.terminals.nls.Messages;
-import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Terminal service implementation.
- */
-@SuppressWarnings("restriction")
-public class TerminalService implements ITerminalService {
- /**
- * The registered terminal tab dispose listeners.
- */
- private final ListenerList terminalTabListeners = new ListenerList();
-
- // Flag to remember if the terminal view has been restored or not.
- private boolean fRestoringView;
-
- // Terminal tab events
-
- /**
- * A terminal tab got disposed.
- */
- public static final int TAB_DISPOSED = 1;
-
- /**
- * Common terminal service runnable implementation.
- */
- protected static abstract class TerminalServiceRunnable {
-
- /**
- * Invoked to execute the terminal service runnable.
- *
- * @param id The terminals view id or <code>null</code>.
- * @param secondaryId The terminals view secondary id or <code>null</code>.
- * @param title The terminal tab title. Must not be <code>null</code>.
- * @param connector The terminal connector. Must not be <code>null</code>.
- * @param data The custom terminal data node or <code>null</code>.
- * @param done The callback to invoke if the operation finished or <code>null</code>.
- */
- public abstract void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, Done done);
-
- /**
- * Returns if or if not to execute the runnable asynchronously.
- * <p>
- * The method returns per default <code>true</code>. Overwrite to
- * modify the behavior.
- *
- * @return <code>True</code> to execute the runnable asynchronously, <code>false</code> otherwise.
- */
- public boolean isExecuteAsync() { return true; }
- }
-
- /**
- * Constructor
- */
- public TerminalService() {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService#addTerminalTabListener(org.eclipse.tcf.te.core.terminals.interfaces.ITerminalTabListener)
- */
- @Override
- public final void addTerminalTabListener(ITerminalTabListener listener) {
- Assert.isNotNull(listener);
- terminalTabListeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService#removeTerminalTabListener(org.eclipse.tcf.te.core.terminals.interfaces.ITerminalTabListener)
- */
- @Override
- public final void removeTerminalTabListener(ITerminalTabListener listener) {
- Assert.isNotNull(listener);
- terminalTabListeners.remove(listener);
- }
-
- /**
- * Convenience method for notifying the registered terminal tab listeners.
- *
- * @param event The terminal tab event.
- * @param source The disposed tab item. Must not be <code>null</code>.
- * @param data The custom data object associated with the disposed tab item or <code>null</code>.
- */
- public final void fireTerminalTabEvent(final int event, final Object source, final Object data) {
- Assert.isNotNull(source);
-
- // If no listener is registered, we are done here
- if (terminalTabListeners.isEmpty()) return;
-
- // Get the list or currently registered listeners
- Object[] l = terminalTabListeners.getListeners();
- // Loop the registered terminal tab listeners and invoke the proper method
- for (int i = 0; i < l.length; i++) {
- final ITerminalTabListener listener = (ITerminalTabListener) l[i];
- ISafeRunnable job = new ISafeRunnable() {
- @Override
- public void handleException(Throwable exception) {
- // already logged in Platform#run()
- }
-
- @Override
- public void run() throws Exception {
- switch (event) {
- case TAB_DISPOSED:
- listener.terminalTabDisposed(source, data);
- break;
- default:
- }
- }
- };
- SafeRunner.run(job);
- }
- }
-
- /**
- * Executes the given runnable operation and invokes the given callback, if any,
- * after the operation finished.
- *
- * @param properties The terminal properties. Must not be <code>null</code>.
- * @param runnable The terminal service runnable. Must not be <code>null</code>.
- * @param done The callback to invoke if the operation has been finished or <code>null</code>.
- */
- protected final void executeServiceOperation(final Map<String, Object> properties, final TerminalServiceRunnable runnable, final Done done) {
- Assert.isNotNull(properties);
- Assert.isNotNull(runnable);
-
- // Extract the properties
- String id = (String)properties.get(ITerminalsConnectorConstants.PROP_ID);
- String secondaryId = (String)properties.get(ITerminalsConnectorConstants.PROP_SECONDARY_ID);
- String title = (String)properties.get(ITerminalsConnectorConstants.PROP_TITLE);
- Object data = properties.get(ITerminalsConnectorConstants.PROP_DATA);
-
- // Normalize the terminals console view id
- id = normalizeId(id, data);
- // Normalize the terminal console tab title
- title = normalizeTitle(title, data);
-
- // Create the terminal connector instance
- final ITerminalConnector connector = createTerminalConnector(properties);
- if (connector == null) {
- // Properties contain invalid connector arguments
- if (done != null) {
- Exception e = new IllegalArgumentException(Messages.TerminalService_error_cannotCreateConnector);
- done.done(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), e.getLocalizedMessage(), e));
- }
- return;
- }
-
- // Finalize the used variables
- final String finId = id;
- final String finSecondaryId = secondaryId;
- final String finTitle = title;
- final Object finData = data;
-
- // Execute the operation
- if (!runnable.isExecuteAsync()) {
- runnable.run(finId, finSecondaryId, finTitle, connector, finData, done);
- }
- else {
- try {
- Display display = PlatformUI.getWorkbench().getDisplay();
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- runnable.run(finId, finSecondaryId, finTitle, connector, finData, done);
- }
- });
- }
- catch (Exception e) {
- // if display is disposed, silently ignore.
- }
- }
- }
-
- /**
- * Normalize the terminals view id.
- *
- * @param id The terminals view id or <code>null</code>.
- * @param data The custom data object or <code>null</code>.
- *
- * @return The normalized terminals console view id.
- */
- protected String normalizeId(String id, Object data) {
- return id != null ? id : IUIConstants.ID;
- }
-
- /**
- * Normalize the terminal tab title.
- *
- * @param title The terminal tab title or <code>null</code>.
- * @param data The custom data object or <code>null</code>.
- *
- * @return The normalized terminal tab title.
- */
- protected String normalizeTitle(String title, Object data) {
- // If the title is explicitly specified, return as is
- if (title != null) return title;
-
- // Return the default console title in all other cases
- return Messages.TerminalService_defaultTitle;
- }
-
- /**
- * Creates the terminal connector configured within the given properties.
- *
- * @param properties The terminal console properties. Must not be <code>null</code>.
- * @return The terminal connector or <code>null</code>.
- */
- protected ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
- Assert.isNotNull(properties);
-
- // The terminal connector result object
- ITerminalConnector connector = null;
-
- // Get the launcher delegate id from the properties
- String delegateId = (String)properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
- if (delegateId != null) {
- // Get the launcher delegate
- ILauncherDelegate delegate = LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false);
- if (delegate != null) {
- // Create the terminal connector
- connector = delegate.createTerminalConnector(properties);
- }
- }
-
- return connector;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService#openConsole(java.util.Map, org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done)
- */
- @Override
- public void openConsole(final Map<String, Object> properties, final Done done) {
- Assert.isNotNull(properties);
- final boolean restoringView = fRestoringView;
-
- executeServiceOperation(properties, new TerminalServiceRunnable() {
- @Override
- @SuppressWarnings("synthetic-access")
- public void run(final String id, final String secondaryId, final String title,
- final ITerminalConnector connector, final Object data, final Done done) {
- if (restoringView) {
- doRun(id, secondaryId, title, connector, data, done);
- } else {
- // First, restore the view. This opens consoles from the memento
- fRestoringView = true;
- ConsoleManager.getInstance().showConsoleView(id, secondaryId);
- fRestoringView = false;
-
- // After that schedule opening the requested console
- try {
- Display display = PlatformUI.getWorkbench().getDisplay();
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- doRun(id, secondaryId, title, connector, data, done);
- }
- });
- }
- catch (Exception e) {
- // if display is disposed, silently ignore.
- }
- }
- }
-
- public void doRun(String id, String secondaryId, String title, ITerminalConnector connector, Object data, Done done) {
- // Determine the terminal encoding
- String encoding = (String)properties.get(ITerminalsConnectorConstants.PROP_ENCODING);
- // Create the flags to pass on to openConsole
- Map<String, Boolean> flags = new HashMap<String, Boolean>();
- flags.put("activate", Boolean.TRUE); //$NON-NLS-1$
- if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) {
- flags.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, (Boolean)properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW));
- }
- if (properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT) instanceof Boolean) {
- flags.put(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT, (Boolean)properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT));
- }
- // Open the new console
- CTabItem item;
- if (secondaryId != null)
- item = ConsoleManager.getInstance().openConsole(id, secondaryId, title, encoding, connector, data, flags);
- else
- item = ConsoleManager.getInstance().openConsole(id, title, encoding, connector, data, flags);
- // Associate the original terminal properties with the tab item.
- // This makes it easier to persist the connection data within the memento handler
- if (item != null && !item.isDisposed()) item.setData("properties", properties); //$NON-NLS-1$
-
- // Invoke the callback
- if (done != null) done.done(Status.OK_STATUS);
- }
- }, done);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService#closeConsole(java.util.Map, org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done)
- */
- @Override
- public void closeConsole(final Map<String, Object> properties, final Done done) {
- Assert.isNotNull(properties);
-
- executeServiceOperation(properties, new TerminalServiceRunnable() {
- @Override
- public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, Done done) {
- // Close the console
- ConsoleManager.getInstance().closeConsole(id, title, connector, data);
- // Invoke the callback
- if (done != null) done.done(Status.OK_STATUS);
- }
- }, done);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService#terminateConsole(java.util.Map, org.eclipse.tcf.te.core.terminals.interfaces.ITerminalService.Done)
- */
- @Override
- public void terminateConsole(Map<String, Object> properties, Done done) {
- Assert.isNotNull(properties);
-
- executeServiceOperation(properties, new TerminalServiceRunnable() {
- @Override
- public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, Done done) {
- // Close the console
- ConsoleManager.getInstance().terminateConsole(id, title, connector, data);
- // Invoke the callback
- if (done != null) done.done(Status.OK_STATUS);
- }
- }, done);
- }
-}

Back to the top