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 ) } ) } }