Search in sources :

Example 1 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.

the class BaseComponentDemo method setupControls.

@SuppressWarnings("unchecked")
private void setupControls(final JComponent component, final DemoPanel demoPanel) {
    final Runnable updateComponent = () -> {
        if (!DEBUG) {
            component.invalidate();
            component.doLayout();
            Component parent = component.getParent();
            if (parent != null) {
                parent.invalidate();
                parent.doLayout();
            }
        }
    };
    JComponent controls = demoPanel.addControls();
    for (DemoSpec<?> demoSpec : demoSpecList) {
        if (demoSpec instanceof SpacerSpec) {
            if (controls.getComponentCount() > 0) {
                controls = demoPanel.addControls(2);
            }
        } else if (demoSpec instanceof BooleanDemoSpec) {
            JCheckBox checkBox = new JCheckBox(demoSpec.getName());
            checkBox.setSelected(((BooleanDemoSpec) demoSpec).get(component) == Boolean.TRUE);
            checkBox.addActionListener(e -> {
                ((BooleanDemoSpec) demoSpec).set(component, checkBox.isSelected());
                updateComponent.run();
            });
            controls.add(checkBox);
        } else if (demoSpec instanceof CustomControlSpec) {
            if (controls.getComponentCount() > 0) {
                controls = demoPanel.addControls();
            }
            ((CustomControlSpec) demoSpec).builderClosure.accept(controls);
            controls = demoPanel.addControls();
        } else {
            JComboBox<Object> comboBox = new JComboBox<>(demoSpec.getPossibleValues().toArray());
            Object initial = demoSpec.get(component);
            if (!demoSpec.getPossibleValues().contains(initial)) {
                initial = demoSpec.getPossibleValues().get(0);
            }
            comboBox.addItemListener(e -> {
                ((DemoSpec<Object>) demoSpec).set(component, e.getItem());
                updateComponent.run();
            });
            comboBox.setSelectedItem(initial);
            controls.add(new JLabel(demoSpec.getName()));
            controls.add(comboBox);
        }
    }
}
Also used : JComponent(javax.swing.JComponent) Arrays(java.util.Arrays) Component(java.awt.Component) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) LazyValue(com.github.weisj.darklaf.util.LazyValue) Objects(java.util.Objects) Consumer(java.util.function.Consumer) List(java.util.List) JLabel(javax.swing.JLabel) BiConsumer(java.util.function.BiConsumer) JCheckBox(javax.swing.JCheckBox) Container(java.awt.Container) JComboBox(javax.swing.JComboBox) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) Collections(java.util.Collections) JComboBox(javax.swing.JComboBox) JComponent(javax.swing.JComponent) JLabel(javax.swing.JLabel) JCheckBox(javax.swing.JCheckBox) JComponent(javax.swing.JComponent) Component(java.awt.Component)

Example 2 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.

the class ScrollPaneDemo method createComponent.

@Override
public JComponent createComponent() {
    JScrollPane scrollPane = new JScrollPane(new JTextArea() {

        {
            setText(StringUtil.repeat(DemoResources.LOREM_IPSUM, 10));
        }
    });
    JPanel upperLeft = new SolidColorComponent(Color.RED, 20, 20);
    JPanel upperRight = new SolidColorComponent(Color.RED, 20, 20);
    JPanel lowerLeft = new SolidColorComponent(Color.RED, 20, 20);
    JPanel lowerRight = new SolidColorComponent(Color.RED, 20, 20);
    DemoPanel panel = new DemoPanel(scrollPane, new BorderLayout(), 10);
    JPanel controlPanel = panel.addControls();
    controlPanel.add(new JCheckBox("LeftToRight") {

        {
            setSelected(scrollPane.getComponentOrientation().isLeftToRight());
            addActionListener(e -> scrollPane.setComponentOrientation(isSelected() ? ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT));
        }
    }, "span");
    controlPanel = panel.addControls();
    controlPanel.add(new JCheckBox("UpperLeft corner") {

        {
            addActionListener(e -> scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, isSelected() ? upperLeft : null));
        }
    });
    controlPanel.add(new JCheckBox("UpperRight corner") {

        {
            addActionListener(e -> scrollPane.setCorner(JScrollPane.UPPER_RIGHT_CORNER, isSelected() ? upperRight : null));
        }
    });
    controlPanel.add(new JCheckBox("LowerLeft corner") {

        {
            addActionListener(e -> scrollPane.setCorner(JScrollPane.LOWER_LEFT_CORNER, isSelected() ? lowerLeft : null));
        }
    });
    controlPanel.add(new JCheckBox("LowerRight corner") {

        {
            addActionListener(e -> scrollPane.setCorner(JScrollPane.LOWER_RIGHT_CORNER, isSelected() ? lowerRight : null));
        }
    });
    return panel;
}
Also used : java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) StringUtil(com.github.weisj.darklaf.util.StringUtil) DemoResources(com.github.weisj.darklaf.ui.DemoResources) SolidColorComponent(com.github.weisj.darklaf.ui.SolidColorComponent) javax.swing(javax.swing) SolidColorComponent(com.github.weisj.darklaf.ui.SolidColorComponent) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel)

