diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
index 6bd37a37..b2c93a11 100644
--- a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
+++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
@@ -149,6 +149,8 @@ public class FlatJideTabbedPaneUI
repaintTab( (Integer) e.getNewValue() );
break;
+ case JideTabbedPane.PROPERTY_TAB_AREA_INSETS:
+ case JideTabbedPane.PROPERTY_TAB_INSETS:
case TABBED_PANE_SHOW_TAB_SEPARATORS:
case TABBED_PANE_HAS_FULL_BORDER:
_tabPane.revalidate();
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.java
index 97d6e9cd..a8cbd3a4 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.java
@@ -16,12 +16,15 @@
package com.formdev.flatlaf.testing.jideoss;
-import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
import java.awt.*;
import javax.swing.*;
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.FlatTestFrame;
+import com.formdev.flatlaf.util.ScaledImageIcon;
import com.jgoodies.forms.layout.*;
import com.jidesoft.swing.*;
import net.miginfocom.swing.*;
@@ -35,49 +38,335 @@ public class FlatJideOssContainerTest
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatJideOssContainerTest" );
+ frame.useApplyComponentOrientation = true;
frame.showFrame( FlatJideOssContainerTest::new );
} );
}
FlatJideOssContainerTest() {
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() {
+ // 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;
- tabbedPane1.setTabLayoutPolicy( tabLayoutPolicy );
- tabbedPane2.setTabLayoutPolicy( tabLayoutPolicy );
- tabbedPane3.setTabLayoutPolicy( tabLayoutPolicy );
- tabbedPane4.setTabLayoutPolicy( tabLayoutPolicy );
+ for( JTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.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() {
Boolean hasFullBorder = hasFullBorderCheckBox.isSelected() ? true : null;
- tabbedPane1.putClientProperty( 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 );
+ putTabbedPanesClientProperty( FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
}
- private void moreTabsChanged() {
- boolean moreTabs = moreTabsCheckBox.isSelected();
- addRemoveMoreTabs( tabbedPane1, moreTabs );
- addRemoveMoreTabs( tabbedPane2, moreTabs );
- addRemoveMoreTabs( tabbedPane3, moreTabs );
- addRemoveMoreTabs( tabbedPane4, moreTabs );
+ private void putTabbedPanesClientProperty( String key, Object value ) {
+ for( JTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.putClientProperty( key, value );
}
- private void addRemoveMoreTabs( JTabbedPane tabbedPane, boolean add ) {
- if( add ) {
- tabbedPane.addTab( "Tab 4", new JLabel( "tab 4" ) );
- tabbedPane.addTab( "Tab 5", new JLabel( "tab 5" ) );
- } else {
- int tabCount = tabbedPane.getTabCount();
- if( tabCount > 3 ) {
- for( int i = 0; i < 2; i++ )
- tabbedPane.removeTabAt( tabbedPane.getTabCount() - 1 );
- }
+ private void tabCountChanged() {
+ for( JideTabbedPane tabbedPane : allTabbedPanes )
+ tabCountChanged( tabbedPane );
+ }
+
+ private void tabCountChanged( JideTabbedPane tabbedPane ) {
+ int oldTabCount = tabbedPane.getTabCount();
+ 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 );
}
+
+ 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
+ ? "Bold Tab
Second Line "
+ : (html ? "Bold 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.setTabLeadingComponent( c );
+ else
+ tabbedPane.setTabTrailingComponent( c );
+ }
+ }
+
+ private void tabsClosableChanged() {
+ boolean closable = tabsClosableCheckBox.isSelected() && tabScrollCheckBox.isSelected();
+ for( JideTabbedPane tabbedPane : allTabbedPanes ) {
+ tabbedPane.setShowCloseButton( closable );
+ tabbedPane.setShowCloseButtonOnTab( 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 );
+ }
+
+ 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 initComponents() {
@@ -85,29 +374,39 @@ public class FlatJideOssContainerTest
JPanel panel9 = new JPanel();
JLabel tabbedPaneLabel = new JLabel();
tabbedPane1 = new JideTabbedPane();
- JPanel panel1 = new JPanel();
- JLabel label1 = new JLabel();
- JPanel panel2 = new JPanel();
- JLabel label2 = new JLabel();
tabbedPane3 = new JideTabbedPane();
- JPanel panel5 = new JPanel();
- JLabel label5 = new JLabel();
- JPanel panel6 = new JPanel();
- JLabel label6 = new JLabel();
tabbedPane2 = new JideTabbedPane();
- JPanel panel3 = new JPanel();
- JLabel label3 = new JLabel();
- JPanel panel4 = new JPanel();
- JLabel label4 = new JLabel();
tabbedPane4 = new JideTabbedPane();
- JPanel panel7 = new JPanel();
- JLabel label7 = new JLabel();
- JPanel panel8 = new JPanel();
- JLabel label8 = new JLabel();
- JPanel panel14 = new JPanel();
- moreTabsCheckBox = new JCheckBox();
+ FlatTestFrame.NoRightToLeftPanel tabbedPaneControlPanel = new FlatTestFrame.NoRightToLeftPanel();
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();
+ 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();
+ boldActiveTabCheckBox = new JCheckBox();
+ showTabButtonsCheckBox = new JCheckBox();
+ smallerInsetsCheckBox = new JCheckBox();
+ showTabSeparatorsCheckBox = new JCheckBox();
+ hideTabAreaWithOneTabCheckBox = new JCheckBox();
CellConstraints cc = new CellConstraints();
//======== this ========
@@ -122,156 +421,201 @@ public class FlatJideOssContainerTest
{
panel9.setOpaque(false);
panel9.setLayout(new FormLayout(
- "70dlu:grow, $lcgap, 70dlu:grow",
- "pref, 2*($lgap, fill:70dlu:grow), $lgap, pref"));
+ "70dlu:grow, $ugap, 70dlu:grow",
+ "pref, $lgap, fill:80dlu:grow, $ugap, fill:80dlu:grow, $pgap, pref"));
//---- tabbedPaneLabel ----
tabbedPaneLabel.setText("JideTabbedPane:");
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));
//======== tabbedPane3 ========
{
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));
//======== tabbedPane2 ========
{
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));
//======== tabbedPane4 ========
{
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));
- //======== panel14 ========
+ //======== tabbedPaneControlPanel ========
{
- panel14.setOpaque(false);
- panel14.setLayout(new MigLayout(
+ tabbedPaneControlPanel.setOpaque(false);
+ tabbedPaneControlPanel.setLayout(new MigLayout(
"insets 0,hidemode 3",
// columns
"[]" +
- "[]" +
+ "[fill]" +
"[]",
// rows
- "[center]"));
-
- //---- moreTabsCheckBox ----
- moreTabsCheckBox.setText("more tabs");
- moreTabsCheckBox.setMnemonic('M');
- moreTabsCheckBox.addActionListener(e -> moreTabsChanged());
- panel14.add(moreTabsCheckBox, "cell 0 0");
+ "[center]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]para" +
+ "[]" +
+ "[]para" +
+ "[]" +
+ "[]" +
+ "[]"));
//---- tabScrollCheckBox ----
- tabScrollCheckBox.setText("tabLayoutPolicy = SCROLL");
+ tabScrollCheckBox.setText("Use scroll layout");
tabScrollCheckBox.setMnemonic('S');
- tabScrollCheckBox.setSelected(true);
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");
+
+ //---- 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.setText("JTabbedPane.hasFullBorder");
- hasFullBorderCheckBox.setMnemonic('F');
+ hasFullBorderCheckBox.setText("Show content border");
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");
+
+ //---- showTabSeparatorsCheckBox ----
+ showTabSeparatorsCheckBox.setText("Show tab separators");
+ showTabSeparatorsCheckBox.addActionListener(e -> showTabSeparatorsChanged());
+ tabbedPaneControlPanel.add(showTabSeparatorsCheckBox, "cell 1 9");
+
+ //---- 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");
// JFormDesigner - End of component initialization //GEN-END:initComponents
+
+ allTabbedPanes = new JideTabbedPane[] { tabbedPane1, tabbedPane2, tabbedPane3, tabbedPane4 };
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
@@ -279,8 +623,155 @@ public class FlatJideOssContainerTest
private JideTabbedPane tabbedPane3;
private JideTabbedPane tabbedPane2;
private JideTabbedPane tabbedPane4;
- private JCheckBox moreTabsCheckBox;
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 showCloseButtonOnSelectedTabCheckBox;
+ private FlatTestEnumComboBox tabPlacementField;
+ private JCheckBox secondTabClosableCheckBox;
+ private JCheckBox showCloseButtonOnMouseOverCheckBox;
+ private FlatTestEnumComboBox tabAlignmentField;
+ private FlatTestEnumComboBox tabResizeModeField;
+ private JCheckBox leadingComponentCheckBox;
+ private JCheckBox customBorderCheckBox;
+ private JCheckBox tabAreaInsetsCheckBox;
+ private JCheckBox trailingComponentCheckBox;
private JCheckBox hasFullBorderCheckBox;
+ private JCheckBox boldActiveTabCheckBox;
+ private JCheckBox showTabButtonsCheckBox;
+ private JCheckBox smallerInsetsCheckBox;
+ private JCheckBox showTabSeparatorsCheckBox;
+ private JCheckBox hideTabAreaWithOneTabCheckBox;
// 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
+ }
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.jfd
index 7b73a58a..680e3e72 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssContainerTest.jfd
@@ -13,8 +13,8 @@ new FormModel {
} ) {
name: "this"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jgoodies.forms.layout.FormLayout ) {
- "$columnSpecs": "70dlu:grow, labelcompgap, 70dlu:grow"
- "$rowSpecs": "pref, linegap, fill:70dlu:grow, linegap, fill:70dlu:grow, linegap, pref"
+ "$columnSpecs": "70dlu:grow, unrelgap, 70dlu:grow"
+ "$rowSpecs": "pref, linegap, fill:80dlu:grow, unrelgap, fill:80dlu:grow, pargap, pref"
} ) {
name: "panel9"
"opaque": false
@@ -29,27 +29,6 @@ new FormModel {
auxiliary() {
"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 ) {
"gridX": 1
"gridY": 3
@@ -60,30 +39,9 @@ new FormModel {
auxiliary() {
"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 ) {
- "gridX": 3
"gridY": 3
+ "gridX": 3
} )
add( new FormContainer( "com.jidesoft.swing.JideTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "tabbedPane2"
@@ -91,28 +49,6 @@ new FormModel {
auxiliary() {
"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 ) {
"gridY": 5
} )
@@ -122,71 +58,304 @@ new FormModel {
auxiliary() {
"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 ) {
- "gridX": 3
"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"
- "$columnConstraints": "[][][]"
- "$rowConstraints": "[center]"
+ "$columnConstraints": "[][fill][]"
+ "$rowConstraints": "[center][][][][][]para[][]para[][][]"
} ) {
- name: "panel14"
+ name: "tabbedPaneControlPanel"
"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" ) {
name: "tabScrollCheckBox"
- "text": "tabLayoutPolicy = SCROLL"
+ "text": "Use scroll layout"
"mnemonic": 83
- "selected": true
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabScrollChanged", false ) )
}, 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: "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" ) {
name: "hasFullBorderCheckBox"
- "text": "JTabbedPane.hasFullBorder"
- "mnemonic": 70
+ "text": "Show content border"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hasFullBorderChanged", false ) )
}, 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: "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: "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 ) {
"gridY": 7
@@ -197,7 +366,63 @@ new FormModel {
} )
}, new FormLayoutConstraints( null ) {
"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 )
} )
}
}