Search in sources :

Example 1 with ThemeInstalledListener

use of com.github.weisj.darklaf.theme.event.ThemeInstalledListener 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 2 with ThemeInstalledListener

use of com.github.weisj.darklaf.theme.event.ThemeInstalledListener in project darklaf by weisJ.

the class ForegroundGenerationDemo method createComponent.

@Override
public JComponent createComponent() {
    JPanel holder = new JPanel(new GridBagLayout());
    holder.setPreferredSize(new Dimension(300, 100));
    holder.setOpaque(true);
    JLabel label = new JLabel("Demo Readability Text");
    holder.add(label);
    DemoPanel panel = new DemoPanel(holder, new BorderLayout(), 0);
    JPanel controls = panel.addControls();
    Consumer<Color> updater = c -> SwingUtilities.invokeLater(() -> {
        holder.setBackground(c);
        label.setForeground(ForegroundColorGenerationTask.makeForeground(c));
        label.repaint();
    });
    Color current = UIManager.getColor("textCompSelectionBackground");
    updater.accept(current);
    QuickColorChooser quickColorChooser = new QuickColorChooser("Background", current, updater);
    controls.add(quickColorChooser);
    LafManager.addThemeChangeListener((ThemeInstalledListener) e -> {
        Color c = UIManager.getColor("textCompSelectionBackground");
        quickColorChooser.setColor(c);
        updater.accept(c);
    });
    return panel;
}
Also used : java.awt(java.awt) Consumer(java.util.function.Consumer) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) LafManager(com.github.weisj.darklaf.LafManager) ForegroundColorGenerationTask(com.github.weisj.darklaf.task.ForegroundColorGenerationTask) QuickColorChooser(com.github.weisj.darklaf.components.color.QuickColorChooser) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) javax.swing(javax.swing) QuickColorChooser(com.github.weisj.darklaf.components.color.QuickColorChooser)

Example 3 with ThemeInstalledListener

use of com.github.weisj.darklaf.theme.event.ThemeInstalledListener in project darklaf by weisJ.

the class IconDemo method createComponent.

@Override
public JComponent createComponent() {
    iconPanel = new JPanel(new GridLayout(3, 2, LayoutHelper.getDefaultSpacing(), LayoutHelper.getDefaultSpacing()));
    iconPanel.setBorder(LayoutHelper.createEmptyContainerBorder());
    UIManager.put("TestIcon.color", new Color(255, 35, 181));
    IconLoader iconLoader = IconLoader.get(IconDemo.class);
    UIAwareIcon uiAwareImageIcon = iconLoader.getUIAwareIcon("aware_image_icon.png");
    UIAwareIcon uiAwareImageIconDual = uiAwareImageIcon.getDual();
    UIAwareIcon uiAwareIcon = iconLoader.getUIAwareIcon("aware_icon.svg");
    UIAwareIcon uiAwareIconDual = uiAwareIcon.getDual();
    Icon themedIcon = iconLoader.getIcon("themed_icon.svg", 16, 16, true);
    Icon imageIcon = iconLoader.getIcon("image_icon.png");
    iconPanel.add(new JLabel("Aware image icon", uiAwareImageIcon, JLabel.LEFT));
    iconPanel.add(new JLabel("Aware image icon (dual)", uiAwareImageIconDual, JLabel.LEFT));
    iconPanel.add(new JLabel("Aware svg icon", uiAwareIcon, JLabel.LEFT));
    iconPanel.add(new JLabel("Aware svg icon (dual)", uiAwareIconDual, JLabel.LEFT));
    iconPanel.add(new JLabel("Themed icon", themedIcon, JLabel.LEFT));
    iconPanel.add(new JLabel("Image icon", imageIcon, JLabel.LEFT));
    DemoPanel panel = new DemoPanel(iconPanel, new BorderLayout(), 0);
    JPanel controlPanel = panel.addControls();
    controlPanel.add(new JToggleButton("Light/Dark") {

        {
            LafManager.addThemeChangeListener((ThemeInstalledListener) e -> setSelected(Theme.isDark(e.getNewTheme())));
            putClientProperty("JToggleButton.variant", "slider");
            addActionListener(e -> updateAwareIconStyle());
        }
    });
    controlPanel.add(new QuickColorChooser("Themed icon color", UIManager.getColor("TestIcon.color"), this::updateThemedIconColor));
    return panel;
}
Also used : UIAwareIcon(com.github.weisj.darklaf.properties.icons.UIAwareIcon) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) LafManager(com.github.weisj.darklaf.LafManager) Theme(com.github.weisj.darklaf.theme.Theme) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) LayoutHelper(com.github.weisj.darklaf.layout.LayoutHelper) IconLoader(com.github.weisj.darklaf.properties.icons.IconLoader) UIAwareIcon(com.github.weisj.darklaf.properties.icons.UIAwareIcon) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) QuickColorChooser(com.github.weisj.darklaf.components.color.QuickColorChooser) DarkUIUtil(com.github.weisj.darklaf.ui.util.DarkUIUtil) javax.swing(javax.swing) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) QuickColorChooser(com.github.weisj.darklaf.components.color.QuickColorChooser) UIAwareIcon(com.github.weisj.darklaf.properties.icons.UIAwareIcon) IconLoader(com.github.weisj.darklaf.properties.icons.IconLoader)