Example 3 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.

the class SpinnerDemo method createComponent.

@Override
public JComponent createComponent() {
    JSpinner spinner = new JSpinner(new SpinnerNumberModel(0, 0, 10, 1)) {

        @Override
        public void updateUI() {
            super.updateUI();
            ((JFormattedTextField) getEditor().getComponent(0)).setColumns(3);
        }
    };
    DemoPanel panel = new DemoPanel(spinner);
    JPanel controlPanel = panel.addControls(1);
    controlPanel.add(new JCheckBox("enabled") {

        {
            setSelected(spinner.isEnabled());
            addActionListener(e -> spinner.setEnabled(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("LeftToRight") {

        {
            setSelected(spinner.getComponentOrientation().isLeftToRight());
            addActionListener(e -> spinner.setComponentOrientation(isSelected() ? ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT));
        }
    });
    controlPanel.add(new JCheckBox(SpinnerConstants.KEY_VARIANT + " = " + SpinnerConstants.VARIANT_PLUS_MINUS) {

        {
            addActionListener(e -> spinner.putClientProperty(SpinnerConstants.KEY_VARIANT, isSelected() ? SpinnerConstants.VARIANT_PLUS_MINUS : null));
        }
    });
    controlPanel.add(new JCheckBox(SpinnerConstants.KEY_IS_TREE_EDITOR) {

        {
            setSelected(false);
            addActionListener(e -> spinner.putClientProperty(SpinnerConstants.KEY_IS_TREE_EDITOR, isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(SpinnerConstants.KEY_IS_TABLE_EDITOR) {

        {
            setSelected(false);
            addActionListener(e -> spinner.putClientProperty(SpinnerConstants.KEY_IS_TABLE_EDITOR, isSelected()));
        }
    });
    return panel;
}
Also used : java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) List(java.util.List) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) NotNull(org.jetbrains.annotations.NotNull) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) Collections(java.util.Collections) javax.swing(javax.swing) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel)

Example 4 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.

the class SplitPaneDemo method createComponent.

@Override
public JComponent createComponent() {
    JSplitPane splitPane = new JSplitPane();
    JPanel leftPanel = new JPanel();
    leftPanel.setBackground(new ThemedColor("glowError"));
    leftPanel.setPreferredSize(new Dimension(200, 200));
    JPanel rightPanel = new JPanel();
    rightPanel.setBackground(new ThemedColor("glowFocus"));
    rightPanel.setPreferredSize(new Dimension(200, 200));
    splitPane.setLeftComponent(leftPanel);
    splitPane.setRightComponent(rightPanel);
    SwingUtilities.invokeLater(() -> splitPane.setDividerLocation(0.5));
    DemoPanel panel = new DemoPanel(splitPane, new BorderLayout(), 0);
    JPanel controlPanel = panel.addControls();
    controlPanel.add(new JCheckBox("ContinuousLayout") {

        {
            LafManager.addThemeChangeListener((ThemeInstalledListener) e -> setSelected(splitPane.isContinuousLayout()));
            setSelected(splitPane.isContinuousLayout());
            addActionListener(e -> splitPane.setContinuousLayout(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("OneTouchExpandable") {

        {
            setSelected(splitPane.isOneTouchExpandable());
            addActionListener(e -> splitPane.setOneTouchExpandable(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("enabled") {

        {
            setSelected(splitPane.isEnabled());
            addActionListener(e -> splitPane.setEnabled(isSelected()));
        }
    });
    controlPanel = panel.addControls();
    controlPanel.add(new JLabel("Orientation:", JLabel.RIGHT));
    controlPanel.add(new JComboBox<String>() {

        {
            Map<String, Integer> mapping = new HashMap<String, Integer>() {

                {
                    put("VERTICAL_SPLIT", JSplitPane.VERTICAL_SPLIT);
                    put("HORIZONTAL_SPLIT", JSplitPane.HORIZONTAL_SPLIT);
                }
            };
            addItem("VERTICAL_SPLIT");
            addItem("HORIZONTAL_SPLIT");
            setSelectedItem("HORIZONTAL_SPLIT");
            addItemListener(e -> splitPane.setOrientation(mapping.get(e.getItem().toString())));
        }
    }, "sgx");
    controlPanel.add(new JLabel(SplitPaneConstants.KEY_STYLE + ":", JLabel.RIGHT));
    controlPanel.add(new JComboBox<DividerStyle>() {

        {
            for (DividerStyle style : DividerStyle.values()) {
                addItem(style);
            }
            setSelectedItem(DividerStyle.get(UIManager.get("SplitPane.defaultDividerStyle")));
            addItemListener(e -> splitPane.putClientProperty(SplitPaneConstants.KEY_STYLE, e.getItem()));
        }
    }, "sgx");
    return panel;
}
Also used : java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) SplitPaneConstants(com.github.weisj.darklaf.ui.splitpane.SplitPaneConstants) ThemedColor(com.github.weisj.darklaf.graphics.ThemedColor) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) Map(java.util.Map) LafManager(com.github.weisj.darklaf.LafManager) HashMap(java.util.HashMap) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) DividerStyle(com.github.weisj.darklaf.ui.splitpane.DividerStyle) javax.swing(javax.swing) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) ThemedColor(com.github.weisj.darklaf.graphics.ThemedColor) DividerStyle(com.github.weisj.darklaf.ui.splitpane.DividerStyle) Map(java.util.Map) HashMap(java.util.HashMap)

Example 5 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.

the class AbstractTabbedPaneDemo method createComponent.

@Override
public JComponent createComponent() {
    T tabbedPane = createTabbedPane();
    setupTabbedPane(tabbedPane);
    DemoPanel panel = new DemoPanel(tabbedPane, new BorderLayout(), 0);
    JPanel controlPanel = panel.addControls();
    controlPanel.add(new JLabel("TabLayoutPolicy:", JLabel.RIGHT));
    controlPanel.add(new JComboBox<String>() {

        {
            Map<String, Integer> mapping = new HashMap<String, Integer>() {

                {
                    put("SCROLL_TAB_LAYOUT", JTabbedPane.SCROLL_TAB_LAYOUT);
                    put("WRAP_TAB_LAYOUT", JTabbedPane.WRAP_TAB_LAYOUT);
                }
            };
            addItem("SCROLL_TAB_LAYOUT");
            addItem("WRAP_TAB_LAYOUT");
            setSelectedItem("SCROLL_TAB_LAYOUT");
            addItemListener(e -> tabbedPane.setTabLayoutPolicy(mapping.get(e.getItem().toString())));
        }
    }, "sgx");
    controlPanel.add(new JLabel("TabPlacement:", JLabel.RIGHT));
    controlPanel.add(new JComboBox<String>() {

        {
            Map<String, Integer> mapping = new HashMap<String, Integer>() {

                {
                    put("TOP", JTabbedPane.TOP);
                    put("BOTTOM", JTabbedPane.BOTTOM);
                    put("LEFT", JTabbedPane.LEFT);
                    put("RIGHT", JTabbedPane.RIGHT);
                }
            };
            addItem("TOP");
            addItem("BOTTOM");
            addItem("LEFT");
            addItem("RIGHT");
            setSelectedItem("TOP");
            addItemListener(e -> tabbedPane.setTabPlacement(mapping.get(e.getItem().toString())));
        }
    }, "sgx");
    controlPanel = panel.addControls();
    controlPanel.add(new JCheckBox("enabled") {

        {
            setSelected(tabbedPane.isEnabled());
            addActionListener(e -> tabbedPane.setEnabled(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("LeftToRight") {

        {
            setSelected(tabbedPane.getComponentOrientation().isLeftToRight());
            addActionListener(e -> tabbedPane.setComponentOrientation(isSelected() ? ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_CENTER_TABS) {

        {
            setSelected(false);
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_CENTER_TABS, isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_DND) {

        {
            setSelected(false);
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_DND, isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_SHOW_NEW_TAB_BUTTON) {

        {
            setSelected(false);
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_SHOW_NEW_TAB_BUTTON, isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_LEADING_COMP) {

        {
            setSelected(false);
            JLabel leading = new PlaceholderLabel("Leading");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_LEADING_COMP, isSelected() ? leading : null));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_TRAILING_COMP) {

        {
            setSelected(false);
            JLabel trailing = new PlaceholderLabel("Trailing");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_TRAILING_COMP, isSelected() ? trailing : null));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_NORTH_COMP) {

        {
            setSelected(false);
            JLabel north = new PlaceholderLabel("North");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_NORTH_COMP, isSelected() ? north : null));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_EAST_COMP) {

        {
            setSelected(false);
            JLabel east = new PlaceholderLabel("East");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_EAST_COMP, isSelected() ? east : null));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_SOUTH_COMP) {

        {
            setSelected(false);
            JLabel south = new PlaceholderLabel("South");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_SOUTH_COMP, isSelected() ? south : null));
        }
    });
    controlPanel.add(new JCheckBox(DarkTabbedPaneUI.KEY_WEST_COMP) {

        {
            setSelected(false);
            JLabel west = new PlaceholderLabel("West");
            addActionListener(e -> tabbedPane.putClientProperty(DarkTabbedPaneUI.KEY_WEST_COMP, isSelected() ? west : null));
        }
    });
    return panel;
}
Also used : BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) HashMap(java.util.HashMap) LineBorder(javax.swing.border.LineBorder) StringUtil(com.github.weisj.darklaf.util.StringUtil) ActionEvent(java.awt.event.ActionEvent) java.awt(java.awt) Map(java.util.Map) CompoundBorder(javax.swing.border.CompoundBorder) EmptyBorder(javax.swing.border.EmptyBorder) UIResource(javax.swing.plaf.UIResource) DarkTabbedPaneUI(com.github.weisj.darklaf.ui.tabbedpane.DarkTabbedPaneUI) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) javax.swing(javax.swing) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

DemoPanel (com.github.weisj.darklaf.ui.DemoPanel)29 BaseComponentDemo (com.github.weisj.darklaf.ui.demo.BaseComponentDemo)19 javax.swing (javax.swing)19 java.awt (java.awt)18 DemoExecutor (com.github.weisj.darklaf.ui.demo.DemoExecutor)17 OverlayScrollPane (com.github.weisj.darklaf.components.OverlayScrollPane)7 PropertyKey (com.github.weisj.darklaf.util.PropertyKey)6 PropertyUtil (com.github.weisj.darklaf.util.PropertyUtil)5 Collections (java.util.Collections)5 List (java.util.List)5 StringUtil (com.github.weisj.darklaf.util.StringUtil)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 DarkToggleButtonUI (com.github.weisj.darklaf.ui.togglebutton.DarkToggleButtonUI)3 LafManager (com.github.weisj.darklaf.LafManager)2 ThemeInstalledListener (com.github.weisj.darklaf.theme.event.ThemeInstalledListener)2 DemoResources (com.github.weisj.darklaf.ui.DemoResources)2 Alignment (com.github.weisj.darklaf.util.Alignment)2 Pair (com.github.weisj.darklaf.util.Pair)2 ArrayList (java.util.ArrayList)2