TabbedPane: support specifying default tab layout policy for all tabbed panes via UI value TabbedPane.tabLayoutPolicy

This commit is contained in:
Karl Tauber
2020-11-14 18:44:48 +01:00
parent 634f7b5ba3
commit f9e34cbab7
3 changed files with 21 additions and 2 deletions

View File

@@ -11,7 +11,11 @@ FlatLaf Change Log
- TabbedPane: Support forward/backward scroll arrow buttons on both sides of tab - TabbedPane: Support forward/backward scroll arrow buttons on both sides of tab
area. Backward button on left side, forward button on right side. Not area. Backward button on left side, forward button on right side. Not
applicable scroll buttons are hidden. (PR #211; issue #40) applicable scroll buttons are hidden. (PR #211; issue #40)
- TabbedPane: Support scrolling tabs with mouse wheel in scroll tab layout. (PR - TabbedPane: Support specifying default tab layout policy for all tabbed panes
in the application via UI value `TabbedPane.tabLayoutPolicy`. E.g. invoke
`UIManager.put( "TabbedPane.tabLayoutPolicy", "scroll" );` to use scroll
layout.
- TabbedPane: Support tab scrolling with mouse wheel (in scroll tab layout). (PR
#187; issue #40) #187; issue #40)
- TabbedPane: Repeat scrolling as long as scroll arrow buttons are pressed. (PR - TabbedPane: Repeat scrolling as long as scroll arrow buttons are pressed. (PR
#187; issue #40) #187; issue #40)

View File

@@ -131,8 +131,9 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault TabbedPane.tabSeparatorsFullHeight boolean * @uiDefault TabbedPane.tabSeparatorsFullHeight boolean
* @uiDefault TabbedPane.hasFullBorder boolean * @uiDefault TabbedPane.hasFullBorder boolean
* *
* @uiDefault TabbedPane.tabLayoutPolicy String wrap (default) or scroll
* @uiDefault TabbedPane.tabsPopupPolicy String never or asNeeded (default) * @uiDefault TabbedPane.tabsPopupPolicy String never or asNeeded (default)
* @uiDefault TabbedPane.scrollButtonsPolicy String never, asNeeded or asNeededSingle (default) * @uiDefault TabbedPane.scrollButtonsPolicy String never, asNeeded or asNeededSingle (default)
* @uiDefault TabbedPane.scrollButtonsPlacement String both (default) or trailing * @uiDefault TabbedPane.scrollButtonsPlacement String both (default) or trailing
* *
* @uiDefault TabbedPane.tabAreaAlignment String leading (default), center, trailing or fill * @uiDefault TabbedPane.tabAreaAlignment String leading (default), center, trailing or fill
@@ -231,6 +232,18 @@ public class FlatTabbedPaneUI
@Override @Override
public void installUI( JComponent c ) { public void installUI( JComponent c ) {
// initialize tab layout policy (if specified)
String tabLayoutPolicyStr = UIManager.getString( "TabbedPane.tabLayoutPolicy" );
if( tabLayoutPolicyStr != null ) {
int tabLayoutPolicy;
switch( tabLayoutPolicyStr ) {
default:
case "wrap": tabLayoutPolicy = JTabbedPane.WRAP_TAB_LAYOUT; break;
case "scroll": tabLayoutPolicy = JTabbedPane.SCROLL_TAB_LAYOUT; break;
}
((JTabbedPane)c).setTabLayoutPolicy( tabLayoutPolicy );
}
// initialize this defaults here because they are used in constructor // initialize this defaults here because they are used in constructor
// of FlatTabAreaButton, which is invoked before installDefaults() // of FlatTabAreaButton, which is invoked before installDefaults()
arrowType = UIManager.getString( "TabbedPane.arrowType" ); arrowType = UIManager.getString( "TabbedPane.arrowType" );

View File

@@ -573,6 +573,8 @@ TabbedPane.arrowType=chevron
TabbedPane.buttonInsets=2,1,2,1 TabbedPane.buttonInsets=2,1,2,1
TabbedPane.buttonArc=$Button.arc TabbedPane.buttonArc=$Button.arc
# allowed values: wrap or scroll
#TabbedPane.tabLayoutPolicy=scroll
# allowed values: never or asNeeded # allowed values: never or asNeeded
TabbedPane.tabsPopupPolicy=asNeeded TabbedPane.tabsPopupPolicy=asNeeded
# allowed values: never, asNeeded or asNeededSingle # allowed values: never, asNeeded or asNeededSingle