Example 4 with ThemeInstalledListener

use of com.github.weisj.darklaf.theme.event.ThemeInstalledListener in project darklaf by weisJ.

the class DemoMenuBar method createThemeMenu.

private JMenu createThemeMenu() {
    JMenu menu = new JMenu("Theme");
    menu.setMnemonic('T');
    ButtonGroup bg = new ButtonGroup();
    for (UIManager.LookAndFeelInfo theme : LafManager.getRegisteredThemeInfos()) {
        createThemeItem(menu, bg, theme);
    }
    Runnable updater = () -> bg.setSelected(Optional.ofNullable(getSelectedThemeButton(bg)).map(AbstractButton::getModel).orElse(null), true);
    menu.addMenuListener(new MenuListener() {

        @Override
        public void menuSelected(final MenuEvent e) {
            updater.run();
        }

        @Override
        public void menuDeselected(final MenuEvent e) {
        }

        @Override
        public void menuCanceled(final MenuEvent e) {
        }
    });
    LafManager.addThemeChangeListener((ThemeInstalledListener) e -> updater.run());
    return menu;
}
Also used : UIManager(javax.swing.UIManager) Arrays(java.util.Arrays) Enumeration(java.util.Enumeration) SystemInfo(com.github.weisj.darklaf.platform.SystemInfo) LafManager(com.github.weisj.darklaf.LafManager) Lambdas(com.github.weisj.darklaf.util.Lambdas) ThemeInstalledListener(com.github.weisj.darklaf.theme.event.ThemeInstalledListener) Level(java.util.logging.Level) JCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem) SwingUtilities(javax.swing.SwingUtilities) JMenuItem(javax.swing.JMenuItem) UnsupportedLookAndFeelException(javax.swing.UnsupportedLookAndFeelException) ThemeSettingsMenuItem(com.github.weisj.darklaf.settings.ThemeSettingsMenuItem) AbstractButton(javax.swing.AbstractButton) PropertyUtil(com.github.weisj.darklaf.util.PropertyUtil) JMenuBar(javax.swing.JMenuBar) ButtonGroup(javax.swing.ButtonGroup) JMenu(javax.swing.JMenu) MenuListener(javax.swing.event.MenuListener) Objects(java.util.Objects) JRadioButtonMenuItem(javax.swing.JRadioButtonMenuItem) Optional(java.util.Optional) MenuEvent(javax.swing.event.MenuEvent) NotNull(org.jetbrains.annotations.NotNull) DarkRootPaneUI(com.github.weisj.darklaf.ui.rootpane.DarkRootPaneUI) StringPainter(com.github.weisj.darklaf.graphics.StringPainter) AbstractButton(javax.swing.AbstractButton) ButtonGroup(javax.swing.ButtonGroup) MenuListener(javax.swing.event.MenuListener) UIManager(javax.swing.UIManager) JMenu(javax.swing.JMenu) MenuEvent(javax.swing.event.MenuEvent)

Aggregations

LafManager (com.github.weisj.darklaf.LafManager)4 ThemeInstalledListener (com.github.weisj.darklaf.theme.event.ThemeInstalledListener)4 BaseComponentDemo (com.github.weisj.darklaf.ui.demo.BaseComponentDemo)3 DemoExecutor (com.github.weisj.darklaf.ui.demo.DemoExecutor)3 java.awt (java.awt)3 javax.swing (javax.swing)3 QuickColorChooser (com.github.weisj.darklaf.components.color.QuickColorChooser)2 DemoPanel (com.github.weisj.darklaf.ui.DemoPanel)2 StringPainter (com.github.weisj.darklaf.graphics.StringPainter)1 ThemedColor (com.github.weisj.darklaf.graphics.ThemedColor)1 LayoutHelper (com.github.weisj.darklaf.layout.LayoutHelper)1 SystemInfo (com.github.weisj.darklaf.platform.SystemInfo)1 IconLoader (com.github.weisj.darklaf.properties.icons.IconLoader)1 UIAwareIcon (com.github.weisj.darklaf.properties.icons.UIAwareIcon)1 ThemeSettingsMenuItem (com.github.weisj.darklaf.settings.ThemeSettingsMenuItem)1 ForegroundColorGenerationTask (com.github.weisj.darklaf.task.ForegroundColorGenerationTask)1 Theme (com.github.weisj.darklaf.theme.Theme)1 DarkRootPaneUI (com.github.weisj.darklaf.ui.rootpane.DarkRootPaneUI)1 DividerStyle (com.github.weisj.darklaf.ui.splitpane.DividerStyle)1 SplitPaneConstants (com.github.weisj.darklaf.ui.splitpane.SplitPaneConstants)1