mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-08 15:00:54 +03:00
Merge pull request #306 from JFormDesigner/jidetabbedpane
JideTabbedPane improvements
This commit is contained in:
@@ -107,4 +107,22 @@ public class FlatJidePainter
|
|||||||
} else
|
} else
|
||||||
super.paintBackground( c, g, rect, borderColor, background, orientation );
|
super.paintBackground( c, g, rect, borderColor, background, orientation );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paintGripper( JComponent c, Graphics g, Rectangle rect, int orientation, int state ) {
|
||||||
|
float userScaleFactor = UIScale.getUserScaleFactor();
|
||||||
|
if( userScaleFactor > 1 ) {
|
||||||
|
// scale gripper
|
||||||
|
Graphics2D g2 = (Graphics2D) g.create();
|
||||||
|
try {
|
||||||
|
g2.translate( rect.x, rect.y );
|
||||||
|
g2.scale( userScaleFactor, userScaleFactor );
|
||||||
|
Rectangle rect2 = new Rectangle( 0, 0, UIScale.unscale( rect.width ), UIScale.unscale( rect.height ) );
|
||||||
|
super.paintGripper( c, g2, rect2, orientation, state );
|
||||||
|
} finally {
|
||||||
|
g2.dispose();
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
super.paintGripper( c, g, rect, orientation, state );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,15 +17,19 @@
|
|||||||
package com.formdev.flatlaf.jideoss.ui;
|
package com.formdev.flatlaf.jideoss.ui;
|
||||||
|
|
||||||
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
|
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
|
||||||
|
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_SHOW_TAB_SEPARATORS;
|
||||||
import static com.formdev.flatlaf.FlatClientProperties.clientPropertyBoolean;
|
import static com.formdev.flatlaf.FlatClientProperties.clientPropertyBoolean;
|
||||||
import static com.formdev.flatlaf.util.UIScale.scale;
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Container;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
|
import java.awt.LayoutManager;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.event.MouseListener;
|
import java.awt.event.MouseListener;
|
||||||
@@ -33,15 +37,20 @@ import java.awt.event.MouseMotionListener;
|
|||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.JButton;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import com.formdev.flatlaf.FlatClientProperties;
|
import com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon;
|
||||||
import com.formdev.flatlaf.ui.FlatUIUtils;
|
import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||||
|
import com.formdev.flatlaf.util.Graphics2DProxy;
|
||||||
|
import com.formdev.flatlaf.util.UIScale;
|
||||||
import com.jidesoft.plaf.LookAndFeelFactory;
|
import com.jidesoft.plaf.LookAndFeelFactory;
|
||||||
import com.jidesoft.plaf.UIDefaultsLookup;
|
import com.jidesoft.plaf.UIDefaultsLookup;
|
||||||
import com.jidesoft.plaf.basic.BasicJideTabbedPaneUI;
|
import com.jidesoft.plaf.basic.BasicJideTabbedPaneUI;
|
||||||
import com.jidesoft.swing.JideTabbedPane;
|
import com.jidesoft.swing.JideTabbedPane;
|
||||||
|
import com.jidesoft.swing.JideTabbedPane.NoFocusButton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the Flat LaF UI delegate for {@link com.jidesoft.swing.JideTabbedPane}.
|
* Provides the Flat LaF UI delegate for {@link com.jidesoft.swing.JideTabbedPane}.
|
||||||
@@ -51,18 +60,36 @@ import com.jidesoft.swing.JideTabbedPane;
|
|||||||
public class FlatJideTabbedPaneUI
|
public class FlatJideTabbedPaneUI
|
||||||
extends BasicJideTabbedPaneUI
|
extends BasicJideTabbedPaneUI
|
||||||
{
|
{
|
||||||
|
protected Color foreground;
|
||||||
|
protected Color disabledForeground;
|
||||||
|
protected Color selectedBackground;
|
||||||
protected Color underlineColor;
|
protected Color underlineColor;
|
||||||
protected Color disabledUnderlineColor;
|
protected Color disabledUnderlineColor;
|
||||||
protected Color hoverColor;
|
protected Color hoverColor;
|
||||||
protected Color focusColor;
|
protected Color focusColor;
|
||||||
|
protected Color tabSeparatorColor;
|
||||||
protected Color contentAreaColor;
|
protected Color contentAreaColor;
|
||||||
|
|
||||||
protected int tabHeight;
|
protected int tabHeight;
|
||||||
protected int tabSelectionHeight;
|
protected int tabSelectionHeight;
|
||||||
protected int contentSeparatorHeight;
|
protected int contentSeparatorHeight;
|
||||||
|
protected boolean showTabSeparators;
|
||||||
|
protected boolean tabSeparatorsFullHeight;
|
||||||
protected boolean hasFullBorder;
|
protected boolean hasFullBorder;
|
||||||
protected boolean tabsOverlapBorder;
|
protected boolean tabsOverlapBorder;
|
||||||
|
|
||||||
|
protected Icon closeIcon;
|
||||||
|
protected Icon arrowIcon;
|
||||||
|
|
||||||
|
protected String arrowType;
|
||||||
|
protected Insets buttonInsets;
|
||||||
|
protected int buttonArc;
|
||||||
|
protected Color buttonHoverBackground;
|
||||||
|
protected Color buttonPressedBackground;
|
||||||
|
|
||||||
|
protected int closeButtonLeftMarginUnscaled;
|
||||||
|
protected int closeButtonRightMarginUnscaled;
|
||||||
|
|
||||||
private Object[] oldRenderingHints;
|
private Object[] oldRenderingHints;
|
||||||
|
|
||||||
public static ComponentUI createUI( JComponent c ) {
|
public static ComponentUI createUI( JComponent c ) {
|
||||||
@@ -79,18 +106,33 @@ public class FlatJideTabbedPaneUI
|
|||||||
|
|
||||||
_background = UIDefaultsLookup.getColor( "JideTabbedPane.background" );
|
_background = UIDefaultsLookup.getColor( "JideTabbedPane.background" );
|
||||||
|
|
||||||
|
foreground = UIManager.getColor( "TabbedPane.foreground" );
|
||||||
|
disabledForeground = UIManager.getColor( "TabbedPane.disabledForeground" );
|
||||||
|
selectedBackground = UIManager.getColor( "TabbedPane.selectedBackground" );
|
||||||
underlineColor = UIManager.getColor( "TabbedPane.underlineColor" );
|
underlineColor = UIManager.getColor( "TabbedPane.underlineColor" );
|
||||||
disabledUnderlineColor = UIManager.getColor( "TabbedPane.disabledUnderlineColor" );
|
disabledUnderlineColor = UIManager.getColor( "TabbedPane.disabledUnderlineColor" );
|
||||||
hoverColor = UIManager.getColor( "TabbedPane.hoverColor" );
|
hoverColor = UIManager.getColor( "TabbedPane.hoverColor" );
|
||||||
focusColor = UIManager.getColor( "TabbedPane.focusColor" );
|
focusColor = UIManager.getColor( "TabbedPane.focusColor" );
|
||||||
|
tabSeparatorColor = UIManager.getColor( "TabbedPane.tabSeparatorColor" );
|
||||||
contentAreaColor = UIManager.getColor( "TabbedPane.contentAreaColor" );
|
contentAreaColor = UIManager.getColor( "TabbedPane.contentAreaColor" );
|
||||||
|
|
||||||
tabHeight = UIManager.getInt( "TabbedPane.tabHeight" );
|
tabHeight = UIManager.getInt( "TabbedPane.tabHeight" );
|
||||||
tabSelectionHeight = UIManager.getInt( "TabbedPane.tabSelectionHeight" );
|
tabSelectionHeight = UIManager.getInt( "TabbedPane.tabSelectionHeight" );
|
||||||
contentSeparatorHeight = UIManager.getInt( "TabbedPane.contentSeparatorHeight" );
|
contentSeparatorHeight = UIManager.getInt( "TabbedPane.contentSeparatorHeight" );
|
||||||
|
showTabSeparators = UIManager.getBoolean( "TabbedPane.showTabSeparators" );
|
||||||
|
tabSeparatorsFullHeight = UIManager.getBoolean( "TabbedPane.tabSeparatorsFullHeight" );
|
||||||
hasFullBorder = UIManager.getBoolean( "TabbedPane.hasFullBorder" );
|
hasFullBorder = UIManager.getBoolean( "TabbedPane.hasFullBorder" );
|
||||||
tabsOverlapBorder = UIManager.getBoolean( "TabbedPane.tabsOverlapBorder" );
|
tabsOverlapBorder = UIManager.getBoolean( "TabbedPane.tabsOverlapBorder" );
|
||||||
|
|
||||||
|
arrowType = UIManager.getString( "TabbedPane.arrowType" );
|
||||||
|
buttonInsets = UIManager.getInsets( "TabbedPane.buttonInsets" );
|
||||||
|
buttonArc = UIManager.getInt( "TabbedPane.buttonArc" );
|
||||||
|
buttonHoverBackground = UIManager.getColor( "TabbedPane.buttonHoverBackground" );
|
||||||
|
buttonPressedBackground = UIManager.getColor( "TabbedPane.buttonPressedBackground" );
|
||||||
|
|
||||||
|
closeButtonLeftMarginUnscaled = _closeButtonLeftMargin;
|
||||||
|
closeButtonRightMarginUnscaled = _closeButtonRightMargin;
|
||||||
|
|
||||||
// scale
|
// scale
|
||||||
_textIconGap = scale( _textIconGap );
|
_textIconGap = scale( _textIconGap );
|
||||||
tabHeight = scale( tabHeight );
|
tabHeight = scale( tabHeight );
|
||||||
@@ -101,11 +143,46 @@ public class FlatJideTabbedPaneUI
|
|||||||
protected void uninstallDefaults() {
|
protected void uninstallDefaults() {
|
||||||
super.uninstallDefaults();
|
super.uninstallDefaults();
|
||||||
|
|
||||||
|
foreground = null;
|
||||||
|
disabledForeground = null;
|
||||||
|
selectedBackground = null;
|
||||||
underlineColor = null;
|
underlineColor = null;
|
||||||
disabledUnderlineColor = null;
|
disabledUnderlineColor = null;
|
||||||
hoverColor = null;
|
hoverColor = null;
|
||||||
focusColor = null;
|
focusColor = null;
|
||||||
|
tabSeparatorColor = null;
|
||||||
contentAreaColor = null;
|
contentAreaColor = null;
|
||||||
|
|
||||||
|
buttonHoverBackground = null;
|
||||||
|
buttonPressedBackground = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void installComponents() {
|
||||||
|
super.installComponents();
|
||||||
|
|
||||||
|
closeIcon = new FlatJideTabCloseIcon();
|
||||||
|
arrowIcon = new FlatJideTabAreaArrowIcon();
|
||||||
|
|
||||||
|
if( _tabScroller != null ) {
|
||||||
|
_tabScroller.scrollForwardButton.setIcon( arrowIcon );
|
||||||
|
_tabScroller.scrollBackwardButton.setIcon( arrowIcon );
|
||||||
|
_tabScroller.listButton.setIcon( arrowIcon );
|
||||||
|
_tabScroller.closeButton.setIcon( closeIcon );
|
||||||
|
|
||||||
|
_tabScroller.scrollForwardButton.setContentAreaFilled( false );
|
||||||
|
_tabScroller.scrollBackwardButton.setContentAreaFilled( false );
|
||||||
|
_tabScroller.listButton.setContentAreaFilled( false );
|
||||||
|
_tabScroller.closeButton.setContentAreaFilled( false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void uninstallComponents() {
|
||||||
|
super.uninstallComponents();
|
||||||
|
|
||||||
|
closeIcon = null;
|
||||||
|
arrowIcon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -114,13 +191,20 @@ public class FlatJideTabbedPaneUI
|
|||||||
return e -> {
|
return e -> {
|
||||||
superListener.propertyChange( e );
|
superListener.propertyChange( e );
|
||||||
|
|
||||||
String propertyName = e.getPropertyName();
|
switch( e.getPropertyName() ) {
|
||||||
if( JideTabbedPane.PROPERTY_SELECTED_INDEX.equals( propertyName ) ) {
|
case JideTabbedPane.PROPERTY_SELECTED_INDEX:
|
||||||
repaintTab( (Integer) e.getOldValue() );
|
repaintTab( (Integer) e.getOldValue() );
|
||||||
repaintTab( (Integer) e.getNewValue() );
|
repaintTab( (Integer) e.getNewValue() );
|
||||||
} else if( FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER.equals( propertyName ) ) {
|
break;
|
||||||
|
|
||||||
|
case JideTabbedPane.PROPERTY_TAB_AREA_INSETS:
|
||||||
|
case JideTabbedPane.PROPERTY_TAB_INSETS:
|
||||||
|
case JideTabbedPane.GRIPPER_PROPERTY:
|
||||||
|
case TABBED_PANE_SHOW_TAB_SEPARATORS:
|
||||||
|
case TABBED_PANE_HAS_FULL_BORDER:
|
||||||
_tabPane.revalidate();
|
_tabPane.revalidate();
|
||||||
_tabPane.repaint();
|
_tabPane.repaint();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -144,14 +228,23 @@ public class FlatJideTabbedPaneUI
|
|||||||
return new RolloverMouseMotionHandler();
|
return new RolloverMouseMotionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected LayoutManager createLayoutManager() {
|
||||||
|
return (_tabPane.getTabLayoutPolicy() == JideTabbedPane.SCROLL_TAB_LAYOUT)
|
||||||
|
? new FlatJideTabbedPaneScrollLayout()
|
||||||
|
: super.createLayoutManager();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int calculateTabHeight( int tabPlacement, int tabIndex, FontMetrics metrics ) {
|
protected int calculateTabHeight( int tabPlacement, int tabIndex, FontMetrics metrics ) {
|
||||||
|
updateCloseButtonMargins();
|
||||||
return Math.max( tabHeight, super.calculateTabHeight( tabPlacement, tabIndex, metrics ) );
|
return Math.max( tabHeight, super.calculateTabHeight( tabPlacement, tabIndex, metrics ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int calculateTabWidth( int tabPlacement, int tabIndex, FontMetrics metrics ) {
|
protected int calculateTabWidth( int tabPlacement, int tabIndex, FontMetrics metrics ) {
|
||||||
return Math.max( tabHeight, super.calculateTabWidth( tabPlacement, tabIndex, metrics ) );
|
updateCloseButtonMargins();
|
||||||
|
return Math.max( tabHeight, super.calculateTabWidth( tabPlacement, tabIndex, metrics ) - 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -174,6 +267,26 @@ public class FlatJideTabbedPaneUI
|
|||||||
return JideTabbedPane.SHAPE_BOX;
|
return JideTabbedPane.SHAPE_BOX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLeftMargin() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getTabGap() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutSize() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getTabRightPadding() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The content border insets are used to create a separator between tabs and content.
|
* The content border insets are used to create a separator between tabs and content.
|
||||||
* If client property JTabbedPane.hasFullBorder is true, then the content border insets
|
* If client property JTabbedPane.hasFullBorder is true, then the content border insets
|
||||||
@@ -226,7 +339,9 @@ public class FlatJideTabbedPaneUI
|
|||||||
? hoverColor
|
? hoverColor
|
||||||
: (enabled && isSelected && FlatUIUtils.isPermanentFocusOwner( _tabPane )
|
: (enabled && isSelected && FlatUIUtils.isPermanentFocusOwner( _tabPane )
|
||||||
? focusColor
|
? focusColor
|
||||||
: _tabPane.getBackgroundAt( tabIndex )) );
|
: (selectedBackground != null && enabled && isSelected
|
||||||
|
? selectedBackground
|
||||||
|
: _tabPane.getBackgroundAt( tabIndex ))) );
|
||||||
g.fillRect( x, y, w, h );
|
g.fillRect( x, y, w, h );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,8 +349,38 @@ public class FlatJideTabbedPaneUI
|
|||||||
protected void paintText( Graphics g, int tabPlacement, Font font, FontMetrics metrics,
|
protected void paintText( Graphics g, int tabPlacement, Font font, FontMetrics metrics,
|
||||||
int tabIndex, String title, Rectangle textRect, boolean isSelected )
|
int tabIndex, String title, Rectangle textRect, boolean isSelected )
|
||||||
{
|
{
|
||||||
|
if( !_tabPane.isEnabled() || !_tabPane.isEnabledAt( tabIndex ) ) {
|
||||||
|
// super method paints disabled text twice with different colors
|
||||||
|
// and one pixel offset to simulate disabled text
|
||||||
|
// --> draw only once with disabledForeground
|
||||||
|
class DisabledTextGraphics extends Graphics2DProxy {
|
||||||
|
private int count;
|
||||||
|
|
||||||
|
public DisabledTextGraphics( Graphics delegate ) {
|
||||||
|
super( (Graphics2D) delegate );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Graphics create() {
|
||||||
|
return new DisabledTextGraphics( super.create() );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawString( String str, int x, int y ) {
|
||||||
|
count++;
|
||||||
|
if( (count % 2) != 1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
setColor( disabledForeground );
|
||||||
|
super.drawString( str, x, y );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g = new DisabledTextGraphics( g );
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics g2 = g;
|
||||||
FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
|
FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
|
||||||
super.paintText( g, tabPlacement, font, metrics, tabIndex, title, textRect, isSelected );
|
super.paintText( g2, tabPlacement, font, metrics, tabIndex, title, textRect, isSelected );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,11 +388,36 @@ public class FlatJideTabbedPaneUI
|
|||||||
protected void paintTabBorder( Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h,
|
protected void paintTabBorder( Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h,
|
||||||
boolean isSelected )
|
boolean isSelected )
|
||||||
{
|
{
|
||||||
|
// paint tab separators
|
||||||
|
if( clientPropertyBoolean( _tabPane, TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators ) &&
|
||||||
|
!isLastInRun( tabIndex ) )
|
||||||
|
paintTabSeparator( g, tabPlacement, x, y, w, h );
|
||||||
|
|
||||||
if( isSelected )
|
if( isSelected )
|
||||||
paintTabSelection( g, tabPlacement, x, y, w, h );
|
paintTabSelection( g, tabPlacement, x, y, w, h );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void paintTabSeparator( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
|
||||||
|
float sepWidth = UIScale.scale( 1f );
|
||||||
|
float offset = tabSeparatorsFullHeight ? 0 : UIScale.scale( 5f );
|
||||||
|
|
||||||
|
g.setColor( (tabSeparatorColor != null) ? tabSeparatorColor : contentAreaColor );
|
||||||
|
if( tabPlacement == LEFT || tabPlacement == RIGHT ) {
|
||||||
|
// paint tab separator at bottom side
|
||||||
|
((Graphics2D)g).fill( new Rectangle2D.Float( x + offset, y + h - sepWidth, w - (offset * 2), sepWidth ) );
|
||||||
|
} else if( _tabPane.getComponentOrientation().isLeftToRight() ) {
|
||||||
|
// paint tab separator at right side
|
||||||
|
((Graphics2D)g).fill( new Rectangle2D.Float( x + w - sepWidth, y + offset, sepWidth, h - (offset * 2) ) );
|
||||||
|
} else {
|
||||||
|
// paint tab separator at left side
|
||||||
|
((Graphics2D)g).fill( new Rectangle2D.Float( x, y + offset, sepWidth, h - (offset * 2) ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
|
protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
|
||||||
|
if( !_tabPane.isTabShown() )
|
||||||
|
return;
|
||||||
|
|
||||||
// increase clip bounds in scroll-tab-layout to paint over the separator line
|
// increase clip bounds in scroll-tab-layout to paint over the separator line
|
||||||
Rectangle clipBounds = scrollableTabLayoutEnabled() ? g.getClipBounds() : null;
|
Rectangle clipBounds = scrollableTabLayoutEnabled() ? g.getClipBounds() : null;
|
||||||
if( clipBounds != null ) {
|
if( clipBounds != null ) {
|
||||||
@@ -313,7 +483,7 @@ public class FlatJideTabbedPaneUI
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void paintContentBorder( Graphics g, int tabPlacement, int selectedIndex ) {
|
protected void paintContentBorder( Graphics g, int tabPlacement, int selectedIndex ) {
|
||||||
if( _tabPane.getTabCount() <= 0 )
|
if( !_tabPane.isTabShown() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Insets insets = _tabPane.getInsets();
|
Insets insets = _tabPane.getInsets();
|
||||||
@@ -386,4 +556,354 @@ public class FlatJideTabbedPaneUI
|
|||||||
Rectangle iconRect, Rectangle textRect, boolean isSelected )
|
Rectangle iconRect, Rectangle textRect, boolean isSelected )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void layoutLabel( int tabPlacement, FontMetrics metrics, int tabIndex, String title, Icon icon,
|
||||||
|
Rectangle tabRect, Rectangle iconRect, Rectangle textRect, boolean isSelected )
|
||||||
|
{
|
||||||
|
if( tabPlacement == LEFT || tabPlacement == RIGHT ) {
|
||||||
|
Rectangle tabRect2 = new Rectangle( 0, 0, tabRect.height, tabRect.width );
|
||||||
|
Rectangle iconRect2 = new Rectangle();
|
||||||
|
Rectangle textRect2 = new Rectangle();
|
||||||
|
|
||||||
|
super.layoutLabel( TOP, metrics, tabIndex, title, icon, tabRect2, iconRect2, textRect2, isSelected );
|
||||||
|
|
||||||
|
textRect.x = tabRect.x + textRect2.y;
|
||||||
|
textRect.y = tabRect.y + textRect2.x;
|
||||||
|
textRect.width = textRect2.height;
|
||||||
|
textRect.height = textRect2.width;
|
||||||
|
|
||||||
|
if( tabPlacement == LEFT )
|
||||||
|
textRect.y += metrics.getHeight() / 2;
|
||||||
|
|
||||||
|
iconRect.x = tabRect.x + iconRect2.y;
|
||||||
|
iconRect.y = tabRect.y + iconRect2.x;
|
||||||
|
iconRect.width = iconRect2.height;
|
||||||
|
iconRect.height = iconRect2.width;
|
||||||
|
} else
|
||||||
|
super.layoutLabel( tabPlacement, metrics, tabIndex, title, icon, tabRect, iconRect, textRect, isSelected );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Rectangle getTabsTextBoundsAt( int tabIndex ) {
|
||||||
|
Rectangle rect = super.getTabsTextBoundsAt( tabIndex );
|
||||||
|
rect.x += getTabInsets( _tabPane.getTabPlacement(), tabIndex ).left;
|
||||||
|
return rect;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isLastInRun( int tabIndex ) {
|
||||||
|
int run = getRunForTab( _tabPane.getTabCount(), tabIndex );
|
||||||
|
return lastTabInRun( _tabPane.getTabCount(), run ) == tabIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isLeftToRight() {
|
||||||
|
return _tabPane.getComponentOrientation().isLeftToRight();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isHorizontalTabPlacement() {
|
||||||
|
int tabPlacement = _tabPane.getTabPlacement();
|
||||||
|
return tabPlacement == TOP || tabPlacement == BOTTOM;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void ensureCurrentRects( int leftMargin, int tabCount ) {
|
||||||
|
int oldFitStyleBoundSize = _fitStyleBoundSize;
|
||||||
|
int oldFitStyleFirstTabMargin = _fitStyleFirstTabMargin;
|
||||||
|
int oldCompressedStyleNoIconRectSize = _compressedStyleNoIconRectSize;
|
||||||
|
int oldCompressedStyleIconMargin = _compressedStyleIconMargin;
|
||||||
|
int oldFixedStyleRectSize = _fixedStyleRectSize;
|
||||||
|
|
||||||
|
_fitStyleBoundSize = scale( _fitStyleBoundSize );
|
||||||
|
_fitStyleFirstTabMargin = scale( _fitStyleFirstTabMargin );
|
||||||
|
_compressedStyleNoIconRectSize = scale( _compressedStyleNoIconRectSize );
|
||||||
|
_compressedStyleIconMargin = scale( _compressedStyleIconMargin );
|
||||||
|
_fixedStyleRectSize = scale( _fixedStyleRectSize );
|
||||||
|
|
||||||
|
super.ensureCurrentRects( leftMargin, tabCount );
|
||||||
|
|
||||||
|
_fitStyleBoundSize = oldFitStyleBoundSize;
|
||||||
|
_fitStyleFirstTabMargin = oldFitStyleFirstTabMargin;
|
||||||
|
_compressedStyleNoIconRectSize = oldCompressedStyleNoIconRectSize;
|
||||||
|
_compressedStyleIconMargin = oldCompressedStyleIconMargin;
|
||||||
|
_fixedStyleRectSize = oldFixedStyleRectSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void ensureCloseButtonCreated() {
|
||||||
|
super.ensureCloseButtonCreated();
|
||||||
|
|
||||||
|
if( _closeButtons == null )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// make sure that close buttons use our icon and do not fill background
|
||||||
|
for( JButton closeButton : _closeButtons ) {
|
||||||
|
if( closeButton.getIcon() != closeIcon )
|
||||||
|
closeButton.setIcon( closeIcon );
|
||||||
|
if( closeButton.isContentAreaFilled() )
|
||||||
|
closeButton.setContentAreaFilled( false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void updateCloseButtonMargins() {
|
||||||
|
// scale close button margins
|
||||||
|
_closeButtonLeftMargin = scale( closeButtonLeftMarginUnscaled );
|
||||||
|
_closeButtonRightMargin = scale( closeButtonRightMarginUnscaled );
|
||||||
|
|
||||||
|
// since close button size is hardcoded to 16x16 in NoFocusButton.getPreferredSize(),
|
||||||
|
// add difference between scaled and unscaled close button size to margins
|
||||||
|
int offset = (closeIcon.getIconWidth() - 16) / 2;
|
||||||
|
_closeButtonLeftMargin += offset;
|
||||||
|
_closeButtonRightMargin += offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class FlatJideTabbedPaneScrollLayout -------------------------------
|
||||||
|
|
||||||
|
protected class FlatJideTabbedPaneScrollLayout
|
||||||
|
extends TabbedPaneScrollLayout
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void layoutContainer( Container parent ) {
|
||||||
|
updateCloseButtonMargins();
|
||||||
|
|
||||||
|
super.layoutContainer( parent );
|
||||||
|
|
||||||
|
updateCloseButtons();
|
||||||
|
updateArrowButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCloseButtons() {
|
||||||
|
if( !scrollableTabLayoutEnabled() || !isShowCloseButton() || !isShowCloseButtonOnTab() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Color background = _tabPane.getBackground();
|
||||||
|
|
||||||
|
for( int i = 0; i < _closeButtons.length; i++ ) {
|
||||||
|
JButton closeButton = _closeButtons[i];
|
||||||
|
if( closeButton.getWidth() == 0 || closeButton.getHeight() == 0 )
|
||||||
|
continue; // not visible
|
||||||
|
|
||||||
|
closeButton.setBounds( getTabCloseBounds( i ) );
|
||||||
|
closeButton.setBackground( background );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rectangle getTabCloseBounds( int tabIndex ) {
|
||||||
|
int iconWidth = closeIcon.getIconWidth();
|
||||||
|
int iconHeight = closeIcon.getIconHeight();
|
||||||
|
Rectangle tabRect = _rects[tabIndex];
|
||||||
|
Insets tabInsets = getTabInsets( _tabPane.getTabPlacement(), tabIndex );
|
||||||
|
|
||||||
|
// use one-third of right/left tab insets as gap between tab text and close button
|
||||||
|
if( _tabPane.getTabPlacement() == JideTabbedPane.TOP || _tabPane.getTabPlacement() == JideTabbedPane.BOTTOM ) {
|
||||||
|
return new Rectangle(
|
||||||
|
_tabPane.getComponentOrientation().isLeftToRight()
|
||||||
|
? (tabRect.x + tabRect.width - (tabInsets.right / 3 * 2) - iconWidth)
|
||||||
|
: (tabRect.x + (tabInsets.left / 3 * 2)),
|
||||||
|
tabRect.y + (tabRect.height - iconHeight) / 2,
|
||||||
|
iconWidth,
|
||||||
|
iconHeight );
|
||||||
|
} else {
|
||||||
|
return new Rectangle(
|
||||||
|
tabRect.x + (tabRect.width - iconWidth) / 2,
|
||||||
|
tabRect.y + tabRect.height - (tabInsets.bottom / 3 * 2) - iconHeight,
|
||||||
|
iconWidth,
|
||||||
|
iconHeight );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateArrowButtons() {
|
||||||
|
if( !scrollableTabLayoutEnabled() || !_tabPane.isTabShown() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Insets insets = _tabPane.getInsets();
|
||||||
|
int tabPlacement = _tabPane.getTabPlacement();
|
||||||
|
Insets tabAreaInsets = getTabAreaInsets( tabPlacement );
|
||||||
|
Dimension tsize = isTabTrailingComponentVisible() ? _tabTrailingComponent.getSize() : new Dimension();
|
||||||
|
|
||||||
|
if( tabPlacement == TOP || tabPlacement == BOTTOM ) {
|
||||||
|
// for BOTTOM tab placement, _maxTabHeight is not correct if having tall leading/trailing component
|
||||||
|
int maxTabHeight = (tabPlacement == BOTTOM)
|
||||||
|
? calculateMaxTabHeight( tabPlacement )
|
||||||
|
: _maxTabHeight;
|
||||||
|
|
||||||
|
// button bounds
|
||||||
|
boolean leftToRight = isLeftToRight();
|
||||||
|
int x = leftToRight
|
||||||
|
? _tabPane.getWidth() - insets.right - tsize.width
|
||||||
|
: insets.left + tsize.width;
|
||||||
|
int y = _tabScroller.viewport.getY();
|
||||||
|
int h = maxTabHeight;
|
||||||
|
if( tabPlacement == TOP ) {
|
||||||
|
// if leading or trailing component is taller than tab area then
|
||||||
|
// _tabScroller.viewport has same height as leading/trailing component
|
||||||
|
// but tabs are painted smaller
|
||||||
|
y += (_tabScroller.viewport.getHeight() - h - tabAreaInsets.bottom);
|
||||||
|
} else
|
||||||
|
y += tabAreaInsets.top;
|
||||||
|
|
||||||
|
// layout buttons
|
||||||
|
if( !isShowCloseButtonOnTab() )
|
||||||
|
x = layoutButtonHorizontal( _tabScroller.closeButton, 16, x, y, h, leftToRight );
|
||||||
|
x = layoutButtonHorizontal( _tabScroller.listButton, 24, x, y, h, leftToRight );
|
||||||
|
x = layoutButtonHorizontal( _tabScroller.scrollForwardButton, 16, x, y, h, leftToRight );
|
||||||
|
x = layoutButtonHorizontal( _tabScroller.scrollBackwardButton, 16, x, y, h, leftToRight );
|
||||||
|
|
||||||
|
// layout tab area
|
||||||
|
Rectangle r = _tabScroller.viewport.getBounds();
|
||||||
|
if( leftToRight )
|
||||||
|
_tabScroller.viewport.setSize( x - r.x, r.height );
|
||||||
|
else
|
||||||
|
_tabScroller.viewport.setBounds( x, r.y, r.width - (x - r.x), r.height );
|
||||||
|
|
||||||
|
} else { // LEFT and RIGHT tab placement
|
||||||
|
// for RIGHT tab placement, _maxTabWidth is not correct if having wide leading/trailing component
|
||||||
|
int maxTabWidth = (tabPlacement == RIGHT)
|
||||||
|
? calculateMaxTabWidth( tabPlacement )
|
||||||
|
: _maxTabWidth;
|
||||||
|
|
||||||
|
// button bounds
|
||||||
|
int x = _tabScroller.viewport.getX();
|
||||||
|
int y = _tabPane.getHeight() - insets.bottom - tsize.height;
|
||||||
|
int w = maxTabWidth;
|
||||||
|
if( tabPlacement == LEFT ) {
|
||||||
|
// if leading or trailing component is wider than tab area then
|
||||||
|
// _tabScroller.viewport has same width as leading/trailing component
|
||||||
|
// but tabs are painted smaller
|
||||||
|
x += (_tabScroller.viewport.getWidth() - w - tabAreaInsets.right);
|
||||||
|
} else
|
||||||
|
x += tabAreaInsets.left;
|
||||||
|
|
||||||
|
// layout buttons
|
||||||
|
if( !isShowCloseButtonOnTab() )
|
||||||
|
y = layoutButtonVertical( _tabScroller.closeButton, 16, x, y, w );
|
||||||
|
y = layoutButtonVertical( _tabScroller.listButton, 24, x, y, w );
|
||||||
|
y = layoutButtonVertical( _tabScroller.scrollForwardButton, 16, x, y, w );
|
||||||
|
y = layoutButtonVertical( _tabScroller.scrollBackwardButton, 16, x, y, w );
|
||||||
|
|
||||||
|
// layout tab area
|
||||||
|
Rectangle r = _tabScroller.viewport.getBounds();
|
||||||
|
_tabScroller.viewport.setSize( r.width, y - r.y );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int layoutButtonHorizontal( JButton button, int wu, int x, int y, int h, boolean leftToRight ) {
|
||||||
|
if( button.isVisible() ) {
|
||||||
|
int w = scale( wu );
|
||||||
|
if( leftToRight )
|
||||||
|
x -= w;
|
||||||
|
button.setBounds( x, y, w, h );
|
||||||
|
if( !leftToRight )
|
||||||
|
x += w;
|
||||||
|
}
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int layoutButtonVertical( JButton button, int hu, int x, int y, int w ) {
|
||||||
|
if( button.isVisible() ) {
|
||||||
|
int h = scale( hu );
|
||||||
|
y -= h;
|
||||||
|
button.setBounds( x, y, w, h );
|
||||||
|
}
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class FlatJideTabCloseIcon -----------------------------------------
|
||||||
|
|
||||||
|
protected class FlatJideTabCloseIcon
|
||||||
|
extends FlatTabbedPaneCloseIcon
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void paintIcon( Component c, Graphics g, int x, int y ) {
|
||||||
|
NoFocusButton button = (NoFocusButton) c;
|
||||||
|
|
||||||
|
if( _tabPane.isShowCloseButtonOnMouseOver() && !button.isMouseOver() ) {
|
||||||
|
Object property = _tabPane.getClientProperty( "JideTabbedPane.mouseOverTabIndex" );
|
||||||
|
if( property instanceof Integer && button.getIndex() >= 0 && (Integer) property != button.getIndex() )
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
super.paintIcon( c, g, x, y );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class FlatJideTabAreaArrowIcon -------------------------------------
|
||||||
|
|
||||||
|
protected class FlatJideTabAreaArrowIcon
|
||||||
|
implements Icon
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void paintIcon( Component c, Graphics g, int x, int y ) {
|
||||||
|
NoFocusButton button = (NoFocusButton) c;
|
||||||
|
|
||||||
|
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
|
||||||
|
|
||||||
|
// paint hover or pressed background
|
||||||
|
if( button.isEnabled() ) {
|
||||||
|
Color background = (buttonPressedBackground != null && button.isMousePressed())
|
||||||
|
? buttonPressedBackground
|
||||||
|
: (buttonHoverBackground != null && button.isMouseOver()
|
||||||
|
? buttonHoverBackground
|
||||||
|
: null);
|
||||||
|
|
||||||
|
if( background != null ) {
|
||||||
|
// rotate button insets
|
||||||
|
Insets insets = new Insets( 0, 0, 0, 0 );
|
||||||
|
rotateInsets( buttonInsets, insets, _tabPane.getTabPlacement() );
|
||||||
|
|
||||||
|
// fill background
|
||||||
|
g.setColor( FlatUIUtils.deriveColor( background, _tabPane.getBackground() ) );
|
||||||
|
FlatUIUtils.paintComponentBackground( (Graphics2D) g,
|
||||||
|
insets.left, insets.top,
|
||||||
|
button.getWidth() - insets.left - insets.right,
|
||||||
|
button.getHeight() - insets.top - insets.bottom,
|
||||||
|
0, scale( (float) buttonArc ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// arrow direction
|
||||||
|
int direction = -1;
|
||||||
|
switch( button.getType() ) {
|
||||||
|
case JideTabbedPane.BUTTON_WEST:
|
||||||
|
direction = isHorizontalTabPlacement()
|
||||||
|
? (isLeftToRight() ? WEST : EAST)
|
||||||
|
: NORTH;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JideTabbedPane.BUTTON_EAST:
|
||||||
|
direction = isHorizontalTabPlacement()
|
||||||
|
? (isLeftToRight() ? EAST : WEST)
|
||||||
|
: SOUTH;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JideTabbedPane.BUTTON_LIST:
|
||||||
|
switch( _tabPane.getTabPlacement() ) {
|
||||||
|
default:
|
||||||
|
case TOP: direction = SOUTH; break;
|
||||||
|
case BOTTOM: direction = NORTH; break;
|
||||||
|
case LEFT: direction = EAST; break;
|
||||||
|
case RIGHT: direction = WEST; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// paint arrow
|
||||||
|
g.setColor( button.isEnabled() ? foreground : disabledForeground );
|
||||||
|
FlatUIUtils.paintArrow( (Graphics2D) g,
|
||||||
|
0, 0, button.getWidth(), button.getHeight(),
|
||||||
|
direction, FlatUIUtils.isChevron( arrowType ), 10, 0, 0 );
|
||||||
|
|
||||||
|
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getIconWidth() {
|
||||||
|
return scale( 16 );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getIconHeight() {
|
||||||
|
return scale( 16 );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,3 +81,8 @@ JideTabbedPane.tabAreaInsets = $TabbedPane.tabAreaInsets
|
|||||||
JideTabbedPane.contentBorderInsets = 0,0,0,0
|
JideTabbedPane.contentBorderInsets = 0,0,0,0
|
||||||
JideTabbedPane.tabRunOverlay = $TabbedPane.tabRunOverlay
|
JideTabbedPane.tabRunOverlay = $TabbedPane.tabRunOverlay
|
||||||
JideTabbedPane.shadow = $TabbedPane.shadow
|
JideTabbedPane.shadow = $TabbedPane.shadow
|
||||||
|
|
||||||
|
JideTabbedPane.closeButtonLeftMargin = 0
|
||||||
|
JideTabbedPane.closeButtonRightMargin = 0
|
||||||
|
JideTabbedPane.fitStyleBoundSize = {integer}0
|
||||||
|
JideTabbedPane.fitStyleFirstTabMargin = 0
|
||||||
|
|||||||
@@ -489,7 +489,11 @@ JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButto
|
|||||||
#---- JideTabbedPane ----
|
#---- JideTabbedPane ----
|
||||||
|
|
||||||
JideTabbedPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
JideTabbedPane.closeButtonLeftMargin 0
|
||||||
|
JideTabbedPane.closeButtonRightMargin 0
|
||||||
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||||
|
JideTabbedPane.fitStyleBoundSize 0
|
||||||
|
JideTabbedPane.fitStyleFirstTabMargin 0
|
||||||
JideTabbedPane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.shadow #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.shadow #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.tabAreaBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.tabAreaBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
|||||||
@@ -494,7 +494,11 @@ JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButto
|
|||||||
#---- JideTabbedPane ----
|
#---- JideTabbedPane ----
|
||||||
|
|
||||||
JideTabbedPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
JideTabbedPane.closeButtonLeftMargin 0
|
||||||
|
JideTabbedPane.closeButtonRightMargin 0
|
||||||
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||||
|
JideTabbedPane.fitStyleBoundSize 0
|
||||||
|
JideTabbedPane.fitStyleFirstTabMargin 0
|
||||||
JideTabbedPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.shadow #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.shadow #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.tabAreaBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.tabAreaBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
|||||||
@@ -485,7 +485,11 @@ JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButto
|
|||||||
#---- JideTabbedPane ----
|
#---- JideTabbedPane ----
|
||||||
|
|
||||||
JideTabbedPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
JideTabbedPane.closeButtonLeftMargin 0
|
||||||
|
JideTabbedPane.closeButtonRightMargin 0
|
||||||
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
|
||||||
|
JideTabbedPane.fitStyleBoundSize 0
|
||||||
|
JideTabbedPane.fitStyleFirstTabMargin 0
|
||||||
JideTabbedPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.shadow #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.shadow #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
||||||
JideTabbedPane.tabAreaBackground #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
JideTabbedPane.tabAreaBackground #ccffcc javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
|||||||
@@ -108,12 +108,10 @@
|
|||||||
+ JideTabbedPane.buttonMargin 5
|
+ JideTabbedPane.buttonMargin 5
|
||||||
+ JideTabbedPane.buttonSize 18
|
+ JideTabbedPane.buttonSize 18
|
||||||
+ JideTabbedPane.closeButtonAlignment 11
|
+ JideTabbedPane.closeButtonAlignment 11
|
||||||
+ JideTabbedPane.closeButtonLeftMargin 2
|
|
||||||
+ JideTabbedPane.closeButtonMargin 2
|
+ JideTabbedPane.closeButtonMargin 2
|
||||||
+ JideTabbedPane.closeButtonMarginHorizonal 3
|
+ JideTabbedPane.closeButtonMarginHorizonal 3
|
||||||
+ JideTabbedPane.closeButtonMarginSize 6
|
+ JideTabbedPane.closeButtonMarginSize 6
|
||||||
+ JideTabbedPane.closeButtonMarginVertical 3
|
+ JideTabbedPane.closeButtonMarginVertical 3
|
||||||
+ JideTabbedPane.closeButtonRightMargin 2
|
|
||||||
+ JideTabbedPane.compressedStyleCloseButtonMarginHorizontal 0
|
+ JideTabbedPane.compressedStyleCloseButtonMarginHorizontal 0
|
||||||
+ JideTabbedPane.compressedStyleCloseButtonMarginVertical 0
|
+ JideTabbedPane.compressedStyleCloseButtonMarginVertical 0
|
||||||
+ JideTabbedPane.compressedStyleIconMargin 12
|
+ JideTabbedPane.compressedStyleIconMargin 12
|
||||||
@@ -123,8 +121,6 @@
|
|||||||
+ JideTabbedPane.defaultTabBorderShadowColor #736d63 javax.swing.plaf.ColorUIResource [UI]
|
+ JideTabbedPane.defaultTabBorderShadowColor #736d63 javax.swing.plaf.ColorUIResource [UI]
|
||||||
+ JideTabbedPane.defaultTabColorTheme 3
|
+ JideTabbedPane.defaultTabColorTheme 3
|
||||||
+ JideTabbedPane.defaultTabShape 2
|
+ JideTabbedPane.defaultTabShape 2
|
||||||
+ JideTabbedPane.fitStyleBoundSize 8
|
|
||||||
+ JideTabbedPane.fitStyleFirstTabMargin 4
|
|
||||||
+ JideTabbedPane.fitStyleIconMinWidth 24
|
+ JideTabbedPane.fitStyleIconMinWidth 24
|
||||||
+ JideTabbedPane.fitStyleTextMinWidth 16
|
+ JideTabbedPane.fitStyleTextMinWidth 16
|
||||||
+ JideTabbedPane.fixedStyleRectSize 60
|
+ JideTabbedPane.fixedStyleRectSize 60
|
||||||
|
|||||||
@@ -108,12 +108,10 @@
|
|||||||
+ JideTabbedPane.buttonMargin 5
|
+ JideTabbedPane.buttonMargin 5
|
||||||
+ JideTabbedPane.buttonSize 18
|
+ JideTabbedPane.buttonSize 18
|
||||||
+ JideTabbedPane.closeButtonAlignment 11
|
+ JideTabbedPane.closeButtonAlignment 11
|
||||||
+ JideTabbedPane.closeButtonLeftMargin 2
|
|
||||||
+ JideTabbedPane.closeButtonMargin 2
|
+ JideTabbedPane.closeButtonMargin 2
|
||||||
+ JideTabbedPane.closeButtonMarginHorizonal 3
|
+ JideTabbedPane.closeButtonMarginHorizonal 3
|
||||||
+ JideTabbedPane.closeButtonMarginSize 6
|
+ JideTabbedPane.closeButtonMarginSize 6
|
||||||
+ JideTabbedPane.closeButtonMarginVertical 3
|
+ JideTabbedPane.closeButtonMarginVertical 3
|
||||||
+ JideTabbedPane.closeButtonRightMargin 2
|
|
||||||
+ JideTabbedPane.compressedStyleCloseButtonMarginHorizontal 0
|
+ JideTabbedPane.compressedStyleCloseButtonMarginHorizontal 0
|
||||||
+ JideTabbedPane.compressedStyleCloseButtonMarginVertical 0
|
+ JideTabbedPane.compressedStyleCloseButtonMarginVertical 0
|
||||||
+ JideTabbedPane.compressedStyleIconMargin 12
|
+ JideTabbedPane.compressedStyleIconMargin 12
|
||||||
@@ -123,8 +121,6 @@
|
|||||||
+ JideTabbedPane.defaultTabBorderShadowColor #736d63 javax.swing.plaf.ColorUIResource [UI]
|
+ JideTabbedPane.defaultTabBorderShadowColor #736d63 javax.swing.plaf.ColorUIResource [UI]
|
||||||
+ JideTabbedPane.defaultTabColorTheme 3
|
+ JideTabbedPane.defaultTabColorTheme 3
|
||||||
+ JideTabbedPane.defaultTabShape 2
|
+ JideTabbedPane.defaultTabShape 2
|
||||||
+ JideTabbedPane.fitStyleBoundSize 8
|
|
||||||
+ JideTabbedPane.fitStyleFirstTabMargin 4
|
|
||||||
+ JideTabbedPane.fitStyleIconMinWidth 24
|
+ JideTabbedPane.fitStyleIconMinWidth 24
|
||||||
+ JideTabbedPane.fitStyleTextMinWidth 16
|
+ JideTabbedPane.fitStyleTextMinWidth 16
|
||||||
+ JideTabbedPane.fixedStyleRectSize 60
|
+ JideTabbedPane.fixedStyleRectSize 60
|
||||||
|
|||||||
@@ -16,12 +16,15 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.testing.jideoss;
|
package com.formdev.flatlaf.testing.jideoss;
|
||||||
|
|
||||||
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.*;
|
import javax.swing.border.*;
|
||||||
|
import com.formdev.flatlaf.FlatClientProperties;
|
||||||
|
import com.formdev.flatlaf.FlatLaf;
|
||||||
|
import com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon;
|
||||||
import com.formdev.flatlaf.testing.*;
|
import com.formdev.flatlaf.testing.*;
|
||||||
import com.formdev.flatlaf.testing.FlatTestFrame;
|
import com.formdev.flatlaf.testing.FlatTestFrame;
|
||||||
|
import com.formdev.flatlaf.util.ScaledImageIcon;
|
||||||
import com.jgoodies.forms.layout.*;
|
import com.jgoodies.forms.layout.*;
|
||||||
import com.jidesoft.swing.*;
|
import com.jidesoft.swing.*;
|
||||||
import net.miginfocom.swing.*;
|
import net.miginfocom.swing.*;
|
||||||
@@ -35,49 +38,356 @@ public class FlatJideOssContainerTest
|
|||||||
public static void main( String[] args ) {
|
public static void main( String[] args ) {
|
||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
FlatTestFrame frame = FlatTestFrame.create( args, "FlatJideOssContainerTest" );
|
FlatTestFrame frame = FlatTestFrame.create( args, "FlatJideOssContainerTest" );
|
||||||
|
frame.useApplyComponentOrientation = true;
|
||||||
frame.showFrame( FlatJideOssContainerTest::new );
|
frame.showFrame( FlatJideOssContainerTest::new );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
FlatJideOssContainerTest() {
|
FlatJideOssContainerTest() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
|
tabPlacementField.init( TabPlacement.class, true );
|
||||||
|
tabAlignmentField.init( JideTabAlignment.class, false );
|
||||||
|
tabResizeModeField.init( JideTabResizeMode.class, true );
|
||||||
|
|
||||||
|
tabCountChanged();
|
||||||
|
|
||||||
|
tabsClosableCheckBox.setSelected( true );
|
||||||
|
tabsClosableChanged();
|
||||||
|
|
||||||
|
tabScrollCheckBox.setSelected( true );
|
||||||
|
tabScrollChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tabScrollChanged() {
|
private void tabScrollChanged() {
|
||||||
|
// JideTabbedPane supports tab closing only in scroll layout
|
||||||
|
// --> turn of if necessary to avoid exceptions in BasicJideTabbedPaneUI
|
||||||
|
tabsClosableChanged();
|
||||||
|
|
||||||
int tabLayoutPolicy = tabScrollCheckBox.isSelected() ? JTabbedPane.SCROLL_TAB_LAYOUT : JTabbedPane.WRAP_TAB_LAYOUT;
|
int tabLayoutPolicy = tabScrollCheckBox.isSelected() ? JTabbedPane.SCROLL_TAB_LAYOUT : JTabbedPane.WRAP_TAB_LAYOUT;
|
||||||
tabbedPane1.setTabLayoutPolicy( tabLayoutPolicy );
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
tabbedPane2.setTabLayoutPolicy( tabLayoutPolicy );
|
tabbedPane.setTabLayoutPolicy( tabLayoutPolicy );
|
||||||
tabbedPane3.setTabLayoutPolicy( tabLayoutPolicy );
|
|
||||||
tabbedPane4.setTabLayoutPolicy( tabLayoutPolicy );
|
int tabCount = (Integer) tabCountSpinner.getValue();
|
||||||
|
if( tabLayoutPolicy == JTabbedPane.SCROLL_TAB_LAYOUT && tabCount == 4 )
|
||||||
|
tabCountSpinner.setValue( 8 );
|
||||||
|
else if( tabLayoutPolicy == JTabbedPane.WRAP_TAB_LAYOUT && tabCount == 8 )
|
||||||
|
tabCountSpinner.setValue( 4 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showTabSeparatorsChanged() {
|
||||||
|
Boolean showTabSeparators = showTabSeparatorsCheckBox.isSelected() ? true : null;
|
||||||
|
putTabbedPanesClientProperty( FlatClientProperties.TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void hideTabAreaWithOneTabChanged() {
|
||||||
|
boolean hideTabAreaWithOneTab = hideTabAreaWithOneTabCheckBox.isSelected();
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setHideOneTab( hideTabAreaWithOneTab );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void hasFullBorderChanged() {
|
private void hasFullBorderChanged() {
|
||||||
Boolean hasFullBorder = hasFullBorderCheckBox.isSelected() ? true : null;
|
Boolean hasFullBorder = hasFullBorderCheckBox.isSelected() ? true : null;
|
||||||
tabbedPane1.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
|
putTabbedPanesClientProperty( FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
|
||||||
tabbedPane2.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
|
|
||||||
tabbedPane3.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
|
|
||||||
tabbedPane4.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moreTabsChanged() {
|
private void putTabbedPanesClientProperty( String key, Object value ) {
|
||||||
boolean moreTabs = moreTabsCheckBox.isSelected();
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
addRemoveMoreTabs( tabbedPane1, moreTabs );
|
tabbedPane.putClientProperty( key, value );
|
||||||
addRemoveMoreTabs( tabbedPane2, moreTabs );
|
|
||||||
addRemoveMoreTabs( tabbedPane3, moreTabs );
|
|
||||||
addRemoveMoreTabs( tabbedPane4, moreTabs );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addRemoveMoreTabs( JTabbedPane tabbedPane, boolean add ) {
|
private void tabCountChanged() {
|
||||||
if( add ) {
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
tabbedPane.addTab( "Tab 4", new JLabel( "tab 4" ) );
|
tabCountChanged( tabbedPane );
|
||||||
tabbedPane.addTab( "Tab 5", new JLabel( "tab 5" ) );
|
}
|
||||||
} else {
|
|
||||||
int tabCount = tabbedPane.getTabCount();
|
private void tabCountChanged( JideTabbedPane tabbedPane ) {
|
||||||
if( tabCount > 3 ) {
|
int oldTabCount = tabbedPane.getTabCount();
|
||||||
for( int i = 0; i < 2; i++ )
|
int newTabCount = (Integer) tabCountSpinner.getValue();
|
||||||
|
|
||||||
|
if( newTabCount > oldTabCount ) {
|
||||||
|
for( int i = oldTabCount + 1; i <= newTabCount; i++ )
|
||||||
|
addTab( tabbedPane );
|
||||||
|
} else if( newTabCount < oldTabCount ) {
|
||||||
|
while( tabbedPane.getTabCount() > newTabCount )
|
||||||
tabbedPane.removeTabAt( tabbedPane.getTabCount() - 1 );
|
tabbedPane.removeTabAt( tabbedPane.getTabCount() - 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
customTabsChanged( tabbedPane );
|
||||||
|
tabBackForegroundChanged( tabbedPane );
|
||||||
|
setTabIcons( tabbedPane );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addTab( JideTabbedPane tabbedPane ) {
|
||||||
|
switch( tabbedPane.getTabCount() ) {
|
||||||
|
case 0:
|
||||||
|
tabbedPane.addTab( "Tab 1", null, new Panel1(), "First tab." );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
JComponent tab2 = new Panel2();
|
||||||
|
tab2.setBorder( new LineBorder( Color.magenta ) );
|
||||||
|
tabbedPane.addTab( "Second Tab", null, tab2, "This is the second tab." );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
tabbedPane.addTab( "Disabled", createTab( "tab content 3" ) );
|
||||||
|
tabbedPane.setEnabledAt( 2, false );
|
||||||
|
tabbedPane.setToolTipTextAt( 2, "Disabled tab." );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
tabbedPane.addTab( "Tab 4", new JLabel( "non-opaque content", SwingConstants.CENTER ) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
int index = tabbedPane.getTabCount() + 1;
|
||||||
|
tabbedPane.addTab( "Tab " + index, createTab( "tab content " + index ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private JComponent createTab( String text ) {
|
||||||
|
JLabel label = new JLabel( text );
|
||||||
|
label.setHorizontalAlignment( SwingConstants.CENTER );
|
||||||
|
|
||||||
|
JPanel tab = new JPanel( new BorderLayout() );
|
||||||
|
tab.add( label, BorderLayout.CENTER );
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabIconsChanged() {
|
||||||
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
setTabIcons( tabbedPane );
|
||||||
|
|
||||||
|
tabIconSizeSpinner.setEnabled( tabIconsCheckBox.isSelected() );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setTabIcons( JTabbedPane tabbedPane ) {
|
||||||
|
boolean showTabIcons = tabIconsCheckBox.isSelected();
|
||||||
|
Object iconSize = tabIconSizeSpinner.getValue();
|
||||||
|
|
||||||
|
Icon icon = null;
|
||||||
|
Icon disabledIcon = null;
|
||||||
|
if( showTabIcons ) {
|
||||||
|
ImageIcon imageIcon = new ImageIcon( getClass().getResource( "/com/formdev/flatlaf/testing/test" + iconSize + ".png" ) );
|
||||||
|
icon = new ScaledImageIcon( imageIcon );
|
||||||
|
disabledIcon = UIManager.getLookAndFeel().getDisabledIcon( tabbedPane, imageIcon );
|
||||||
|
if( disabledIcon instanceof ImageIcon )
|
||||||
|
disabledIcon = new ScaledImageIcon( (ImageIcon) disabledIcon );
|
||||||
|
}
|
||||||
|
|
||||||
|
int tabCount = tabbedPane.getTabCount();
|
||||||
|
for( int i = 0; i < tabCount; i++ ) {
|
||||||
|
tabbedPane.setIconAt( i, icon );
|
||||||
|
tabbedPane.setDisabledIconAt( i, disabledIcon );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customBorderChanged() {
|
||||||
|
Border border = customBorderCheckBox.isSelected()
|
||||||
|
? new MatteBorder( 10, 20, 25, 35, Color.green )
|
||||||
|
: null;
|
||||||
|
|
||||||
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setBorder( border );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customTabsChanged() {
|
||||||
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
customTabsChanged( tabbedPane );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customTabsChanged( JTabbedPane tabbedPane ) {
|
||||||
|
boolean customTabs = customTabsCheckBox.isSelected();
|
||||||
|
int tabCount = tabbedPane.getTabCount();
|
||||||
|
if( tabCount > 1 )
|
||||||
|
tabbedPane.setTabComponentAt( 1, customTabs ? new JButton( tabbedPane.getTitleAt( 1 ) ) : null );
|
||||||
|
if( tabCount > 3 )
|
||||||
|
tabbedPane.setTabComponentAt( 3, customTabs ? createCustomTab( tabbedPane.getTitleAt( 3 ) ) : null );
|
||||||
|
if( tabCount > 5 )
|
||||||
|
tabbedPane.setTabComponentAt( 5, customTabs ? new JCheckBox( tabbedPane.getTitleAt( 5 ) ) : null );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Component createCustomTab( String tabTitle ) {
|
||||||
|
JButton closeButton;
|
||||||
|
if( UIManager.getLookAndFeel() instanceof FlatLaf ) {
|
||||||
|
closeButton = new JButton( new FlatInternalFrameCloseIcon() );
|
||||||
|
closeButton.setContentAreaFilled( false );
|
||||||
|
closeButton.setBorder( null );
|
||||||
|
} else
|
||||||
|
closeButton = new JButton( "x" );
|
||||||
|
|
||||||
|
JPanel tab = new JPanel( new BorderLayout( 5, 0 ) );
|
||||||
|
tab.setOpaque( false );
|
||||||
|
tab.add( closeButton, BorderLayout.EAST );
|
||||||
|
tab.add( new JLabel( tabTitle ), BorderLayout.CENTER );
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void htmlTabsChanged() {
|
||||||
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
htmlTabsChanged( tabbedPane );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void htmlTabsChanged( JTabbedPane tabbedPane ) {
|
||||||
|
boolean html = htmlTabsCheckBox.isSelected();
|
||||||
|
boolean multiLine = multiLineTabsCheckBox.isSelected();
|
||||||
|
String s = multiLine
|
||||||
|
? "<html><b>Bold</b> Tab<br>Second <i>Line</i> "
|
||||||
|
: (html ? "<html><b>Bold</b> Tab " : "Tab ");
|
||||||
|
int tabCount = tabbedPane.getTabCount();
|
||||||
|
if( tabCount > 0 )
|
||||||
|
tabbedPane.setTitleAt( 0, s + "1" );
|
||||||
|
if( tabCount > 3 )
|
||||||
|
tabbedPane.setTitleAt( 3, s + "4" );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabPlacementChanged() {
|
||||||
|
TabPlacement value = tabPlacementField.getSelectedValue();
|
||||||
|
int tabPlacement = (value != null) ? value.value : -1;
|
||||||
|
|
||||||
|
tabbedPane1.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.TOP );
|
||||||
|
tabbedPane2.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.BOTTOM );
|
||||||
|
tabbedPane3.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.LEFT );
|
||||||
|
tabbedPane4.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.RIGHT );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabAlignmentChanged() {
|
||||||
|
JideTabAlignment value = tabAlignmentField.getSelectedValue();
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setTabAlignment( value.value );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabResizeModeChanged() {
|
||||||
|
JideTabResizeMode value = tabResizeModeField.getSelectedValue();
|
||||||
|
int resizeMode = (value != null) ? value.value : JideTabbedPane.RESIZE_MODE_DEFAULT;
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setTabResizeMode( resizeMode );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabBackForegroundChanged() {
|
||||||
|
for( JTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabBackForegroundChanged( tabbedPane );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabBackForegroundChanged( JTabbedPane tabbedPane ) {
|
||||||
|
boolean enabled = tabBackForegroundCheckBox.isSelected();
|
||||||
|
int tabCount = tabbedPane.getTabCount();
|
||||||
|
if( tabCount > 0 )
|
||||||
|
tabbedPane.setBackgroundAt( 0, enabled ? Color.red : null );
|
||||||
|
if( tabCount > 1 )
|
||||||
|
tabbedPane.setForegroundAt( 1, enabled ? Color.red : null );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void leadingComponentChanged() {
|
||||||
|
leadingTrailingComponentChanged( leadingComponentCheckBox.isSelected(), true, "L", 4 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void trailingComponentChanged() {
|
||||||
|
leadingTrailingComponentChanged( trailingComponentCheckBox.isSelected(), false, "Trailing", 12 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void leadingTrailingComponentChanged( boolean enabled, boolean leading, String text, int gap ) {
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
JComponent c = null;
|
||||||
|
if( enabled ) {
|
||||||
|
c = new JLabel( text );
|
||||||
|
c.setOpaque( true );
|
||||||
|
c.setBackground( leading ? Color.cyan : Color.orange );
|
||||||
|
c.setBorder( new EmptyBorder( gap, gap, gap, gap ) );
|
||||||
|
if( leading && (tabbedPane.getTabPlacement() == SwingConstants.TOP || tabbedPane.getTabPlacement() == SwingConstants.BOTTOM) )
|
||||||
|
c.setPreferredSize( new Dimension( 20, 80 ) );
|
||||||
|
}
|
||||||
|
if( leading )
|
||||||
|
tabbedPane.setTabLeadingComponent( c );
|
||||||
|
else
|
||||||
|
tabbedPane.setTabTrailingComponent( c );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabsClosableChanged() {
|
||||||
|
boolean closable = tabsClosableCheckBox.isSelected() && tabScrollCheckBox.isSelected();
|
||||||
|
boolean onTab = closable && showCloseButtonOnTabCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
tabbedPane.setShowCloseButtonOnTab( onTab );
|
||||||
|
tabbedPane.setShowCloseButton( closable );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void secondTabClosableChanged() {
|
||||||
|
boolean closable = secondTabClosableCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
if( tabbedPane.getTabCount() > 1 )
|
||||||
|
tabbedPane.setTabClosableAt( 1, closable );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showCloseButtonOnSelectedTabChanged() {
|
||||||
|
boolean onSelected = showCloseButtonOnSelectedTabCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
tabbedPane.setShowCloseButtonOnSelectedTab( onSelected );
|
||||||
|
tabbedPane.revalidate();
|
||||||
|
tabbedPane.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showCloseButtonOnMouseOverChanged() {
|
||||||
|
boolean onMouseOver = showCloseButtonOnMouseOverCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
tabbedPane.setShowCloseButtonOnMouseOver( onMouseOver );
|
||||||
|
tabbedPane.revalidate();
|
||||||
|
tabbedPane.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabAreaInsetsChanged() {
|
||||||
|
Insets insets = tabAreaInsetsCheckBox.isSelected() ? new Insets( 5, 5, 10, 10 ) : null;
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes ) {
|
||||||
|
tabbedPane.setTabAreaInsets( insets );
|
||||||
|
tabbedPane.revalidate();
|
||||||
|
tabbedPane.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void smallerInsetsChanged() {
|
||||||
|
Insets insets = smallerInsetsCheckBox.isSelected()
|
||||||
|
? new Insets( 2, 2, 2, 2 )
|
||||||
|
: UIManager.getInsets( "JideTabbedPane.tabInsets" );
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setTabInsets( insets );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void boldActiveTabChanged() {
|
||||||
|
boolean boldActiveTab = boldActiveTabCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setBoldActiveTab( boldActiveTab );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showTabButtonsChanged() {
|
||||||
|
boolean showTabButtons = showTabButtonsCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setShowTabButtons( showTabButtons );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showGripperChanged() {
|
||||||
|
boolean showGripper = showGripperCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setShowGripper( showGripper );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabEditingAllowedChanged() {
|
||||||
|
boolean tabEditingAllowed = tabEditingAllowedCheckBox.isSelected();
|
||||||
|
|
||||||
|
for( JideTabbedPane tabbedPane : allTabbedPanes )
|
||||||
|
tabbedPane.setTabEditingAllowed( tabEditingAllowed );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
@@ -85,29 +395,42 @@ public class FlatJideOssContainerTest
|
|||||||
JPanel panel9 = new JPanel();
|
JPanel panel9 = new JPanel();
|
||||||
JLabel tabbedPaneLabel = new JLabel();
|
JLabel tabbedPaneLabel = new JLabel();
|
||||||
tabbedPane1 = new JideTabbedPane();
|
tabbedPane1 = new JideTabbedPane();
|
||||||
JPanel panel1 = new JPanel();
|
|
||||||
JLabel label1 = new JLabel();
|
|
||||||
JPanel panel2 = new JPanel();
|
|
||||||
JLabel label2 = new JLabel();
|
|
||||||
tabbedPane3 = new JideTabbedPane();
|
tabbedPane3 = new JideTabbedPane();
|
||||||
JPanel panel5 = new JPanel();
|
|
||||||
JLabel label5 = new JLabel();
|
|
||||||
JPanel panel6 = new JPanel();
|
|
||||||
JLabel label6 = new JLabel();
|
|
||||||
tabbedPane2 = new JideTabbedPane();
|
tabbedPane2 = new JideTabbedPane();
|
||||||
JPanel panel3 = new JPanel();
|
|
||||||
JLabel label3 = new JLabel();
|
|
||||||
JPanel panel4 = new JPanel();
|
|
||||||
JLabel label4 = new JLabel();
|
|
||||||
tabbedPane4 = new JideTabbedPane();
|
tabbedPane4 = new JideTabbedPane();
|
||||||
JPanel panel7 = new JPanel();
|
FlatTestFrame.NoRightToLeftPanel tabbedPaneControlPanel = new FlatTestFrame.NoRightToLeftPanel();
|
||||||
JLabel label7 = new JLabel();
|
|
||||||
JPanel panel8 = new JPanel();
|
|
||||||
JLabel label8 = new JLabel();
|
|
||||||
JPanel panel14 = new JPanel();
|
|
||||||
moreTabsCheckBox = new JCheckBox();
|
|
||||||
tabScrollCheckBox = new JCheckBox();
|
tabScrollCheckBox = new JCheckBox();
|
||||||
|
JLabel tabCountLabel = new JLabel();
|
||||||
|
tabCountSpinner = new JSpinner();
|
||||||
|
customTabsCheckBox = new JCheckBox();
|
||||||
|
htmlTabsCheckBox = new JCheckBox();
|
||||||
|
multiLineTabsCheckBox = new JCheckBox();
|
||||||
|
tabBackForegroundCheckBox = new JCheckBox();
|
||||||
|
tabIconsCheckBox = new JCheckBox();
|
||||||
|
tabIconSizeSpinner = new JSpinner();
|
||||||
|
tabsClosableCheckBox = new JCheckBox();
|
||||||
|
showCloseButtonOnTabCheckBox = new JCheckBox();
|
||||||
|
showCloseButtonOnSelectedTabCheckBox = new JCheckBox();
|
||||||
|
JLabel tabPlacementLabel = new JLabel();
|
||||||
|
tabPlacementField = new FlatTestEnumComboBox<>();
|
||||||
|
secondTabClosableCheckBox = new JCheckBox();
|
||||||
|
showCloseButtonOnMouseOverCheckBox = new JCheckBox();
|
||||||
|
JLabel tabAreaAlignmentLabel = new JLabel();
|
||||||
|
tabAlignmentField = new FlatTestEnumComboBox<>();
|
||||||
|
JLabel tabResizeModeLabel = new JLabel();
|
||||||
|
tabResizeModeField = new FlatTestEnumComboBox<>();
|
||||||
|
leadingComponentCheckBox = new JCheckBox();
|
||||||
|
customBorderCheckBox = new JCheckBox();
|
||||||
|
tabAreaInsetsCheckBox = new JCheckBox();
|
||||||
|
trailingComponentCheckBox = new JCheckBox();
|
||||||
hasFullBorderCheckBox = new JCheckBox();
|
hasFullBorderCheckBox = new JCheckBox();
|
||||||
|
boldActiveTabCheckBox = new JCheckBox();
|
||||||
|
showTabButtonsCheckBox = new JCheckBox();
|
||||||
|
smallerInsetsCheckBox = new JCheckBox();
|
||||||
|
showGripperCheckBox = new JCheckBox();
|
||||||
|
showTabSeparatorsCheckBox = new JCheckBox();
|
||||||
|
tabEditingAllowedCheckBox = new JCheckBox();
|
||||||
|
hideTabAreaWithOneTabCheckBox = new JCheckBox();
|
||||||
CellConstraints cc = new CellConstraints();
|
CellConstraints cc = new CellConstraints();
|
||||||
|
|
||||||
//======== this ========
|
//======== this ========
|
||||||
@@ -122,156 +445,217 @@ public class FlatJideOssContainerTest
|
|||||||
{
|
{
|
||||||
panel9.setOpaque(false);
|
panel9.setOpaque(false);
|
||||||
panel9.setLayout(new FormLayout(
|
panel9.setLayout(new FormLayout(
|
||||||
"70dlu:grow, $lcgap, 70dlu:grow",
|
"70dlu:grow, $ugap, 70dlu:grow",
|
||||||
"pref, 2*($lgap, fill:70dlu:grow), $lgap, pref"));
|
"pref, $lgap, fill:80dlu:grow, $ugap, fill:80dlu:grow, $pgap, pref"));
|
||||||
|
|
||||||
//---- tabbedPaneLabel ----
|
//---- tabbedPaneLabel ----
|
||||||
tabbedPaneLabel.setText("JideTabbedPane:");
|
tabbedPaneLabel.setText("JideTabbedPane:");
|
||||||
panel9.add(tabbedPaneLabel, cc.xy(1, 1));
|
panel9.add(tabbedPaneLabel, cc.xy(1, 1));
|
||||||
|
|
||||||
//======== tabbedPane1 ========
|
|
||||||
{
|
|
||||||
|
|
||||||
//======== panel1 ========
|
|
||||||
{
|
|
||||||
panel1.setLayout(new FlowLayout());
|
|
||||||
|
|
||||||
//---- label1 ----
|
|
||||||
label1.setText("TOP");
|
|
||||||
panel1.add(label1);
|
|
||||||
}
|
|
||||||
tabbedPane1.addTab("Tab 1", panel1);
|
|
||||||
|
|
||||||
//======== panel2 ========
|
|
||||||
{
|
|
||||||
panel2.setBorder(new LineBorder(Color.magenta));
|
|
||||||
panel2.setLayout(new FlowLayout());
|
|
||||||
}
|
|
||||||
tabbedPane1.addTab("Tab 2", panel2);
|
|
||||||
|
|
||||||
//---- label2 ----
|
|
||||||
label2.setText("text");
|
|
||||||
tabbedPane1.addTab("Tab 3", label2);
|
|
||||||
}
|
|
||||||
panel9.add(tabbedPane1, cc.xy(1, 3));
|
panel9.add(tabbedPane1, cc.xy(1, 3));
|
||||||
|
|
||||||
//======== tabbedPane3 ========
|
//======== tabbedPane3 ========
|
||||||
{
|
{
|
||||||
tabbedPane3.setTabPlacement(SwingConstants.LEFT);
|
tabbedPane3.setTabPlacement(SwingConstants.LEFT);
|
||||||
|
|
||||||
//======== panel5 ========
|
|
||||||
{
|
|
||||||
panel5.setLayout(new FlowLayout());
|
|
||||||
|
|
||||||
//---- label5 ----
|
|
||||||
label5.setText("LEFT");
|
|
||||||
panel5.add(label5);
|
|
||||||
}
|
|
||||||
tabbedPane3.addTab("Tab 1", panel5);
|
|
||||||
|
|
||||||
//======== panel6 ========
|
|
||||||
{
|
|
||||||
panel6.setBorder(new LineBorder(Color.magenta));
|
|
||||||
panel6.setLayout(new FlowLayout());
|
|
||||||
}
|
|
||||||
tabbedPane3.addTab("Tab 2", panel6);
|
|
||||||
|
|
||||||
//---- label6 ----
|
|
||||||
label6.setText("text");
|
|
||||||
tabbedPane3.addTab("Tab 3", label6);
|
|
||||||
}
|
}
|
||||||
panel9.add(tabbedPane3, cc.xy(3, 3));
|
panel9.add(tabbedPane3, cc.xy(3, 3));
|
||||||
|
|
||||||
//======== tabbedPane2 ========
|
//======== tabbedPane2 ========
|
||||||
{
|
{
|
||||||
tabbedPane2.setTabPlacement(SwingConstants.BOTTOM);
|
tabbedPane2.setTabPlacement(SwingConstants.BOTTOM);
|
||||||
|
|
||||||
//======== panel3 ========
|
|
||||||
{
|
|
||||||
panel3.setLayout(new FlowLayout());
|
|
||||||
|
|
||||||
//---- label3 ----
|
|
||||||
label3.setText("BOTTOM");
|
|
||||||
panel3.add(label3);
|
|
||||||
}
|
|
||||||
tabbedPane2.addTab("Tab 1", panel3);
|
|
||||||
|
|
||||||
//======== panel4 ========
|
|
||||||
{
|
|
||||||
panel4.setBorder(new LineBorder(Color.magenta));
|
|
||||||
panel4.setLayout(new FlowLayout());
|
|
||||||
}
|
|
||||||
tabbedPane2.addTab("Tab 2", panel4);
|
|
||||||
tabbedPane2.setEnabledAt(1, false);
|
|
||||||
|
|
||||||
//---- label4 ----
|
|
||||||
label4.setText("text");
|
|
||||||
tabbedPane2.addTab("Tab 3", label4);
|
|
||||||
}
|
}
|
||||||
panel9.add(tabbedPane2, cc.xy(1, 5));
|
panel9.add(tabbedPane2, cc.xy(1, 5));
|
||||||
|
|
||||||
//======== tabbedPane4 ========
|
//======== tabbedPane4 ========
|
||||||
{
|
{
|
||||||
tabbedPane4.setTabPlacement(SwingConstants.RIGHT);
|
tabbedPane4.setTabPlacement(SwingConstants.RIGHT);
|
||||||
|
|
||||||
//======== panel7 ========
|
|
||||||
{
|
|
||||||
panel7.setLayout(new FlowLayout());
|
|
||||||
|
|
||||||
//---- label7 ----
|
|
||||||
label7.setText("RIGHT");
|
|
||||||
panel7.add(label7);
|
|
||||||
}
|
|
||||||
tabbedPane4.addTab("Tab 1", panel7);
|
|
||||||
|
|
||||||
//======== panel8 ========
|
|
||||||
{
|
|
||||||
panel8.setBorder(new LineBorder(Color.magenta));
|
|
||||||
panel8.setLayout(new FlowLayout());
|
|
||||||
}
|
|
||||||
tabbedPane4.addTab("Tab 2", panel8);
|
|
||||||
|
|
||||||
//---- label8 ----
|
|
||||||
label8.setText("text");
|
|
||||||
tabbedPane4.addTab("Tab 3", label8);
|
|
||||||
}
|
}
|
||||||
panel9.add(tabbedPane4, cc.xy(3, 5));
|
panel9.add(tabbedPane4, cc.xy(3, 5));
|
||||||
|
|
||||||
//======== panel14 ========
|
//======== tabbedPaneControlPanel ========
|
||||||
{
|
{
|
||||||
panel14.setOpaque(false);
|
tabbedPaneControlPanel.setOpaque(false);
|
||||||
panel14.setLayout(new MigLayout(
|
tabbedPaneControlPanel.setLayout(new MigLayout(
|
||||||
"insets 0,hidemode 3",
|
"insets 0,hidemode 3",
|
||||||
// columns
|
// columns
|
||||||
"[]" +
|
"[]" +
|
||||||
"[]" +
|
"[fill]" +
|
||||||
"[]",
|
"[]",
|
||||||
// rows
|
// rows
|
||||||
"[center]"));
|
"[center]" +
|
||||||
|
"[]" +
|
||||||
//---- moreTabsCheckBox ----
|
"[]" +
|
||||||
moreTabsCheckBox.setText("more tabs");
|
"[]" +
|
||||||
moreTabsCheckBox.setMnemonic('M');
|
"[]" +
|
||||||
moreTabsCheckBox.addActionListener(e -> moreTabsChanged());
|
"[]para" +
|
||||||
panel14.add(moreTabsCheckBox, "cell 0 0");
|
"[]" +
|
||||||
|
"[]para" +
|
||||||
|
"[]" +
|
||||||
|
"[]" +
|
||||||
|
"[]"));
|
||||||
|
|
||||||
//---- tabScrollCheckBox ----
|
//---- tabScrollCheckBox ----
|
||||||
tabScrollCheckBox.setText("tabLayoutPolicy = SCROLL");
|
tabScrollCheckBox.setText("Use scroll layout");
|
||||||
tabScrollCheckBox.setMnemonic('S');
|
tabScrollCheckBox.setMnemonic('S');
|
||||||
tabScrollCheckBox.setSelected(true);
|
|
||||||
tabScrollCheckBox.addActionListener(e -> tabScrollChanged());
|
tabScrollCheckBox.addActionListener(e -> tabScrollChanged());
|
||||||
panel14.add(tabScrollCheckBox, "cell 1 0,alignx left,growx 0");
|
tabbedPaneControlPanel.add(tabScrollCheckBox, "cell 0 0,alignx left,growx 0");
|
||||||
|
|
||||||
|
//---- tabCountLabel ----
|
||||||
|
tabCountLabel.setText("Tab count:");
|
||||||
|
tabbedPaneControlPanel.add(tabCountLabel, "cell 1 0");
|
||||||
|
|
||||||
|
//---- tabCountSpinner ----
|
||||||
|
tabCountSpinner.setModel(new SpinnerNumberModel(4, 0, null, 1));
|
||||||
|
tabCountSpinner.addChangeListener(e -> tabCountChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabCountSpinner, "cell 1 0");
|
||||||
|
|
||||||
|
//---- customTabsCheckBox ----
|
||||||
|
customTabsCheckBox.setText("Custom tabs");
|
||||||
|
customTabsCheckBox.addActionListener(e -> customTabsChanged());
|
||||||
|
tabbedPaneControlPanel.add(customTabsCheckBox, "cell 2 0");
|
||||||
|
|
||||||
|
//---- htmlTabsCheckBox ----
|
||||||
|
htmlTabsCheckBox.setText("HTML");
|
||||||
|
htmlTabsCheckBox.addActionListener(e -> htmlTabsChanged());
|
||||||
|
tabbedPaneControlPanel.add(htmlTabsCheckBox, "cell 2 0");
|
||||||
|
|
||||||
|
//---- multiLineTabsCheckBox ----
|
||||||
|
multiLineTabsCheckBox.setText("multi-line");
|
||||||
|
multiLineTabsCheckBox.addActionListener(e -> htmlTabsChanged());
|
||||||
|
tabbedPaneControlPanel.add(multiLineTabsCheckBox, "cell 2 0");
|
||||||
|
|
||||||
|
//---- tabBackForegroundCheckBox ----
|
||||||
|
tabBackForegroundCheckBox.setText("Tab back/foreground");
|
||||||
|
tabBackForegroundCheckBox.addActionListener(e -> tabBackForegroundChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabBackForegroundCheckBox, "cell 2 1");
|
||||||
|
|
||||||
|
//---- tabIconsCheckBox ----
|
||||||
|
tabIconsCheckBox.setText("Tab icons");
|
||||||
|
tabIconsCheckBox.addActionListener(e -> tabIconsChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabIconsCheckBox, "cell 2 2");
|
||||||
|
|
||||||
|
//---- tabIconSizeSpinner ----
|
||||||
|
tabIconSizeSpinner.setModel(new SpinnerListModel(new String[] {"16", "24", "32", "48", "64"}));
|
||||||
|
tabIconSizeSpinner.setEnabled(false);
|
||||||
|
tabIconSizeSpinner.addChangeListener(e -> tabIconsChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabIconSizeSpinner, "cell 2 2");
|
||||||
|
|
||||||
|
//---- tabsClosableCheckBox ----
|
||||||
|
tabsClosableCheckBox.setText("Tabs closable");
|
||||||
|
tabsClosableCheckBox.addActionListener(e -> tabsClosableChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabsClosableCheckBox, "cell 2 3");
|
||||||
|
|
||||||
|
//---- showCloseButtonOnTabCheckBox ----
|
||||||
|
showCloseButtonOnTabCheckBox.setText("on tab");
|
||||||
|
showCloseButtonOnTabCheckBox.setSelected(true);
|
||||||
|
showCloseButtonOnTabCheckBox.addActionListener(e -> tabsClosableChanged());
|
||||||
|
tabbedPaneControlPanel.add(showCloseButtonOnTabCheckBox, "cell 2 3");
|
||||||
|
|
||||||
|
//---- showCloseButtonOnSelectedTabCheckBox ----
|
||||||
|
showCloseButtonOnSelectedTabCheckBox.setText("show on selected");
|
||||||
|
showCloseButtonOnSelectedTabCheckBox.addActionListener(e -> showCloseButtonOnSelectedTabChanged());
|
||||||
|
tabbedPaneControlPanel.add(showCloseButtonOnSelectedTabCheckBox, "cell 2 3");
|
||||||
|
|
||||||
|
//---- tabPlacementLabel ----
|
||||||
|
tabPlacementLabel.setText("Tab placement:");
|
||||||
|
tabbedPaneControlPanel.add(tabPlacementLabel, "cell 0 4");
|
||||||
|
|
||||||
|
//---- tabPlacementField ----
|
||||||
|
tabPlacementField.addActionListener(e -> tabPlacementChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabPlacementField, "cell 1 4");
|
||||||
|
|
||||||
|
//---- secondTabClosableCheckBox ----
|
||||||
|
secondTabClosableCheckBox.setText("Second Tab closable");
|
||||||
|
secondTabClosableCheckBox.setSelected(true);
|
||||||
|
secondTabClosableCheckBox.addActionListener(e -> secondTabClosableChanged());
|
||||||
|
tabbedPaneControlPanel.add(secondTabClosableCheckBox, "cell 2 4");
|
||||||
|
|
||||||
|
//---- showCloseButtonOnMouseOverCheckBox ----
|
||||||
|
showCloseButtonOnMouseOverCheckBox.setText("show on hover");
|
||||||
|
showCloseButtonOnMouseOverCheckBox.addActionListener(e -> showCloseButtonOnMouseOverChanged());
|
||||||
|
tabbedPaneControlPanel.add(showCloseButtonOnMouseOverCheckBox, "cell 2 4");
|
||||||
|
|
||||||
|
//---- tabAreaAlignmentLabel ----
|
||||||
|
tabAreaAlignmentLabel.setText("Tab alignment:");
|
||||||
|
tabbedPaneControlPanel.add(tabAreaAlignmentLabel, "cell 0 5");
|
||||||
|
|
||||||
|
//---- tabAlignmentField ----
|
||||||
|
tabAlignmentField.addActionListener(e -> tabAlignmentChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabAlignmentField, "cell 1 5");
|
||||||
|
|
||||||
|
//---- tabResizeModeLabel ----
|
||||||
|
tabResizeModeLabel.setText("Tab resize mode:");
|
||||||
|
tabbedPaneControlPanel.add(tabResizeModeLabel, "cell 2 5");
|
||||||
|
|
||||||
|
//---- tabResizeModeField ----
|
||||||
|
tabResizeModeField.addActionListener(e -> tabResizeModeChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabResizeModeField, "cell 2 5");
|
||||||
|
|
||||||
|
//---- leadingComponentCheckBox ----
|
||||||
|
leadingComponentCheckBox.setText("Leading component");
|
||||||
|
leadingComponentCheckBox.addActionListener(e -> leadingComponentChanged());
|
||||||
|
tabbedPaneControlPanel.add(leadingComponentCheckBox, "cell 0 6");
|
||||||
|
|
||||||
|
//---- customBorderCheckBox ----
|
||||||
|
customBorderCheckBox.setText("Custom border");
|
||||||
|
customBorderCheckBox.addActionListener(e -> customBorderChanged());
|
||||||
|
tabbedPaneControlPanel.add(customBorderCheckBox, "cell 1 6");
|
||||||
|
|
||||||
|
//---- tabAreaInsetsCheckBox ----
|
||||||
|
tabAreaInsetsCheckBox.setText("Tab area insets (5,5,10,10)");
|
||||||
|
tabAreaInsetsCheckBox.addActionListener(e -> tabAreaInsetsChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabAreaInsetsCheckBox, "cell 2 6");
|
||||||
|
|
||||||
|
//---- trailingComponentCheckBox ----
|
||||||
|
trailingComponentCheckBox.setText("Trailing component");
|
||||||
|
trailingComponentCheckBox.addActionListener(e -> trailingComponentChanged());
|
||||||
|
tabbedPaneControlPanel.add(trailingComponentCheckBox, "cell 0 7");
|
||||||
|
|
||||||
//---- hasFullBorderCheckBox ----
|
//---- hasFullBorderCheckBox ----
|
||||||
hasFullBorderCheckBox.setText("JTabbedPane.hasFullBorder");
|
hasFullBorderCheckBox.setText("Show content border");
|
||||||
hasFullBorderCheckBox.setMnemonic('F');
|
|
||||||
hasFullBorderCheckBox.addActionListener(e -> hasFullBorderChanged());
|
hasFullBorderCheckBox.addActionListener(e -> hasFullBorderChanged());
|
||||||
panel14.add(hasFullBorderCheckBox, "cell 2 0,alignx left,growx 0");
|
tabbedPaneControlPanel.add(hasFullBorderCheckBox, "cell 1 7,alignx left,growx 0");
|
||||||
|
|
||||||
|
//---- boldActiveTabCheckBox ----
|
||||||
|
boldActiveTabCheckBox.setText("Bold active tab");
|
||||||
|
boldActiveTabCheckBox.addActionListener(e -> boldActiveTabChanged());
|
||||||
|
tabbedPaneControlPanel.add(boldActiveTabCheckBox, "cell 0 8");
|
||||||
|
|
||||||
|
//---- showTabButtonsCheckBox ----
|
||||||
|
showTabButtonsCheckBox.setText("Show tab buttons always");
|
||||||
|
showTabButtonsCheckBox.addActionListener(e -> showTabButtonsChanged());
|
||||||
|
tabbedPaneControlPanel.add(showTabButtonsCheckBox, "cell 1 8");
|
||||||
|
|
||||||
|
//---- smallerInsetsCheckBox ----
|
||||||
|
smallerInsetsCheckBox.setText("Smaller tab insets (2,2,2,2)");
|
||||||
|
smallerInsetsCheckBox.addActionListener(e -> smallerInsetsChanged());
|
||||||
|
tabbedPaneControlPanel.add(smallerInsetsCheckBox, "cell 2 8");
|
||||||
|
|
||||||
|
//---- showGripperCheckBox ----
|
||||||
|
showGripperCheckBox.setText("Show gripper");
|
||||||
|
showGripperCheckBox.addActionListener(e -> showGripperChanged());
|
||||||
|
tabbedPaneControlPanel.add(showGripperCheckBox, "cell 0 9");
|
||||||
|
|
||||||
|
//---- showTabSeparatorsCheckBox ----
|
||||||
|
showTabSeparatorsCheckBox.setText("Show tab separators");
|
||||||
|
showTabSeparatorsCheckBox.addActionListener(e -> showTabSeparatorsChanged());
|
||||||
|
tabbedPaneControlPanel.add(showTabSeparatorsCheckBox, "cell 1 9");
|
||||||
|
|
||||||
|
//---- tabEditingAllowedCheckBox ----
|
||||||
|
tabEditingAllowedCheckBox.setText("Tab editing allowed");
|
||||||
|
tabEditingAllowedCheckBox.addActionListener(e -> tabEditingAllowedChanged());
|
||||||
|
tabbedPaneControlPanel.add(tabEditingAllowedCheckBox, "cell 0 10");
|
||||||
|
|
||||||
|
//---- hideTabAreaWithOneTabCheckBox ----
|
||||||
|
hideTabAreaWithOneTabCheckBox.setText("Hide tab area with one tab");
|
||||||
|
hideTabAreaWithOneTabCheckBox.addActionListener(e -> hideTabAreaWithOneTabChanged());
|
||||||
|
tabbedPaneControlPanel.add(hideTabAreaWithOneTabCheckBox, "cell 1 10");
|
||||||
}
|
}
|
||||||
panel9.add(panel14, cc.xywh(1, 7, 3, 1));
|
panel9.add(tabbedPaneControlPanel, cc.xywh(1, 7, 3, 1));
|
||||||
}
|
}
|
||||||
add(panel9, "cell 0 0");
|
add(panel9, "cell 0 0");
|
||||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
|
||||||
|
allTabbedPanes = new JideTabbedPane[] { tabbedPane1, tabbedPane2, tabbedPane3, tabbedPane4 };
|
||||||
}
|
}
|
||||||
|
|
||||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
@@ -279,8 +663,158 @@ public class FlatJideOssContainerTest
|
|||||||
private JideTabbedPane tabbedPane3;
|
private JideTabbedPane tabbedPane3;
|
||||||
private JideTabbedPane tabbedPane2;
|
private JideTabbedPane tabbedPane2;
|
||||||
private JideTabbedPane tabbedPane4;
|
private JideTabbedPane tabbedPane4;
|
||||||
private JCheckBox moreTabsCheckBox;
|
|
||||||
private JCheckBox tabScrollCheckBox;
|
private JCheckBox tabScrollCheckBox;
|
||||||
|
private JSpinner tabCountSpinner;
|
||||||
|
private JCheckBox customTabsCheckBox;
|
||||||
|
private JCheckBox htmlTabsCheckBox;
|
||||||
|
private JCheckBox multiLineTabsCheckBox;
|
||||||
|
private JCheckBox tabBackForegroundCheckBox;
|
||||||
|
private JCheckBox tabIconsCheckBox;
|
||||||
|
private JSpinner tabIconSizeSpinner;
|
||||||
|
private JCheckBox tabsClosableCheckBox;
|
||||||
|
private JCheckBox showCloseButtonOnTabCheckBox;
|
||||||
|
private JCheckBox showCloseButtonOnSelectedTabCheckBox;
|
||||||
|
private FlatTestEnumComboBox<TabPlacement> tabPlacementField;
|
||||||
|
private JCheckBox secondTabClosableCheckBox;
|
||||||
|
private JCheckBox showCloseButtonOnMouseOverCheckBox;
|
||||||
|
private FlatTestEnumComboBox<JideTabAlignment> tabAlignmentField;
|
||||||
|
private FlatTestEnumComboBox<JideTabResizeMode> tabResizeModeField;
|
||||||
|
private JCheckBox leadingComponentCheckBox;
|
||||||
|
private JCheckBox customBorderCheckBox;
|
||||||
|
private JCheckBox tabAreaInsetsCheckBox;
|
||||||
|
private JCheckBox trailingComponentCheckBox;
|
||||||
private JCheckBox hasFullBorderCheckBox;
|
private JCheckBox hasFullBorderCheckBox;
|
||||||
|
private JCheckBox boldActiveTabCheckBox;
|
||||||
|
private JCheckBox showTabButtonsCheckBox;
|
||||||
|
private JCheckBox smallerInsetsCheckBox;
|
||||||
|
private JCheckBox showGripperCheckBox;
|
||||||
|
private JCheckBox showTabSeparatorsCheckBox;
|
||||||
|
private JCheckBox tabEditingAllowedCheckBox;
|
||||||
|
private JCheckBox hideTabAreaWithOneTabCheckBox;
|
||||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
|
||||||
|
private JideTabbedPane[] allTabbedPanes;
|
||||||
|
|
||||||
|
//---- enum TabPlacement --------------------------------------------------
|
||||||
|
|
||||||
|
enum TabPlacement {
|
||||||
|
top( SwingConstants.TOP ),
|
||||||
|
bottom( SwingConstants.BOTTOM ),
|
||||||
|
left( SwingConstants.LEFT ),
|
||||||
|
right( SwingConstants.RIGHT );
|
||||||
|
|
||||||
|
public final int value;
|
||||||
|
|
||||||
|
TabPlacement( int value ) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//---- enum JideTabAlignment ----------------------------------------------
|
||||||
|
|
||||||
|
enum JideTabAlignment {
|
||||||
|
leading( SwingConstants.LEADING ),
|
||||||
|
center( SwingConstants.CENTER );
|
||||||
|
|
||||||
|
public final int value;
|
||||||
|
|
||||||
|
JideTabAlignment( int value ) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//---- enum JideTabResizeMode ---------------------------------------------
|
||||||
|
|
||||||
|
enum JideTabResizeMode {
|
||||||
|
none( JideTabbedPane.RESIZE_MODE_NONE ),
|
||||||
|
fit( JideTabbedPane.RESIZE_MODE_FIT ),
|
||||||
|
fixed( JideTabbedPane.RESIZE_MODE_FIXED ),
|
||||||
|
compressed( JideTabbedPane.RESIZE_MODE_COMPRESSED );
|
||||||
|
|
||||||
|
public final int value;
|
||||||
|
|
||||||
|
JideTabResizeMode( int value ) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//---- class Tab1Panel ----------------------------------------------------
|
||||||
|
|
||||||
|
private static class Panel1
|
||||||
|
extends JPanel
|
||||||
|
{
|
||||||
|
private Panel1() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
|
JLabel label1 = new JLabel();
|
||||||
|
JTextField textField4 = new JTextField();
|
||||||
|
JButton button3 = new JButton();
|
||||||
|
|
||||||
|
//======== this ========
|
||||||
|
setLayout(new MigLayout(
|
||||||
|
"hidemode 3,align center center",
|
||||||
|
// columns
|
||||||
|
"[fill]" +
|
||||||
|
"[fill]" +
|
||||||
|
"[fill]",
|
||||||
|
// rows
|
||||||
|
"[fill]"));
|
||||||
|
|
||||||
|
//---- label1 ----
|
||||||
|
label1.setText("text");
|
||||||
|
add(label1, "cell 0 0");
|
||||||
|
|
||||||
|
//---- textField4 ----
|
||||||
|
textField4.setText("some text");
|
||||||
|
add(textField4, "cell 1 0");
|
||||||
|
|
||||||
|
//---- button3 ----
|
||||||
|
button3.setText("...");
|
||||||
|
add(button3, "cell 2 0");
|
||||||
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
}
|
||||||
|
|
||||||
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class Tab2Panel ----------------------------------------------------
|
||||||
|
|
||||||
|
private static class Panel2
|
||||||
|
extends JPanel
|
||||||
|
{
|
||||||
|
private Panel2() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
|
JTextField textField5 = new JTextField();
|
||||||
|
JButton button4 = new JButton();
|
||||||
|
|
||||||
|
//======== this ========
|
||||||
|
setLayout(new MigLayout(
|
||||||
|
"insets 0,hidemode 3,align center center",
|
||||||
|
// columns
|
||||||
|
"[fill]" +
|
||||||
|
"[fill]",
|
||||||
|
// rows
|
||||||
|
"[fill]"));
|
||||||
|
|
||||||
|
//---- textField5 ----
|
||||||
|
textField5.setText("more text");
|
||||||
|
add(textField5, "cell 0 0");
|
||||||
|
|
||||||
|
//---- button4 ----
|
||||||
|
button4.setText("...");
|
||||||
|
add(button4, "cell 1 0");
|
||||||
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
}
|
||||||
|
|
||||||
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
|
JFDML JFormDesigner: "7.0.3.1.342" Java: "16" encoding: "UTF-8"
|
||||||
|
|
||||||
new FormModel {
|
new FormModel {
|
||||||
contentType: "form/swing"
|
contentType: "form/swing"
|
||||||
@@ -13,8 +13,8 @@ new FormModel {
|
|||||||
} ) {
|
} ) {
|
||||||
name: "this"
|
name: "this"
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jgoodies.forms.layout.FormLayout ) {
|
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jgoodies.forms.layout.FormLayout ) {
|
||||||
"$columnSpecs": "70dlu:grow, labelcompgap, 70dlu:grow"
|
"$columnSpecs": "70dlu:grow, unrelgap, 70dlu:grow"
|
||||||
"$rowSpecs": "pref, linegap, fill:70dlu:grow, linegap, fill:70dlu:grow, linegap, pref"
|
"$rowSpecs": "pref, linegap, fill:80dlu:grow, unrelgap, fill:80dlu:grow, pargap, pref"
|
||||||
} ) {
|
} ) {
|
||||||
name: "panel9"
|
name: "panel9"
|
||||||
"opaque": false
|
"opaque": false
|
||||||
@@ -29,27 +29,6 @@ new FormModel {
|
|||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel1"
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label1"
|
|
||||||
"text": "TOP"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 1"
|
|
||||||
} )
|
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel2"
|
|
||||||
"border": &LineBorder0 new javax.swing.border.LineBorder( sfield java.awt.Color magenta, 1, false )
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 2"
|
|
||||||
} )
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label2"
|
|
||||||
"text": "text"
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 3"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
||||||
"gridX": 1
|
"gridX": 1
|
||||||
"gridY": 3
|
"gridY": 3
|
||||||
@@ -60,30 +39,9 @@ new FormModel {
|
|||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel5"
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label5"
|
|
||||||
"text": "LEFT"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 1"
|
|
||||||
} )
|
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel6"
|
|
||||||
"border": #LineBorder0
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 2"
|
|
||||||
} )
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label6"
|
|
||||||
"text": "text"
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 3"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
||||||
"gridX": 3
|
|
||||||
"gridY": 3
|
"gridY": 3
|
||||||
|
"gridX": 3
|
||||||
} )
|
} )
|
||||||
add( new FormContainer( "com.jidesoft.swing.JideTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
|
add( new FormContainer( "com.jidesoft.swing.JideTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
|
||||||
name: "tabbedPane2"
|
name: "tabbedPane2"
|
||||||
@@ -91,28 +49,6 @@ new FormModel {
|
|||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel3"
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label3"
|
|
||||||
"text": "BOTTOM"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 1"
|
|
||||||
} )
|
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel4"
|
|
||||||
"border": #LineBorder0
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 2"
|
|
||||||
"enabled": false
|
|
||||||
} )
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label4"
|
|
||||||
"text": "text"
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 3"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
||||||
"gridY": 5
|
"gridY": 5
|
||||||
} )
|
} )
|
||||||
@@ -122,71 +58,335 @@ new FormModel {
|
|||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel7"
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label7"
|
|
||||||
"text": "RIGHT"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 1"
|
|
||||||
} )
|
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
|
|
||||||
name: "panel8"
|
|
||||||
"border": #LineBorder0
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 2"
|
|
||||||
} )
|
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
|
||||||
name: "label8"
|
|
||||||
"text": "text"
|
|
||||||
}, new FormLayoutConstraints( null ) {
|
|
||||||
"title": "Tab 3"
|
|
||||||
} )
|
|
||||||
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
||||||
"gridX": 3
|
|
||||||
"gridY": 5
|
"gridY": 5
|
||||||
|
"gridX": 3
|
||||||
} )
|
} )
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestFrame$NoRightToLeftPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
"$layoutConstraints": "insets 0,hidemode 3"
|
"$layoutConstraints": "insets 0,hidemode 3"
|
||||||
"$columnConstraints": "[][][]"
|
"$columnConstraints": "[][fill][]"
|
||||||
"$rowConstraints": "[center]"
|
"$rowConstraints": "[center][][][][][]para[][]para[][][]"
|
||||||
} ) {
|
} ) {
|
||||||
name: "panel14"
|
name: "tabbedPaneControlPanel"
|
||||||
"opaque": false
|
"opaque": false
|
||||||
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
|
||||||
name: "moreTabsCheckBox"
|
|
||||||
"text": "more tabs"
|
|
||||||
"mnemonic": 77
|
|
||||||
auxiliary() {
|
|
||||||
"JavaCodeGenerator.variableLocal": false
|
|
||||||
}
|
|
||||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "moreTabsChanged", false ) )
|
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
|
||||||
"value": "cell 0 0"
|
|
||||||
} )
|
|
||||||
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
name: "tabScrollCheckBox"
|
name: "tabScrollCheckBox"
|
||||||
"text": "tabLayoutPolicy = SCROLL"
|
"text": "Use scroll layout"
|
||||||
"mnemonic": 83
|
"mnemonic": 83
|
||||||
"selected": true
|
|
||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabScrollChanged", false ) )
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabScrollChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 0,alignx left,growx 0"
|
"value": "cell 0 0,alignx left,growx 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "tabCountLabel"
|
||||||
|
"text": "Tab count:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JSpinner" ) {
|
||||||
|
name: "tabCountSpinner"
|
||||||
|
"model": new javax.swing.SpinnerNumberModel {
|
||||||
|
minimum: 0
|
||||||
|
value: 4
|
||||||
|
}
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "tabCountChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "customTabsCheckBox"
|
||||||
|
"text": "Custom tabs"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "customTabsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "htmlTabsCheckBox"
|
||||||
|
"text": "HTML"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "htmlTabsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "multiLineTabsCheckBox"
|
||||||
|
"text": "multi-line"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "htmlTabsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "tabBackForegroundCheckBox"
|
||||||
|
"text": "Tab back/foreground"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabBackForegroundChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 1"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "tabIconsCheckBox"
|
||||||
|
"text": "Tab icons"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabIconsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 2"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JSpinner" ) {
|
||||||
|
name: "tabIconSizeSpinner"
|
||||||
|
"model": new javax.swing.SpinnerListModel {
|
||||||
|
list: new java.util.ArrayList {
|
||||||
|
add( "16" )
|
||||||
|
add( "24" )
|
||||||
|
add( "32" )
|
||||||
|
add( "48" )
|
||||||
|
add( "64" )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"enabled": false
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "tabIconsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 2"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "tabsClosableCheckBox"
|
||||||
|
"text": "Tabs closable"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabsClosableChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 3"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showCloseButtonOnTabCheckBox"
|
||||||
|
"text": "on tab"
|
||||||
|
"selected": true
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabsClosableChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 3"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showCloseButtonOnSelectedTabCheckBox"
|
||||||
|
"text": "show on selected"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showCloseButtonOnSelectedTabChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 3"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "tabPlacementLabel"
|
||||||
|
"text": "Tab placement:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 4"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
|
||||||
|
name: "tabPlacementField"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
"JavaCodeGenerator.typeParameters": "TabPlacement"
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabPlacementChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 4"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "secondTabClosableCheckBox"
|
||||||
|
"text": "Second Tab closable"
|
||||||
|
"selected": true
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "secondTabClosableChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 4"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showCloseButtonOnMouseOverCheckBox"
|
||||||
|
"text": "show on hover"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showCloseButtonOnMouseOverChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 4"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "tabAreaAlignmentLabel"
|
||||||
|
"text": "Tab alignment:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 5"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
|
||||||
|
name: "tabAlignmentField"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
"JavaCodeGenerator.typeParameters": "JideTabAlignment"
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabAlignmentChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 5"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "tabResizeModeLabel"
|
||||||
|
"text": "Tab resize mode:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 5"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
|
||||||
|
name: "tabResizeModeField"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
"JavaCodeGenerator.typeParameters": "JideTabResizeMode"
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabResizeModeChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 5"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "leadingComponentCheckBox"
|
||||||
|
"text": "Leading component"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "leadingComponentChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 6"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "customBorderCheckBox"
|
||||||
|
"text": "Custom border"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "customBorderChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 6"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "tabAreaInsetsCheckBox"
|
||||||
|
"text": "Tab area insets (5,5,10,10)"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabAreaInsetsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 6"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "trailingComponentCheckBox"
|
||||||
|
"text": "Trailing component"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "trailingComponentChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 7"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
name: "hasFullBorderCheckBox"
|
name: "hasFullBorderCheckBox"
|
||||||
"text": "JTabbedPane.hasFullBorder"
|
"text": "Show content border"
|
||||||
"mnemonic": 70
|
|
||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hasFullBorderChanged", false ) )
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hasFullBorderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 2 0,alignx left,growx 0"
|
"value": "cell 1 7,alignx left,growx 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "boldActiveTabCheckBox"
|
||||||
|
"text": "Bold active tab"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "boldActiveTabChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 8"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showTabButtonsCheckBox"
|
||||||
|
"text": "Show tab buttons always"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showTabButtonsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 8"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "smallerInsetsCheckBox"
|
||||||
|
"text": "Smaller tab insets (2,2,2,2)"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "smallerInsetsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 8"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showGripperCheckBox"
|
||||||
|
"text": "Show gripper"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showGripperChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 9"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "showTabSeparatorsCheckBox"
|
||||||
|
"text": "Show tab separators"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showTabSeparatorsChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 9"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "tabEditingAllowedCheckBox"
|
||||||
|
"text": "Tab editing allowed"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabEditingAllowedChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 10"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||||
|
name: "hideTabAreaWithOneTabCheckBox"
|
||||||
|
"text": "Hide tab area with one tab"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hideTabAreaWithOneTabChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 10"
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
|
||||||
"gridY": 7
|
"gridY": 7
|
||||||
@@ -197,7 +397,63 @@ new FormModel {
|
|||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( null ) {
|
}, new FormLayoutConstraints( null ) {
|
||||||
"location": new java.awt.Point( 0, 0 )
|
"location": new java.awt.Point( 0, 0 )
|
||||||
"size": new java.awt.Dimension( 500, 500 )
|
"size": new java.awt.Dimension( 695, 655 )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
|
"$layoutConstraints": "hidemode 3,align center center"
|
||||||
|
"$columnConstraints": "[fill][fill][fill]"
|
||||||
|
"$rowConstraints": "[fill]"
|
||||||
|
} ) {
|
||||||
|
name: "panel1"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.className": "Panel1"
|
||||||
|
}
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "label1"
|
||||||
|
"text": "text"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||||
|
name: "textField4"
|
||||||
|
"text": "some text"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JButton" ) {
|
||||||
|
name: "button3"
|
||||||
|
"text": "..."
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 2 0"
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 0, 710 )
|
||||||
|
"size": new java.awt.Dimension( 291, 118 )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
|
"$layoutConstraints": "insets 0,hidemode 3,align center center"
|
||||||
|
"$columnConstraints": "[fill][fill]"
|
||||||
|
"$rowConstraints": "[fill]"
|
||||||
|
} ) {
|
||||||
|
name: "panel2"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.className": "Panel2"
|
||||||
|
}
|
||||||
|
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||||
|
name: "textField5"
|
||||||
|
"text": "more text"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JButton" ) {
|
||||||
|
name: "button4"
|
||||||
|
"text": "..."
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 0"
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 340, 710 )
|
||||||
|
"size": new java.awt.Dimension( 291, 118 )
|
||||||
} )
|
} )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -343,7 +343,11 @@ JideSplitButton.selectionForeground
|
|||||||
JideSplitButton.textIconGap
|
JideSplitButton.textIconGap
|
||||||
JideSplitButtonUI
|
JideSplitButtonUI
|
||||||
JideTabbedPane.background
|
JideTabbedPane.background
|
||||||
|
JideTabbedPane.closeButtonLeftMargin
|
||||||
|
JideTabbedPane.closeButtonRightMargin
|
||||||
JideTabbedPane.contentBorderInsets
|
JideTabbedPane.contentBorderInsets
|
||||||
|
JideTabbedPane.fitStyleBoundSize
|
||||||
|
JideTabbedPane.fitStyleFirstTabMargin
|
||||||
JideTabbedPane.foreground
|
JideTabbedPane.foreground
|
||||||
JideTabbedPane.shadow
|
JideTabbedPane.shadow
|
||||||
JideTabbedPane.tabAreaBackground
|
JideTabbedPane.tabAreaBackground
|
||||||
|
|||||||
Reference in New Issue
Block a user