1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Bug 392092 - Extend ITerminalView API to allow programmatically opening a UI-less connector

This commit is contained in:
Kris De Volder 2012-11-06 11:49:21 +01:00 committed by Uwe Stieber
parent ef36e367bc
commit e9a193a3a9
2 changed files with 48 additions and 18 deletions

View file

@ -10,19 +10,33 @@
* Martin Oberhuber (Wind River) - [227537] moved actions from terminal.view to terminal plugin
* Michael Scharf (Wind River) - [172483] switch between connections
* Michael Scharf (Wind River) - [240023] Get rid of the terminal's "Pin" button
* Kris De Volder (VMWare) - [392092] Extend ITerminalView API to allow programmatically opening a UI-less connector
*******************************************************************************/
package org.eclipse.tm.internal.terminal.view;
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
public interface ITerminalView {
/**
* Create a new terminal connection within the view.
*/
void onTerminalNewTerminal();
/**
* Create a new Terminal view.
* Programmatically create a new terminal connection within the view. This method
* does the same thing as onTerminalNewTerminal, but instead of popping up a settings
* dialog to allow the user fill in connection details, a connector is provided as
* a parameter. The connector should have all of its details pre-configured so it can
* be opened without requiring user input.
*/
void newTerminal(ITerminalConnector c);
/**
* Create a new Terminal view.
*/
void onTerminalNewView();
void onTerminalConnect();
void onTerminalDisconnect();
void onTerminalSettings();

View file

@ -22,11 +22,12 @@
* Michael Scharf (Wind River) - [172483] switch between connections
* Michael Scharf (Wind River) - [240023] Get rid of the terminal's "Pin" button
* Michael Scharf (Wind River) - [196454] Initial connection settings dialog should not be blank
* Michael Scharf (Wind River) - [241096] Secondary terminals in same view do not observe the "invert colors" Preference
* Michael Scharf (Wind River) - [241096] Secondary terminals in same view do not observe the "invert colors" Preference
* Michael Scharf (Wind River) - [262996] get rid of TerminalState.OPENED
* Martin Oberhuber (Wind River) - [205486] Enable ScrollLock
* Ahmet Alptekin (Tubitak) - [244405] Add a UI Control for setting the Terminal's encoding
* Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
* Kris De Volder (VMWare) - [392092] Extend ITerminalView API to allow programmatically opening a UI-less connector
*******************************************************************************/
package org.eclipse.tm.internal.terminal.view;
@ -46,7 +47,6 @@ import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.MenuListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@ -93,7 +93,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
private static final String STORE_CONNECTION_TYPE = "ConnectionType"; //$NON-NLS-1$
private static final String STORE_SETTING_SUMMARY = "SettingSummary"; //$NON-NLS-1$
private static final String STORE_TITLE = "Title"; //$NON-NLS-1$
public static final String FONT_DEFINITION = ITerminalConstants.FONT_DEFINITION;
@ -103,7 +103,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
// TODO (scharf): this decorator is only there to deal wit the common
// actions. Find a better solution.
TerminalViewControlDecorator fCtlDecorator=new TerminalViewControlDecorator();
protected TerminalAction fActionTerminalNewTerminal;
protected TerminalAction fActionTerminalConnect;
@ -140,7 +140,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
private PageBook fPageBook;
/**
* This listener updates both, the view and the
* This listener updates both, the view and the
* ITerminalViewConnection.
*
*/
@ -181,9 +181,9 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
PlatformUI.getWorkbench().getDisplay().syncExec(runnable);
// else should not happen and we ignore it...
}
}
public TerminalView() {
Logger
.log("==============================================================="); //$NON-NLS-1$
@ -219,6 +219,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
uniqueTitle=title+" "+i++; //$NON-NLS-1$
}
}
/**
* Display a new Terminal view. This method is called when the user clicks the New
* Terminal button in any Terminal view's toolbar.
@ -231,6 +232,21 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
}
}
/**
* Programmatically create a new terminal connection within the view. This method
* does the same thing as onTerminalNewTerminal, but instead of popping up a settings
* dialog to allow the user fill in connection details, a connector is provided as
* a parameter. The connector should have all of its details pre-configured so it can
* be opened without requiring user input.
*/
public void newTerminal(ITerminalConnector c) {
this.setupControls();
if(c!=null) {
this.setConnector(c);
this.onTerminalConnect();
}
}
public void onTerminalNewView() {
try {
// The second argument to showView() is a unique String identifying the
@ -257,7 +273,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
}
}
public void onTerminalConnect() {
//if (isConnected())
if (fCtlTerminal.getState()!=TerminalState.CLOSED)
@ -320,7 +336,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
// load the state from the settings
// first load from fStore and then from the preferences.
ITerminalConnector c = loadSettings(new LayeredSettingsStore(fStore,getPreferenceSettingsStore()), connectors);
// if we have no connector show the one from the settings
// if we have no connector show the one from the settings
if(fCtlTerminal.getTerminalConnector()!=null)
c=fCtlTerminal.getTerminalConnector();
TerminalSettingsDlg dlgTerminalSettings = new TerminalSettingsDlg(getViewSite().getShell(),connectors,c);
@ -347,12 +363,12 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
setEncoding(dlgTerminalSettings.getEncoding());
return dlgTerminalSettings.getConnector();
}
private void setEncoding(String encoding) {
getActiveConnection().setEncoding(encoding);
updateSummary();
}
private void setConnector(ITerminalConnector connector) {
fCtlTerminal.setConnector(connector);
}
@ -369,7 +385,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
getViewSite().getActionBars().getStatusLineManager().setMessage(
summary);
setTitleToolTip(getPartName()+": "+summary); //$NON-NLS-1$
}
public void updateSummary() {
setViewSummary(getActiveConnection().getFullSummary());
@ -425,7 +441,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
Logger.log("entered."); //$NON-NLS-1$
JFaceResources.getFontRegistry().removeListener(fPropertyChangeHandler);
// dispose all connections
ITerminalViewConnection[] conn=fMultiConnectionManager.getConnections();
for (int i = 0; i < conn.length; i++) {
@ -492,9 +508,9 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
/**
* The preference setting store is used to save the settings that are
* shared between all views.
* shared between all views.
* @return the settings store for the connection based on the preferences.
*
*
*/
private PreferenceSettingStore getPreferenceSettingsStore() {
return new PreferenceSettingStore(TerminalViewPlugin.getDefault().getPluginPreferences(),PREF_CONNECTORS);
@ -509,7 +525,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
// the last saved connector becomes the default
store.put(STORE_CONNECTION_TYPE,connector.getId());
}
}
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
@ -650,7 +666,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
setTerminalControl(ctrl);
refresh();
}
}
}
}
/**