Revision: 5998
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=5998&view=rev
Author: gerdwagner
Date: 2010-11-22 18:32:45 +0000 (Mon, 22 Nov 2010)
Log Message:
-----------
Feature request 3030479: New global preference that allows scrollable tabbed pane for Session tabs
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/DockTabDesktopPane.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferences.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferencesBeanInfo.java
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/preferences/I18NStrings.properties
Added Paths:
-----------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/ScrollableTabHandler.java
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/DockTabDesktopPane.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/DockTabDesktopPane.java 2010-11-22 18:30:29 UTC (rev 5997)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/DockTabDesktopPane.java 2010-11-22 18:32:45 UTC (rev 5998)
@@ -1,9 +1,6 @@
package net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.*;
-import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.DockHandle;
-import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.VerticalToggleButton;
-import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.TabHandle;
import net.sourceforge.squirrel_sql.client.gui.mainframe.SquirrelDesktopManager;
import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.ApplicationListener;
@@ -52,6 +49,8 @@
private JPopupMenu _tabRightMouseMenu;
+ private ScrollableTabHandler _scrollableTabHandler;
+
public DockTabDesktopPane(IApplication app)
{
_app = app;
@@ -64,6 +63,7 @@
_split.setLeftComponent(_pnlDock);
+ _scrollableTabHandler = new ScrollableTabHandler(_app, _tabbedPane);
_tabbedPane.addChangeListener(new ChangeListener()
{
@@ -174,6 +174,7 @@
_tabHandles.add(tabHandle);
tabHandle.fireAdded();
_tabbedPane.setSelectedIndex(tabIx);
+ _scrollableTabHandler.tabAdded();
}
private void onDockPanelResized()
@@ -322,7 +323,7 @@
int tabIndex = getTabIndex(tabHandle);
if (-1 != tabIndex)
{
- _tabbedPane.remove(tabIndex);
+ removeTabFromTabbedPane(tabIndex);
}
tabHandle.fireClosed(e);
_tabHandles.remove(tabHandle);
@@ -356,7 +357,7 @@
int tabIndex = getTabIndex(tabHandle);
if(-1 != tabIndex)
{
- _tabbedPane.remove(tabIndex);
+ removeTabFromTabbedPane(tabIndex);
}
////////////////////////////////////////////////////
@@ -386,7 +387,13 @@
}
}
+ private void removeTabFromTabbedPane(int tabIndex)
+ {
+ _tabbedPane.remove(tabIndex);
+ _scrollableTabHandler.tabRemoved();
+ }
+
public IWidget[] getAllWidgets()
{
IWidget[] ret = new IWidget[_tabHandles.size()];
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/ScrollableTabHandler.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/ScrollableTabHandler.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/docktabdesktop/ScrollableTabHandler.java 2010-11-22 18:32:45 UTC (rev 5998)
@@ -0,0 +1,62 @@
+package net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop;
+
+import net.sourceforge.squirrel_sql.client.IApplication;
+
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+
+public class ScrollableTabHandler
+{
+ private DesktopTabbedPane _tabbedPane;
+ private boolean _useScrollableTabbedPanesForSessionTabs;
+
+ public ScrollableTabHandler(IApplication app, DesktopTabbedPane tabbedPane)
+ {
+ _useScrollableTabbedPanesForSessionTabs = app.getSquirrelPreferences().getUseScrollableTabbedPanesForSessionTabs();
+
+ if(false == _useScrollableTabbedPanesForSessionTabs)
+ {
+ return;
+ }
+
+ _tabbedPane = tabbedPane;
+
+ _tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
+
+
+ }
+
+ public void tabAdded()
+ {
+ if(false == _useScrollableTabbedPanesForSessionTabs)
+ {
+ return;
+ }
+
+ SwingUtilities.invokeLater( new Runnable()
+ {
+ public void run()
+ {
+ Action action = _tabbedPane.getActionMap().get("scrollTabsForwardAction");
+ action.actionPerformed(new ActionEvent(_tabbedPane, ActionEvent.ACTION_PERFORMED, ""));
+ }
+ });
+ }
+
+ public void tabRemoved()
+ {
+ if(false == _useScrollableTabbedPanesForSessionTabs)
+ {
+ return;
+ }
+
+ SwingUtilities.invokeLater( new Runnable()
+ {
+ public void run()
+ {
+ Action action = _tabbedPane.getActionMap().get("scrollTabsBackwardAction");
+ action.actionPerformed(new ActionEvent(_tabbedPane, ActionEvent.ACTION_PERFORMED, ""));
+ }
+ });
+ }
+}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanel.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanel.java 2010-11-22 18:30:29 UTC (rev 5997)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanel.java 2010-11-22 18:32:45 UTC (rev 5998)
@@ -106,6 +106,7 @@
private JRadioButton _tabbedStyle = new JRadioButton(s_stringMgr.getString("GeneralPreferencesPanel.tabbedStyle"));
private JRadioButton _internalFrameStyle = new JRadioButton(s_stringMgr.getString("GeneralPreferencesPanel.internalFrameStyle"));
+ private JCheckBox _useScrollableTabbedPanesForSessionTabs = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.useScrollableTabbedPanesForSessionTabs"));
private JCheckBox _showContents = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.showwindowcontents"));
private JCheckBox _maximimizeSessionSheet = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.maxonopen"));
private JCheckBox _showTabbedStyleHint = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.showTabbedStyleHint"));
@@ -149,6 +150,7 @@
void loadData(SquirrelPreferences prefs)
{
_tabbedStyle.setSelected(prefs.getTabbedStyle());
+ _useScrollableTabbedPanesForSessionTabs.setSelected(prefs.getUseScrollableTabbedPanesForSessionTabs());
_internalFrameStyle.setSelected(!prefs.getTabbedStyle());
onStyleChanged();
_showTabbedStyleHint.setSelected(prefs.getShowTabbedStyleHint());
@@ -201,6 +203,7 @@
private void onStyleChanged()
{
+ _useScrollableTabbedPanesForSessionTabs.setEnabled(_tabbedStyle.isSelected());
_showContents.setEnabled(_internalFrameStyle.isSelected());
_maximimizeSessionSheet.setEnabled(_internalFrameStyle.isSelected());
_showTabbedStyleHint.setEnabled(_internalFrameStyle.isSelected());
@@ -209,6 +212,7 @@
void applyChanges(SquirrelPreferences prefs)
{
prefs.setTabbedStyle(_tabbedStyle.isSelected());
+ prefs.setUseScrollableTabbedPanesForSessionTabs(_useScrollableTabbedPanesForSessionTabs.isSelected());
prefs.setShowContentsWhenDragging(_showContents.isSelected());
prefs.setShowTabbedStyleHint(_showTabbedStyleHint.isSelected());
prefs.setShowToolTips(_showToolTips.isSelected());
@@ -278,6 +282,10 @@
pnl.add(_internalFrameStyle, gbc);
++gbc.gridy;
+ _useScrollableTabbedPanesForSessionTabs.setName("useScrollableTabbedPanes");
+ pnl.add(_useScrollableTabbedPanesForSessionTabs, gbc);
+ ++gbc.gridy;
+
_showContents.setName("showContentsCheckBox");
pnl.add(_showContents, gbc);
++gbc.gridy;
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferences.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferences.java 2010-11-22 18:30:29 UTC (rev 5997)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferences.java 2010-11-22 18:32:45 UTC (rev 5998)
@@ -69,6 +69,7 @@
String SHOW_ALIASES_TOOL_BAR = "showAliasesToolBar";
String SHOW_CONTENTS_WHEN_DRAGGING = "showContentsWhenDragging";
String TABBED_STYLE = "tabbedStyle";
+ String USE_SCROLLABLE_TABBED_PANES_FOR_SESSION_TABS = "useScrollableTabbedPanesForSessionTabs";
String SHOW_TABBED_STYLE_HINT = "showTabbedStyleHint";
String SHOW_DRIVERS_TOOL_BAR = "showDriversToolBar";
String SHOW_LOADED_DRIVERS_ONLY = "showLoadedDriversOnly";
@@ -124,6 +125,8 @@
private boolean _tabbedStyle = true;
+ private boolean _useScrollableTabbedPanesForSessionTabs;
+
private boolean _showTabbedStyleHint = true;
private boolean _fileOpenInPreviousDir = true;
@@ -313,6 +316,22 @@
}
}
+ public boolean getUseScrollableTabbedPanesForSessionTabs()
+ {
+ return _useScrollableTabbedPanesForSessionTabs;
+ }
+
+ public synchronized void setUseScrollableTabbedPanesForSessionTabs(boolean data)
+ {
+ if (data != _useScrollableTabbedPanesForSessionTabs)
+ {
+ final boolean oldValue = _useScrollableTabbedPanesForSessionTabs;
+ _useScrollableTabbedPanesForSessionTabs = data;
+ getPropertyChangeReporter().firePropertyChange(IPropertyNames.USE_SCROLLABLE_TABBED_PANES_FOR_SESSION_TABS,
+ oldValue, _useScrollableTabbedPanesForSessionTabs);
+ }
+ }
+
public boolean getShowTabbedStyleHint()
{
return _showTabbedStyleHint;
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferencesBeanInfo.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferencesBeanInfo.java 2010-11-22 18:30:29 UTC (rev 5997)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferencesBeanInfo.java 2010-11-22 18:32:45 UTC (rev 5998)
@@ -54,6 +54,8 @@
new PropertyDescriptor(TABBED_STYLE, SquirrelPreferences.class,
"getTabbedStyle", "setTabbedStyle"),
+ new PropertyDescriptor(USE_SCROLLABLE_TABBED_PANES_FOR_SESSION_TABS, SquirrelPreferences.class,
+ "getUseScrollableTabbedPanesForSessionTabs", "setUseScrollableTabbedPanesForSessionTabs"),
new PropertyDescriptor(SHOW_TABBED_STYLE_HINT, SquirrelPreferences.class,
"getShowTabbedStyleHint", "setShowTabbedStyleHint"),
Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/preferences/I18NStrings.properties
===================================================================
--- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/preferences/I18NStrings.properties 2010-11-22 18:30:29 UTC (rev 5997)
+++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/preferences/I18NStrings.properties 2010-11-22 18:32:45 UTC (rev 5998)
@@ -105,5 +105,6 @@
GeneralPreferencesPanel.tabbedStyle=Use tabbed layout (needs restart)
+GeneralPreferencesPanel.useScrollableTabbedPanesForSessionTabs=Use scrollable tabbed panes for Session tabs (needs restart)
GeneralPreferencesPanel.internalFrameStyle=Use MDI/Internal Frame layout (needs restart)
GeneralPreferencesPanel.showTabbedStyleHint=Warn MDI/Internal Frame layout is deprecated
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|