diff options
author | Uwe Stieber | 2012-01-17 08:16:19 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-01-18 07:51:16 +0000 |
commit | a23c575879a07779e14c26d512ceeba6bc8d1027 (patch) | |
tree | 1ac8075ac3c4f25ceaab044a851ca5ab9117ace7 /target_explorer | |
parent | 2f62f47500af432035f03990a49036ef86fd6888 (diff) | |
download | org.eclipse.tcf-a23c575879a07779e14c26d512ceeba6bc8d1027.tar.gz org.eclipse.tcf-a23c575879a07779e14c26d512ceeba6bc8d1027.tar.xz org.eclipse.tcf-a23c575879a07779e14c26d512ceeba6bc8d1027.zip |
Target Explorer: Fix Terminal tabs not listening to preference changes
Diffstat (limited to 'target_explorer')
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java index c06c0367b..3b7994c11 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/tabs/TabFolderManager.java @@ -17,6 +17,8 @@ import java.util.List; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.core.runtime.Preferences; +import org.eclipse.core.runtime.Preferences.PropertyChangeEvent; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.viewers.ISelection; @@ -37,6 +39,9 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; +import org.eclipse.tcf.te.runtime.events.EventManager; +import org.eclipse.tcf.te.ui.events.AbstractEventListener; +import org.eclipse.tcf.te.ui.swt.DisplayUtil; import org.eclipse.tcf.te.ui.terminals.activator.UIPlugin; import org.eclipse.tcf.te.ui.terminals.events.SelectionChangedBroadcastEvent; import org.eclipse.tcf.te.ui.terminals.interfaces.ITerminalsView; @@ -46,16 +51,15 @@ 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.tcf.te.runtime.events.EventManager; -import org.eclipse.tcf.te.ui.events.AbstractEventListener; -import org.eclipse.tcf.te.ui.swt.DisplayUtil; +import org.eclipse.tm.internal.terminal.view.TerminalPreferencePage; +import org.eclipse.tm.internal.terminal.view.TerminalViewPlugin; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDEEncoding; /** * Terminals tab folder manager. */ -@SuppressWarnings("restriction") +@SuppressWarnings({ "restriction", "deprecation" }) public class TabFolderManager extends PlatformObject implements ISelectionProvider { // Reference to the parent terminal consoles view private final ITerminalsView parentView; @@ -408,7 +412,7 @@ public class TabFolderManager extends PlatformObject implements ISelectionProvid * * @param item The tab item. Must be not <code>null</code>. */ - protected void setupTerminalTabListeners(CTabItem item) { + protected void setupTerminalTabListeners(final CTabItem item) { Assert.isNotNull(item); // Create and associate the disposal listener @@ -418,11 +422,42 @@ public class TabFolderManager extends PlatformObject implements ISelectionProvid final IPropertyChangeListener propertyChangeListener = doCreateTerminalTabPropertyChangeListener(item); // Register to the JFace font registry JFaceResources.getFontRegistry().addListener(propertyChangeListener); + + // Create and register the Terminal view plugin preferences property change listener + final Preferences.IPropertyChangeListener prefsPropertyChangeListener = new Preferences.IPropertyChangeListener() { + + /* (non-Javadoc) + * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent) + */ + @Override + public void propertyChange(PropertyChangeEvent event) { + if (item.isDisposed()) return; + + if(event.getProperty().equals(TerminalPreferencePage.PREF_BUFFERLINES) + || event.getProperty().equals(TerminalPreferencePage.PREF_INVERT_COLORS)) { + Preferences preferences = TerminalViewPlugin.getDefault().getPluginPreferences(); + int bufferLineLimit = preferences.getInt(TerminalPreferencePage.PREF_BUFFERLINES); + boolean invert = preferences.getBoolean(TerminalPreferencePage.PREF_INVERT_COLORS); + + // Get the terminal control from the tab item + if (item.getData() instanceof ITerminalViewControl) { + ITerminalViewControl terminal = (ITerminalViewControl)item.getData(); + terminal.setBufferLineLimit(bufferLineLimit); + terminal.setInvertedColors(invert); + } + } + } + }; + + // Register to the Terminal view plugin preferences + TerminalViewPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(prefsPropertyChangeListener); + // Remove the listener from the JFace font registry if the tab gets disposed item.addDisposeListener(new DisposeListener() { @Override - public void widgetDisposed(DisposeEvent e) { + public void widgetDisposed(DisposeEvent e) { JFaceResources.getFontRegistry().removeListener(propertyChangeListener); + TerminalViewPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(prefsPropertyChangeListener); } }); } |