diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java index 262bb8fc..d8a4e00b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java @@ -30,6 +30,12 @@ public class FlatSearchWithHistoryIcon extends FlatSearchIcon { public FlatSearchWithHistoryIcon() { + this( false ); + } + + /** @since 2 */ + public FlatSearchWithHistoryIcon( boolean ignoreButtonState ) { + super( ignoreButtonState ); } @Override diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java index 02455ce9..dc9e05e3 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java @@ -22,6 +22,7 @@ import javax.swing.text.DefaultEditorKit; import com.formdev.flatlaf.FlatClientProperties; import com.formdev.flatlaf.extras.FlatSVGIcon; import com.formdev.flatlaf.icons.FlatSearchIcon; +import com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon; import net.miginfocom.layout.AC; import net.miginfocom.layout.BoundSize; import net.miginfocom.layout.ConstraintParser; @@ -36,6 +37,42 @@ class BasicComponentsPanel { BasicComponentsPanel() { initComponents(); + + // search history button + JButton searchHistoryButton = new JButton( new FlatSearchWithHistoryIcon( true ) ); + searchHistoryButton.setToolTipText( "Search History" ); + searchHistoryButton.addActionListener( e -> { + JPopupMenu popupMenu = new JPopupMenu(); + popupMenu.add( "(empty)" ); + popupMenu.show( searchHistoryButton, 0, searchHistoryButton.getHeight() ); + } ); + compsTextField.putClientProperty( FlatClientProperties.TEXT_FIELD_LEADING_COMPONENT, searchHistoryButton ); + + // match case button + JToggleButton matchCaseButton = new JToggleButton( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/matchCase.svg" ) ); + matchCaseButton.setRolloverIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/matchCaseHovered.svg" ) ); + matchCaseButton.setSelectedIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/matchCaseSelected.svg" ) ); + matchCaseButton.setToolTipText( "Match Case" ); + + // whole words button + JToggleButton wordsButton = new JToggleButton( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/words.svg" ) ); + wordsButton.setRolloverIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/wordsHovered.svg" ) ); + wordsButton.setSelectedIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/wordsSelected.svg" ) ); + wordsButton.setToolTipText( "Whole Words" ); + + // regex button + JToggleButton regexButton = new JToggleButton( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/regex.svg" ) ); + regexButton.setRolloverIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/regexHovered.svg" ) ); + regexButton.setSelectedIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/regexSelected.svg" ) ); + regexButton.setToolTipText( "Regular Expression" ); + + // search toolbar + JToolBar searchToolbar = new JToolBar(); + searchToolbar.add( matchCaseButton ); + searchToolbar.add( wordsButton ); + searchToolbar.addSeparator(); + searchToolbar.add( regexButton ); + compsTextField.putClientProperty( FlatClientProperties.TEXT_FIELD_TRAILING_COMPONENT, searchToolbar ); } private void initComponents() { @@ -134,6 +171,8 @@ class BasicComponentsPanel JTextField leadingIconTextField = new JTextField(); JTextField trailingIconTextField = new JTextField(); JTextField iconsTextField = new JTextField(); + JLabel compsLabel = new JLabel(); + compsTextField = new JTextField(); JLabel fontsLabel = new JLabel(); JLabel h00Label = new JLabel(); JLabel h0Label = new JLabel(); @@ -181,6 +220,7 @@ class BasicComponentsPanel "[]" + "[]" + "[]" + + "[]" + "[]0" + "[]")); @@ -689,84 +729,89 @@ class BasicComponentsPanel iconsTextField.setText("text"); add(iconsTextField, "cell 3 14,growx"); + //---- compsLabel ---- + compsLabel.setText("Leading/trailing comp.:"); + add(compsLabel, "cell 0 15"); + add(compsTextField, "cell 1 15 2 1,growx"); + //---- fontsLabel ---- fontsLabel.setText("Typography / Fonts:"); - add(fontsLabel, "cell 0 15"); + add(fontsLabel, "cell 0 16"); //---- h00Label ---- h00Label.setText("H00"); h00Label.putClientProperty("FlatLaf.styleClass", "h00"); - add(h00Label, "cell 1 15 5 1"); + add(h00Label, "cell 1 16 5 1"); //---- h0Label ---- h0Label.setText("H0"); h0Label.putClientProperty("FlatLaf.styleClass", "h0"); - add(h0Label, "cell 1 15 5 1"); + add(h0Label, "cell 1 16 5 1"); //---- h1Label ---- h1Label.setText("H1"); h1Label.putClientProperty("FlatLaf.styleClass", "h1"); - add(h1Label, "cell 1 15 5 1"); + add(h1Label, "cell 1 16 5 1"); //---- h2Label ---- h2Label.setText("H2"); h2Label.putClientProperty("FlatLaf.styleClass", "h2"); - add(h2Label, "cell 1 15 5 1"); + add(h2Label, "cell 1 16 5 1"); //---- h3Label ---- h3Label.setText("H3"); h3Label.putClientProperty("FlatLaf.styleClass", "h3"); - add(h3Label, "cell 1 15 5 1"); + add(h3Label, "cell 1 16 5 1"); //---- h4Label ---- h4Label.setText("H4"); h4Label.putClientProperty("FlatLaf.styleClass", "h4"); - add(h4Label, "cell 1 15 5 1"); + add(h4Label, "cell 1 16 5 1"); //---- lightLabel ---- lightLabel.setText("light"); lightLabel.putClientProperty("FlatLaf.style", "font: 200% $light.font"); - add(lightLabel, "cell 1 15 5 1,gapx 30"); + add(lightLabel, "cell 1 16 5 1,gapx 30"); //---- semiboldLabel ---- semiboldLabel.setText("semibold"); semiboldLabel.putClientProperty("FlatLaf.style", "font: 200% $semibold.font"); - add(semiboldLabel, "cell 1 15 5 1"); + add(semiboldLabel, "cell 1 16 5 1"); //---- fontZoomLabel ---- fontZoomLabel.setText("(200%)"); fontZoomLabel.putClientProperty("FlatLaf.styleClass", "small"); fontZoomLabel.setEnabled(false); - add(fontZoomLabel, "cell 1 15 5 1"); + add(fontZoomLabel, "cell 1 16 5 1"); //---- largeLabel ---- largeLabel.setText("large"); largeLabel.putClientProperty("FlatLaf.styleClass", "large"); - add(largeLabel, "cell 1 16 5 1"); + add(largeLabel, "cell 1 17 5 1"); //---- defaultLabel ---- defaultLabel.setText("default"); - add(defaultLabel, "cell 1 16 5 1"); + add(defaultLabel, "cell 1 17 5 1"); //---- mediumLabel ---- mediumLabel.setText("medium"); mediumLabel.putClientProperty("FlatLaf.styleClass", "medium"); - add(mediumLabel, "cell 1 16 5 1"); + add(mediumLabel, "cell 1 17 5 1"); //---- smallLabel ---- smallLabel.setText("small"); smallLabel.putClientProperty("FlatLaf.styleClass", "small"); - add(smallLabel, "cell 1 16 5 1"); + add(smallLabel, "cell 1 17 5 1"); //---- miniLabel ---- miniLabel.setText("mini"); miniLabel.putClientProperty("FlatLaf.styleClass", "mini"); - add(miniLabel, "cell 1 16 5 1"); + add(miniLabel, "cell 1 17 5 1"); //---- monospacedLabel ---- monospacedLabel.setText("monospaced"); monospacedLabel.putClientProperty("FlatLaf.styleClass", "monospaced"); - add(monospacedLabel, "cell 1 16 5 1,gapx 30"); + add(monospacedLabel, "cell 1 17 5 1,gapx 30"); //======== popupMenu1 ======== { @@ -841,7 +886,7 @@ class BasicComponentsPanel rows[11].setGapAfter( zeroGap ); rows[12].setGapBefore( zeroGap ); rows[13].setGapBefore( zeroGap ); - rows[15].setGapBefore( zeroGap ); + rows[16].setGapBefore( zeroGap ); layout.setRowConstraints( ac ); // move two text field into same row as spinners @@ -859,5 +904,6 @@ class BasicComponentsPanel } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables + private JTextField compsTextField; // JFormDesigner - End of variables declaration //GEN-END:variables } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd index f1a7e69a..c5eb1554 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.5.0.404" Java: "17" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -9,7 +9,7 @@ new FormModel { add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "insets dialog,hidemode 3" "$columnConstraints": "[][sizegroup 1][sizegroup 1][sizegroup 1][][]" - "$rowConstraints": "[][][][][][][][][][][][]para[][][][]0[]" + "$rowConstraints": "[][][][][][][][][][][][]para[][][][][]0[]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { @@ -671,67 +671,81 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 3 14,growx" } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "compsLabel" + "text": "Leading/trailing comp.:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 15" + } ) + add( new FormComponent( "javax.swing.JTextField" ) { + name: "compsTextField" + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 15 2 1,growx" + } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "fontsLabel" "text": "Typography / Fonts:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 15" + "value": "cell 0 16" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h00Label" "text": "H00" "$client.FlatLaf.styleClass": "h00" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h0Label" "text": "H0" "$client.FlatLaf.styleClass": "h0" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h1Label" "text": "H1" "$client.FlatLaf.styleClass": "h1" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h2Label" "text": "H2" "$client.FlatLaf.styleClass": "h2" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h3Label" "text": "H3" "$client.FlatLaf.styleClass": "h3" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h4Label" "text": "H4" "$client.FlatLaf.styleClass": "h4" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "lightLabel" "text": "light" "$client.FlatLaf.style": "font: 200% $light.font" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1,gapx 30" + "value": "cell 1 16 5 1,gapx 30" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "semiboldLabel" "text": "semibold" "$client.FlatLaf.style": "font: 200% $semibold.font" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "fontZoomLabel" @@ -739,48 +753,48 @@ new FormModel { "$client.FlatLaf.styleClass": "small" "enabled": false }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "largeLabel" "text": "large" "$client.FlatLaf.styleClass": "large" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 17 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "defaultLabel" "text": "default" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 17 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "mediumLabel" "text": "medium" "$client.FlatLaf.styleClass": "medium" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 17 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "smallLabel" "text": "small" "$client.FlatLaf.styleClass": "small" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 17 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "miniLabel" "text": "mini" "$client.FlatLaf.styleClass": "mini" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 17 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "monospacedLabel" "text": "monospaced" "$client.FlatLaf.styleClass": "monospaced" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1,gapx 30" + "value": "cell 1 17 5 1,gapx 30" } ) }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java index 9a78afe1..7bca3551 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java @@ -72,7 +72,7 @@ public class FlatLafDemo DemoFrame frame = new DemoFrame(); if( FlatLafDemo.screenshotsMode ) - frame.setPreferredSize( new Dimension( 1660, 840 ) ); + frame.setPreferredSize( new Dimension( 1660, 880 ) ); // show frame frame.pack(); diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCase.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCase.svg new file mode 100644 index 00000000..64b341ed --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCase.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseHovered.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseHovered.svg new file mode 100644 index 00000000..e07af386 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseHovered.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseSelected.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseSelected.svg new file mode 100644 index 00000000..6be2c27e --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/matchCaseSelected.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regex.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regex.svg new file mode 100644 index 00000000..f073c590 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regex.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexHovered.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexHovered.svg new file mode 100644 index 00000000..545853d7 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexHovered.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexSelected.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexSelected.svg new file mode 100644 index 00000000..29a9c56d --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/regexSelected.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/words.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/words.svg new file mode 100644 index 00000000..e427f911 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/words.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsHovered.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsHovered.svg new file mode 100644 index 00000000..d99d09d6 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsHovered.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsSelected.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsSelected.svg new file mode 100644 index 00000000..21533311 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/wordsSelected.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java index 1af9ec05..a0c66148 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java @@ -80,6 +80,7 @@ public class FlatTextComponentsTest JLabel l = new JLabel( "lead" ); l.setOpaque( true ); l.setBackground( Color.green ); + l.setVisible( leadingComponentVisibleCheckBox.isSelected() ); return l; } ); } @@ -92,10 +93,34 @@ public class FlatTextComponentsTest JLabel l = new JLabel( "tr" ); l.setOpaque( true ); l.setBackground( Color.magenta ); + l.setVisible( trailingComponentVisibleCheckBox.isSelected() ); return l; } ); } + private void leadingComponentVisible() { + setLeadingTrailingComponentVisible( FlatClientProperties.TEXT_FIELD_LEADING_COMPONENT, + leadingComponentVisibleCheckBox.isSelected() ); + } + + private void trailingComponentVisible() { + setLeadingTrailingComponentVisible( FlatClientProperties.TEXT_FIELD_TRAILING_COMPONENT, + trailingComponentVisibleCheckBox.isSelected() ); + } + + private void setLeadingTrailingComponentVisible( String key, boolean visible ) { + for( Component c : getComponents() ) { + if( c instanceof JTextField ) { + Object value = ((JTextField)c).getClientProperty( key ); + if( value instanceof JComponent ) { + ((JComponent)value).setVisible( visible ); + c.revalidate(); + c.repaint(); + } + } + } + } + private void putTextFieldClientProperty( String key, Object value ) { for( Component c : getComponents() ) { if( c instanceof JTextField ) @@ -141,6 +166,8 @@ public class FlatTextComponentsTest trailingIconCheckBox = new JCheckBox(); leadingComponentCheckBox = new JCheckBox(); trailingComponentCheckBox = new JCheckBox(); + leadingComponentVisibleCheckBox = new JCheckBox(); + trailingComponentVisibleCheckBox = new JCheckBox(); JLabel passwordFieldLabel = new JLabel(); JPasswordField passwordField1 = new JPasswordField(); JPasswordField passwordField3 = new JPasswordField(); @@ -290,6 +317,8 @@ public class FlatTextComponentsTest "[]0" + "[]" + "[]0" + + "[]" + + "[]0" + "[]")); //---- button1 ---- @@ -361,8 +390,22 @@ public class FlatTextComponentsTest trailingComponentCheckBox.setName("trailingComponentCheckBox"); trailingComponentCheckBox.addActionListener(e -> trailingComponent()); panel1.add(trailingComponentCheckBox, "cell 0 8 2 1,alignx left,growx 0"); + + //---- leadingComponentVisibleCheckBox ---- + leadingComponentVisibleCheckBox.setText("leading component visible"); + leadingComponentVisibleCheckBox.setSelected(true); + leadingComponentVisibleCheckBox.setName("leadingComponentVisibleCheckBox"); + leadingComponentVisibleCheckBox.addActionListener(e -> leadingComponentVisible()); + panel1.add(leadingComponentVisibleCheckBox, "cell 0 9 2 1,alignx left,growx 0"); + + //---- trailingComponentVisibleCheckBox ---- + trailingComponentVisibleCheckBox.setText("trailing component visible"); + trailingComponentVisibleCheckBox.setSelected(true); + trailingComponentVisibleCheckBox.setName("trailingComponentVisibleCheckBox"); + trailingComponentVisibleCheckBox.addActionListener(e -> trailingComponentVisible()); + panel1.add(trailingComponentVisibleCheckBox, "cell 0 10 2 1,alignx left,growx 0"); } - add(panel1, "cell 4 0 1 6,aligny top,growy 0"); + add(panel1, "cell 4 0 1 10,aligny top,growy 0"); //---- passwordFieldLabel ---- passwordFieldLabel.setText("JPasswordField:"); @@ -674,6 +717,8 @@ public class FlatTextComponentsTest private JCheckBox trailingIconCheckBox; private JCheckBox leadingComponentCheckBox; private JCheckBox trailingComponentCheckBox; + private JCheckBox leadingComponentVisibleCheckBox; + private JCheckBox trailingComponentVisibleCheckBox; private JTextField textField; private JCheckBox dragEnabledCheckBox; private JTextArea textArea; diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd index 6eac474e..2dfcfb7b 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd @@ -77,7 +77,7 @@ new FormModel { add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "hidemode 3" "$columnConstraints": "[fill][fill]" - "$rowConstraints": "[][][][][][]0[][]0[]" + "$rowConstraints": "[][][][][][]0[][]0[][]0[]" } ) { name: "panel1" "border": new javax.swing.border.TitledBorder( "Control" ) @@ -188,8 +188,30 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 8 2 1,alignx left,growx 0" } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "leadingComponentVisibleCheckBox" + "text": "leading component visible" + "selected": true + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "leadingComponentVisible", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 9 2 1,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "trailingComponentVisibleCheckBox" + "text": "trailing component visible" + "selected": true + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "trailingComponentVisible", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 10 2 1,alignx left,growx 0" + } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 4 0 1 6,aligny top,growy 0" + "value": "cell 4 0 1 10,aligny top,growy 0" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "passwordFieldLabel"