Search in sources :

Example 11 with DemoPanel

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

the class TableDemo method createComponent.

@Override
public JComponent createComponent() {
    String[] columns = { "Id", "Name", "Hourly Rate", "Part Time", "Components" };
    Object[][] data = { { 1, "John", 40.0, false, "Item" }, { 2, "Rambo", 70.0, false, 10 }, { 3, "Zorro", 60.0, true, "cell" } };
    Class<?>[] columnClasses = { Integer.class, String.class, Double.class, Boolean.class, Object.class };
    AtomicBoolean editable = new AtomicBoolean(true);
    TableModel model = new DefaultTableModel() {

        @Override
        public int getColumnCount() {
            return columns.length;
        }

        @Override
        public int getRowCount() {
            return 40;
        }

        @Override
        public Class<?> getColumnClass(final int columnIndex) {
            return columnIndex < columnClasses.length ? columnClasses[columnIndex] : Object.class;
        }

        @Override
        public Object getValueAt(final int row, final int column) {
            return data[Math.min(row, data.length - 1)][Math.min(column, columns.length - 1)];
        }

        @Override
        public void setValueAt(final Object aValue, final int row, final int column) {
            data[Math.min(row, data.length - 1)][Math.min(column, columns.length - 1)] = aValue;
        }

        @Override
        public String getColumnName(final int column) {
            return columns[column];
        }

        @Override
        public boolean isCellEditable(final int row, final int column) {
            return editable.get();
        }
    };
    JTable table = new JTable(model) {

        final TableCellEditor comboEditor = new DarkTableCellEditor(new JComboBox<>());

        final TableCellEditor spinnerEditor = new DarkTableCellEditor(new JSpinner());

        @Override
        public TableCellEditor getCellEditor(final int row, final int column) {
            if (row == 0 && column == 4) {
                return comboEditor;
            } else if (row == 1 && column == 4) {
                return spinnerEditor;
            } else {
                return super.getCellEditor(row, column);
            }
        }
    };
    JTableHeader header = table.getTableHeader();
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBorder(BorderFactory.createEmptyBorder());
    DemoPanel panel = new DemoPanel(new OverlayScrollPane(scrollPane), new BorderLayout(), 10);
    JPanel controlPanel = panel.addControls(3);
    controlPanel.add(new JCheckBox("enabled") {

        {
            setSelected(table.isEnabled());
            addActionListener(e -> table.setEnabled(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(PropertyKey.EDITABLE) {

        {
            setSelected(editable.get());
            addActionListener(e -> {
                editable.set(isSelected());
                table.repaint();
            });
        }
    });
    controlPanel.add(new JCheckBox("horizontal lines") {

        {
            setSelected(table.getShowHorizontalLines());
            addActionListener(e -> table.setShowHorizontalLines(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("vertical lines") {

        {
            setSelected(table.getShowVerticalLines());
            addActionListener(e -> table.setShowVerticalLines(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("LeftToRight") {

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

        {
            setSelected(PropertyUtil.getBooleanProperty(table, DarkTableUI.KEY_ALTERNATE_ROW_COLOR));
            addActionListener(e -> table.putClientProperty(DarkTableUI.KEY_ALTERNATE_ROW_COLOR, isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("reordering") {

        {
            setSelected(header.getReorderingAllowed());
            addActionListener(e -> header.setReorderingAllowed(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("cell selection") {

        {
            setSelected(table.getCellSelectionEnabled());
            addActionListener(e -> table.setCellSelectionEnabled(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox("column selection") {

        {
            setSelected(table.getColumnSelectionAllowed());
            addActionListener(e -> table.setColumnSelectionAllowed(isSelected()));
            table.addPropertyChangeListener(e -> setSelected(table.getColumnSelectionAllowed()));
        }
    });
    controlPanel.add(new JCheckBox("row selection") {

        {
            setSelected(table.getRowSelectionAllowed());
            addActionListener(e -> table.setRowSelectionAllowed(isSelected()));
            table.addPropertyChangeListener(e -> setSelected(table.getRowSelectionAllowed()));
        }
    });
    controlPanel.add(new JCheckBox(DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX) {

        {
            setSelected(PropertyUtil.getBooleanProperty(table, DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX));
            addActionListener(e -> table.putClientProperty(DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX, isSelected()));
        }
    }, "span");
    controlPanel.add(new JLabel(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE + ":", JLabel.RIGHT));
    controlPanel.add(new JComboBox<String>() {

        {
            addItem(DarkTableUI.RENDER_TYPE_CHECKBOX);
            addItem(DarkTableUI.RENDER_TYPE_RADIOBUTTON);
            setSelectedItem(table.getClientProperty(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE));
            addItemListener(e -> table.putClientProperty(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE, e.getItem()));
        }
    });
    controlPanel = panel.addControls(3);
    controlPanel.add(new JLabel("Row height:"));
    controlPanel.add(new JSpinner() {

        {
            setValue(table.getRowHeight());
            addChangeListener(e -> table.setRowHeight(Integer.parseInt(getValue().toString())));
        }
    });
    return panel;
}
Also used : BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) DefaultTableModel(javax.swing.table.DefaultTableModel) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) JTableHeader(javax.swing.table.JTableHeader) java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) TableCellEditor(javax.swing.table.TableCellEditor) OverlayScrollPane(com.github.weisj.darklaf.components.OverlayScrollPane) PropertyKey(com.github.weisj.darklaf.util.PropertyKey) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) PropertyUtil(com.github.weisj.darklaf.util.PropertyUtil) DarkTableCellEditor(com.github.weisj.darklaf.ui.table.renderer.DarkTableCellEditor) javax.swing(javax.swing) TableModel(javax.swing.table.TableModel) DefaultTableModel(javax.swing.table.DefaultTableModel) JTableHeader(javax.swing.table.JTableHeader) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) OverlayScrollPane(com.github.weisj.darklaf.components.OverlayScrollPane) DarkTableCellEditor(com.github.weisj.darklaf.ui.table.renderer.DarkTableCellEditor) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TableCellEditor(javax.swing.table.TableCellEditor) DarkTableCellEditor(com.github.weisj.darklaf.ui.table.renderer.DarkTableCellEditor) DefaultTableModel(javax.swing.table.DefaultTableModel) TableModel(javax.swing.table.TableModel)

Example 12 with DemoPanel

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

the class TriCheckBoxDemo method createComponent.

@Override
public JComponent createComponent() {
    TristateCheckBox button = new TristateCheckBox("Test TriCheckBox");
    DemoPanel panel = new DemoPanel(button);
    JPanel controlPanel = panel.addControls(1);
    controlPanel.add(new JCheckBox("enabled") {

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

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

        {
            setSelected(button.isRolloverEnabled());
            addActionListener(e -> button.setRolloverEnabled(isSelected()));
        }
    });
    controlPanel.add(new JCheckBox(DarkToggleButtonUI.KEY_IS_TREE_EDITOR) {

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

        {
            setSelected(false);
            addActionListener(e -> button.putClientProperty(DarkToggleButtonUI.KEY_IS_TABLE_EDITOR, isSelected()));
        }
    });
    return panel;
}
Also used : java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) TristateCheckBox(com.github.weisj.darklaf.components.tristate.TristateCheckBox) List(java.util.List) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) DarkToggleButtonUI(com.github.weisj.darklaf.ui.togglebutton.DarkToggleButtonUI) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) Collections(java.util.Collections) javax.swing(javax.swing) TristateCheckBoxMenuItem(com.github.weisj.darklaf.components.tristate.TristateCheckBoxMenuItem) TristateCheckBox(com.github.weisj.darklaf.components.tristate.TristateCheckBox) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel)

Example 13 with DemoPanel

use of com.github.weisj.darklaf.ui.DemoPanel 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 14 with DemoPanel

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

the class IconEditorDemo method createComponent.

@Override
public JComponent createComponent() {
    IconEditor editor = new IconEditor(AllIconsDemo.loadIcons(16, false).stream().map(p -> new Pair<>(p.getFirst(), p.getSecond())).collect(Collectors.toList()));
    DemoPanel panel = new DemoPanel(editor, new BorderLayout(), 0);
    JPanel controls = panel.addControls();
    controls.add(new JCheckBox("Show add/remove controls") {

        {
            setSelected(editor.isShowEditorAddRemoveControls());
            addActionListener(e -> editor.setShowEditorAddRemoveControls(isSelected()));
        }
    });
    return panel;
}
Also used : java.awt(java.awt) DemoExecutor(com.github.weisj.darklaf.ui.demo.DemoExecutor) Pair(com.github.weisj.darklaf.util.Pair) IconEditor(com.github.weisj.darklaf.components.iconeditor.IconEditor) DarklafOnly(com.github.weisj.darklaf.core.test.DarklafOnly) BaseComponentDemo(com.github.weisj.darklaf.ui.demo.BaseComponentDemo) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) Collectors(java.util.stream.Collectors) javax.swing(javax.swing) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) IconEditor(com.github.weisj.darklaf.components.iconeditor.IconEditor)

Example 15 with DemoPanel

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

the class RotatableIconDemo method createComponent.

@Override
public JComponent createComponent() {
    final int size = 25;
    RotatableIcon rotateIcon = new RotatableIcon(((DarkSVGIcon) DemoResources.FOLDER_ICON).derive(size, size));
    rotateIcon.setOrientation(Alignment.EAST);
    JLabel iconLabel = new JLabel(rotateIcon);
    DemoPanel panel = new DemoPanel(iconLabel);
    Alignment[] orientations = new Alignment[8];
    orientations[0] = Alignment.NORTH;
    for (int i = 1; i <= 7; i++) {
        orientations[i] = orientations[i - 1].clockwise();
    }
    int spacing = 360 / orientations.length;
    JSlider slider = new JSlider(0, (orientations.length - 1) * spacing);
    slider.setMajorTickSpacing(spacing);
    slider.setSnapToTicks(true);
    slider.setPaintLabels(true);
    slider.setPaintTicks(true);
    slider.setValue(rotateIcon.getOrientation().getIndex() * spacing);
    slider.addChangeListener(e -> {
        if (!slider.isEnabled())
            return;
        rotateIcon.setOrientation(orientations[slider.getValue() / spacing]);
        iconLabel.repaint();
    });
    Timer timer = new Timer(1000, e -> {
        Alignment orientation = rotateIcon.getOrientation().clockwise();
        rotateIcon.setOrientation(orientation);
        slider.setValue(orientation.getDegreeAngle());
        iconLabel.repaint();
    });
    timer.setRepeats(true);
    JCheckBox checkBox = new JCheckBox("Auto rotate");
    checkBox.setSelected(false);
    checkBox.addActionListener(e -> {
        slider.setEnabled(!checkBox.isSelected());
        if (checkBox.isSelected()) {
            rotateIcon.setOrientation(Alignment.NORTH);
            timer.start();
        } else {
            timer.stop();
        }
    });
    JComponent controls = panel.addControls(new GridBagLayout());
    controls.add(slider);
    controls = panel.addControls(Box.createHorizontalBox());
    controls.add(checkBox);
    controls.add(Box.createHorizontalGlue());
    controls = panel.addControls(new BorderLayout());
    AtomicReference<Icon> nextIcon = new AtomicReference<>(rotateIcon.getIcon());
    JList<AllIconsDemo.NamedIcon<? extends Icon>> list = AllIconsDemo.createIconJList(size);
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    list.addListSelectionListener(e -> nextIcon.set(list.getSelectedValue().getSecond()));
    controls.add(new OverlayScrollPane(list));
    Box box = Box.createHorizontalBox();
    box.add(Box.createHorizontalGlue());
    JButton apply = new JButton("Change Icon");
    apply.addActionListener(e -> {
        rotateIcon.setIcon(nextIcon.get());
        iconLabel.repaint();
    });
    box.add(apply);
    box.add(Box.createHorizontalGlue());
    controls = panel.addControls(new BorderLayout());
    controls.add(box);
    return panel;
}
Also used : AtomicReference(java.util.concurrent.atomic.AtomicReference) DemoPanel(com.github.weisj.darklaf.ui.DemoPanel) OverlayScrollPane(com.github.weisj.darklaf.components.OverlayScrollPane) Alignment(com.github.weisj.darklaf.util.Alignment) RotatableIcon(com.github.weisj.darklaf.properties.icons.RotatableIcon) RotatableIcon(com.github.weisj.darklaf.properties.icons.RotatableIcon) DarkSVGIcon(com.github.weisj.darklaf.properties.icons.DarkSVGIcon)

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