From 522d7dc0a1e53a6d1322c1a14bb562b2e081ce7f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 7 Sep 2019 17:01:30 +0200 Subject: [PATCH] Demo: OptionPanePanel added --- .../com/formdev/flatlaf/demo/DemoFrame.java | 2 + .../com/formdev/flatlaf/demo/DemoFrame.jfd | 5 + .../formdev/flatlaf/demo/OptionPanePanel.java | 350 ++++++++++++++++++ .../formdev/flatlaf/demo/OptionPanePanel.jfd | 249 +++++++++++++ .../formdev/flatlaf/demo/ScrollablePanel.java | 59 +++ 5 files changed, 665 insertions(+) create mode 100644 flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.java create mode 100644 flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.jfd create mode 100644 flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ScrollablePanel.java diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java index e4c91057..64b38695 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java @@ -39,6 +39,7 @@ class DemoFrame MoreComponentsPanel moreComponentsPanel = new MoreComponentsPanel(); DataComponentsPanel dataComponentsPanel = new DataComponentsPanel(); TabsPanel tabsPanel = new TabsPanel(); + OptionPanePanel optionPanePanel = new OptionPanePanel(); controlBar = new ControlBar(); //======== this ======== @@ -63,6 +64,7 @@ class DemoFrame tabbedPane.addTab("More Components", moreComponentsPanel); tabbedPane.addTab("Data Components", dataComponentsPanel); tabbedPane.addTab("Tabs", tabsPanel); + tabbedPane.addTab("Option Pane", optionPanePanel); } contentPanel.add(tabbedPane, "cell 0 0"); contentPanel.add(controlBar, "cell 0 1"); diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd index 988b6771..1273c576 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd @@ -43,6 +43,11 @@ new FormModel { }, new FormLayoutConstraints( null ) { "title": "Tabs" } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel" ) { + name: "optionPanePanel" + }, new FormLayoutConstraints( null ) { + "title": "Option Pane" + } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 0" } ) diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.java new file mode 100644 index 00000000..65b86055 --- /dev/null +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.java @@ -0,0 +1,350 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.demo; + +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.*; +import javax.swing.border.*; +import net.miginfocom.swing.*; + +/** + * @author Karl Tauber + */ +class OptionPanePanel + extends JScrollPane +{ + OptionPanePanel() { + initComponents(); + + customOptionPane.setMessage( new Object[] { + "string", + "multi-\nline string", + new JCheckBox( "check box" ), + new JTextField( "text field" ), + "more text", + } ); + customOptionPane.setOptions( new Object[] { + new JCheckBox( "check me" ), + "OK", + "Cancel", + } ); + } + + private void initComponents() { + // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents + ScrollablePanel panel9 = new ScrollablePanel(); + JLabel plainLabel = new JLabel(); + JPanel panel1 = new JPanel(); + JOptionPane plainOptionPane = new JOptionPane(); + plainShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel errorLabel = new JLabel(); + JPanel panel2 = new JPanel(); + JOptionPane errorOptionPane = new JOptionPane(); + errorShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel informationLabel = new JLabel(); + JPanel panel3 = new JPanel(); + JOptionPane informationOptionPane = new JOptionPane(); + informationShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel questionLabel = new JLabel(); + JPanel panel4 = new JPanel(); + JOptionPane questionOptionPane = new JOptionPane(); + OptionPanePanel.ShowDialogLinkLabel questionShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel warningLabel = new JLabel(); + JPanel panel5 = new JPanel(); + JOptionPane warningOptionPane = new JOptionPane(); + OptionPanePanel.ShowDialogLinkLabel warningShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel inputLabel = new JLabel(); + JPanel panel7 = new JPanel(); + JOptionPane inputOptionPane = new JOptionPane(); + OptionPanePanel.ShowDialogLinkLabel inputShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel inputIconLabel = new JLabel(); + JPanel panel8 = new JPanel(); + JOptionPane inputIconOptionPane = new JOptionPane(); + OptionPanePanel.ShowDialogLinkLabel inputIconShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + JLabel customLabel = new JLabel(); + JPanel panel6 = new JPanel(); + customOptionPane = new JOptionPane(); + OptionPanePanel.ShowDialogLinkLabel customShowDialogLabel = new OptionPanePanel.ShowDialogLinkLabel(); + + //======== this ======== + setBorder(null); + + //======== panel9 ======== + { + panel9.setLayout(new MigLayout( + "flowy,ltr,hidemode 3", + // columns + "[]" + + "[]" + + "[fill]", + // rows + "[top]" + + "[top]" + + "[top]" + + "[top]" + + "[top]" + + "[top]" + + "[top]" + + "[top]")); + + //---- plainLabel ---- + plainLabel.setText("Plain"); + panel9.add(plainLabel, "cell 0 0"); + + //======== panel1 ======== + { + panel1.setBorder(LineBorder.createGrayLineBorder()); + panel1.setLayout(new BorderLayout()); + + //---- plainOptionPane ---- + plainOptionPane.setMessage("Hello world."); + panel1.add(plainOptionPane, BorderLayout.CENTER); + } + panel9.add(panel1, "cell 1 0"); + + //---- plainShowDialogLabel ---- + plainShowDialogLabel.setOptionPane(plainOptionPane); + plainShowDialogLabel.setTitleLabel(plainLabel); + panel9.add(plainShowDialogLabel, "cell 2 0"); + + //---- errorLabel ---- + errorLabel.setText("Error"); + panel9.add(errorLabel, "cell 0 1"); + + //======== panel2 ======== + { + panel2.setBorder(LineBorder.createGrayLineBorder()); + panel2.setLayout(new BorderLayout()); + + //---- errorOptionPane ---- + errorOptionPane.setMessageType(JOptionPane.ERROR_MESSAGE); + errorOptionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION); + errorOptionPane.setMessage("Your PC ran into a problem. Buy a new one."); + panel2.add(errorOptionPane, BorderLayout.CENTER); + } + panel9.add(panel2, "cell 1 1"); + + //---- errorShowDialogLabel ---- + errorShowDialogLabel.setTitleLabel(errorLabel); + errorShowDialogLabel.setOptionPane(errorOptionPane); + panel9.add(errorShowDialogLabel, "cell 2 1"); + + //---- informationLabel ---- + informationLabel.setText("Information"); + panel9.add(informationLabel, "cell 0 2"); + + //======== panel3 ======== + { + panel3.setBorder(LineBorder.createGrayLineBorder()); + panel3.setLayout(new BorderLayout()); + + //---- informationOptionPane ---- + informationOptionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE); + informationOptionPane.setOptionType(JOptionPane.YES_NO_OPTION); + informationOptionPane.setMessage("Text with\nmultiple lines\n(use \\n to separate lines)"); + panel3.add(informationOptionPane, BorderLayout.CENTER); + } + panel9.add(panel3, "cell 1 2"); + + //---- informationShowDialogLabel ---- + informationShowDialogLabel.setOptionPane(informationOptionPane); + informationShowDialogLabel.setTitleLabel(informationLabel); + panel9.add(informationShowDialogLabel, "cell 2 2"); + + //---- questionLabel ---- + questionLabel.setText("Question"); + panel9.add(questionLabel, "cell 0 3"); + + //======== panel4 ======== + { + panel4.setBorder(LineBorder.createGrayLineBorder()); + panel4.setLayout(new BorderLayout()); + + //---- questionOptionPane ---- + questionOptionPane.setMessageType(JOptionPane.QUESTION_MESSAGE); + questionOptionPane.setOptionType(JOptionPane.YES_NO_CANCEL_OPTION); + questionOptionPane.setMessage("Answer the question. What question? Don't know. Just writing useless text to make this longer than 80 characters."); + panel4.add(questionOptionPane, BorderLayout.CENTER); + } + panel9.add(panel4, "cell 1 3"); + + //---- questionShowDialogLabel ---- + questionShowDialogLabel.setOptionPane(questionOptionPane); + questionShowDialogLabel.setTitleLabel(questionLabel); + panel9.add(questionShowDialogLabel, "cell 2 3"); + + //---- warningLabel ---- + warningLabel.setText("Warning"); + panel9.add(warningLabel, "cell 0 4"); + + //======== panel5 ======== + { + panel5.setBorder(LineBorder.createGrayLineBorder()); + panel5.setLayout(new BorderLayout()); + + //---- warningOptionPane ---- + warningOptionPane.setMessageType(JOptionPane.WARNING_MESSAGE); + warningOptionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION); + warningOptionPane.setMessage("Beware of the dog!"); + panel5.add(warningOptionPane, BorderLayout.CENTER); + } + panel9.add(panel5, "cell 1 4"); + + //---- warningShowDialogLabel ---- + warningShowDialogLabel.setOptionPane(warningOptionPane); + warningShowDialogLabel.setTitleLabel(warningLabel); + panel9.add(warningShowDialogLabel, "cell 2 4"); + + //---- inputLabel ---- + inputLabel.setText("Input"); + panel9.add(inputLabel, "cell 0 5"); + + //======== panel7 ======== + { + panel7.setBorder(LineBorder.createGrayLineBorder()); + panel7.setLayout(new BorderLayout()); + + //---- inputOptionPane ---- + inputOptionPane.setWantsInput(true); + inputOptionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION); + inputOptionPane.setMessage("Enter whatever you want:"); + panel7.add(inputOptionPane, BorderLayout.CENTER); + } + panel9.add(panel7, "cell 1 5"); + + //---- inputShowDialogLabel ---- + inputShowDialogLabel.setOptionPane(inputOptionPane); + inputShowDialogLabel.setTitleLabel(inputLabel); + panel9.add(inputShowDialogLabel, "cell 2 5"); + + //---- inputIconLabel ---- + inputIconLabel.setText("Input + icon"); + panel9.add(inputIconLabel, "cell 0 6"); + + //======== panel8 ======== + { + panel8.setBorder(LineBorder.createGrayLineBorder()); + panel8.setLayout(new BorderLayout()); + + //---- inputIconOptionPane ---- + inputIconOptionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE); + inputIconOptionPane.setWantsInput(true); + inputIconOptionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION); + inputIconOptionPane.setMessage("Enter something:"); + panel8.add(inputIconOptionPane, BorderLayout.CENTER); + } + panel9.add(panel8, "cell 1 6"); + + //---- inputIconShowDialogLabel ---- + inputIconShowDialogLabel.setTitleLabel(inputIconLabel); + inputIconShowDialogLabel.setOptionPane(inputIconOptionPane); + panel9.add(inputIconShowDialogLabel, "cell 2 6"); + + //---- customLabel ---- + customLabel.setText("Custom"); + panel9.add(customLabel, "cell 0 7"); + + //======== panel6 ======== + { + panel6.setBorder(LineBorder.createGrayLineBorder()); + panel6.setLayout(new BorderLayout()); + + //---- customOptionPane ---- + customOptionPane.setIcon(UIManager.getIcon("Tree.leafIcon")); + panel6.add(customOptionPane, BorderLayout.CENTER); + } + panel9.add(panel6, "cell 1 7"); + + //---- customShowDialogLabel ---- + customShowDialogLabel.setOptionPane(customOptionPane); + customShowDialogLabel.setTitleLabel(customLabel); + panel9.add(customShowDialogLabel, "cell 2 7"); + } + setViewportView(panel9); + // JFormDesigner - End of component initialization //GEN-END:initComponents + } + + // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables + private OptionPanePanel.ShowDialogLinkLabel plainShowDialogLabel; + private OptionPanePanel.ShowDialogLinkLabel errorShowDialogLabel; + private OptionPanePanel.ShowDialogLinkLabel informationShowDialogLabel; + private JOptionPane customOptionPane; + // JFormDesigner - End of variables declaration //GEN-END:variables + + //---- class ShowDialogLinkLabel ------------------------------------------ + + private static class ShowDialogLinkLabel + extends JLabel + { + private JLabel titleLabel; + private JOptionPane optionPane; + + ShowDialogLinkLabel() { + setText( "Show dialog" ); + + addMouseListener( new MouseAdapter() { + @Override + public void mouseClicked( MouseEvent e ) { + showDialog(); + } + } ); + } + + private void showDialog() { + if( optionPane.getWantsInput() ) { + JOptionPane.showInputDialog( + getParent(), + optionPane.getMessage(), + titleLabel.getText() + " Title", + optionPane.getMessageType(), + optionPane.getIcon(), + null, + null ); + } else { + JOptionPane.showOptionDialog( + getParent(), + optionPane.getMessage(), + titleLabel.getText() + " Title", + optionPane.getOptionType(), + optionPane.getMessageType(), + optionPane.getIcon(), + optionPane.getOptions(), + optionPane.getInitialValue() ); + } + } + + @SuppressWarnings( "unused" ) + public JLabel getTitleLabel() { + return titleLabel; + } + + public void setTitleLabel( JLabel titleLabel ) { + this.titleLabel = titleLabel; + } + + @SuppressWarnings( "unused" ) + public JOptionPane getOptionPane() { + return optionPane; + } + + public void setOptionPane( JOptionPane optionPane ) { + this.optionPane = optionPane; + } + } +} diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.jfd new file mode 100644 index 00000000..12a74202 --- /dev/null +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/OptionPanePanel.jfd @@ -0,0 +1,249 @@ +JFDML JFormDesigner: "7.0.0.0.194" Java: "11.0.2" encoding: "UTF-8" + +new FormModel { + contentType: "form/swing" + root: new FormRoot { + auxiliary() { + "JavaCodeGenerator.defaultVariableLocal": true + } + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "this" + "border": sfield com.jformdesigner.model.FormObject NULL_VALUE + add( new FormContainer( "com.formdev.flatlaf.demo.ScrollablePanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { + "$layoutConstraints": "flowy,ltr,hidemode 3" + "$columnConstraints": "[][][fill]" + "$rowConstraints": "[top][top][top][top][top][top][top][top]" + } ) { + name: "panel9" + add( new FormComponent( "javax.swing.JLabel" ) { + name: "plainLabel" + "text": "Plain" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel1" + "border": &LineBorder0 new javax.swing.border.LineBorder( sfield java.awt.Color gray, 1, false ) + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "plainOptionPane" + "message": "Hello world." + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 0" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "plainShowDialogLabel" + "optionPane": new FormReference( "plainOptionPane" ) + "titleLabel": new FormReference( "plainLabel" ) + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 0" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "errorLabel" + "text": "Error" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 1" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel2" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "errorOptionPane" + "messageType": 0 + "optionType": 2 + "message": "Your PC ran into a problem. Buy a new one." + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 1" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "errorShowDialogLabel" + "titleLabel": new FormReference( "errorLabel" ) + "optionPane": new FormReference( "errorOptionPane" ) + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 1" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "informationLabel" + "text": "Information" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 2" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel3" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "informationOptionPane" + "messageType": 1 + "optionType": 0 + "message": "Text with\nmultiple lines\n(use \\n to separate lines)" + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 2" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "informationShowDialogLabel" + "optionPane": new FormReference( "informationOptionPane" ) + "titleLabel": new FormReference( "informationLabel" ) + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 2" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "questionLabel" + "text": "Question" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 3" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel4" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "questionOptionPane" + "messageType": 3 + "optionType": 1 + "message": "Answer the question. What question? Don't know. Just writing useless text to make this longer than 80 characters." + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 3" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "questionShowDialogLabel" + "optionPane": new FormReference( "questionOptionPane" ) + "titleLabel": new FormReference( "questionLabel" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 3" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "warningLabel" + "text": "Warning" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 4" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel5" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "warningOptionPane" + "messageType": 2 + "optionType": 2 + "message": "Beware of the dog!" + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 4" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "warningShowDialogLabel" + "optionPane": new FormReference( "warningOptionPane" ) + "titleLabel": new FormReference( "warningLabel" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 4" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "inputLabel" + "text": "Input" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 5" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel7" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "inputOptionPane" + "wantsInput": true + "optionType": 2 + "message": "Enter whatever you want:" + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 5" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "inputShowDialogLabel" + "optionPane": new FormReference( "inputOptionPane" ) + "titleLabel": new FormReference( "inputLabel" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 5" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "inputIconLabel" + "text": "Input + icon" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 6" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel8" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "inputIconOptionPane" + "messageType": 1 + "wantsInput": true + "optionType": 2 + "message": "Enter something:" + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 6" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "inputIconShowDialogLabel" + "titleLabel": new FormReference( "inputIconLabel" ) + "optionPane": new FormReference( "inputIconOptionPane" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 6" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "customLabel" + "text": "Custom" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 7" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "panel6" + "border": #LineBorder0 + add( new FormComponent( "javax.swing.JOptionPane" ) { + name: "customOptionPane" + "icon": new com.jformdesigner.model.SwingIcon( 2, "Tree.leafIcon" ) + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "Center" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 7" + } ) + add( new FormComponent( "com.formdev.flatlaf.demo.OptionPanePanel$ShowDialogLinkLabel" ) { + name: "customShowDialogLabel" + "optionPane": new FormReference( "customOptionPane" ) + "titleLabel": new FormReference( "customLabel" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 7" + } ) + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 0 ) + "size": new java.awt.Dimension( 790, 840 ) + } ) + } +} diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ScrollablePanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ScrollablePanel.java new file mode 100644 index 00000000..73a18a0f --- /dev/null +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ScrollablePanel.java @@ -0,0 +1,59 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.demo; + +import java.awt.Dimension; +import java.awt.Rectangle; +import javax.swing.JPanel; +import javax.swing.Scrollable; +import javax.swing.SwingConstants; +import com.formdev.flatlaf.util.UIScale; + +/** + * A panel that implements the {@link Scrollable} interface. + * + * @author Karl Tauber + */ +public class ScrollablePanel + extends JPanel + implements Scrollable +{ + @Override + public Dimension getPreferredScrollableViewportSize() { + return UIScale.scale( new Dimension( 400, 400 ) ); + } + + @Override + public int getScrollableUnitIncrement( Rectangle visibleRect, int orientation, int direction ) { + return UIScale.scale( 50 ); + } + + @Override + public int getScrollableBlockIncrement( Rectangle visibleRect, int orientation, int direction ) { + return (orientation == SwingConstants.VERTICAL) ? visibleRect.height : visibleRect.width; + } + + @Override + public boolean getScrollableTracksViewportWidth() { + return false; + } + + @Override + public boolean getScrollableTracksViewportHeight() { + return false; + } +}