Search in sources :

Example 1 with DarkSliderUI

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

the class ThemeSettingsUI method createFontSlider.

private static JSlider createFontSlider() {
    JSlider fontSlider = new JSlider() {

        @Override
        public String getToolTipText(final MouseEvent event) {
            return getValue() + "%";
        }
    };
    ToolTipContext context = new ToolTipContext().setAlignment(Alignment.CENTER).setCenterAlignment(Alignment.NORTH).setUseBestFit(true).setToolTipRectSupplier(e -> {
        SliderUI ui = fontSlider.getUI();
        if (ui instanceof DarkSliderUI) {
            Rectangle r = ((DarkSliderUI) ui).getThumbRect();
            r.x -= 1;
            return r;
        }
        return new Rectangle(0, 0, fontSlider.getWidth(), fontSlider.getHeight());
    });
    fontSlider.putClientProperty(DarkSliderUI.KEY_INSTANT_SCROLL, true);
    fontSlider.putClientProperty(DarkSliderUI.KEY_USE_TRACK_AS_BASELINE, true);
    fontSlider.putClientProperty(ToolTipConstants.KEY_CONTEXT, context);
    fontSlider.putClientProperty(ToolTipConstants.KEY_STYLE, ToolTipConstants.VARIANT_BALLOON);
    fontSlider.setToolTipText(String.valueOf(fontSlider.getValue()));
    fontSlider.setOrientation(JSlider.HORIZONTAL);
    fontSlider.setPaintTicks(true);
    fontSlider.setMinimum(FontSizePreset.TINY.getPercentage());
    fontSlider.setMaximum(FontSizePreset.HUGE.getPercentage());
    int tickSpacing = 25;
    Dictionary<Integer, JComponent> dict = fontSlider.createStandardLabels(tickSpacing);
    JLabel min = (JLabel) dict.get(fontSlider.getMinimum());
    UIUpdater.registerComponent(min);
    min.setText("");
    min.setIcon(AllIcons.Action.DecreaseFontSize.get());
    min.setAlignmentX(JComponent.CENTER_ALIGNMENT);
    min.putClientProperty(DarkSliderUI.KEY_MANUAL_LABEL_ALIGN, true);
    JLabel mid = (JLabel) dict.get(fontSlider.getMinimum() + tickSpacing);
    UIUpdater.registerComponent(mid);
    dict.remove(fontSlider.getMinimum() + tickSpacing);
    dict.put(FontSizePreset.NORMAL.getPercentage(), mid);
    DynamicUI.withDynamic(mid, c -> c.setText(UIManager.getString("settings.label_font_default", fontSlider.getLocale())));
    mid.setAlignmentX(JComponent.CENTER_ALIGNMENT);
    mid.setHorizontalTextPosition(JLabel.RIGHT);
    JLabel max = (JLabel) dict.get(fontSlider.getMaximum());
    max.putClientProperty(DarkSliderUI.KEY_MANUAL_LABEL_ALIGN, true);
    max.setText("");
    max.setIcon(AllIcons.Action.IncreaseFontSize.get());
    max.setAlignmentX(JComponent.CENTER_ALIGNMENT);
    max.putClientProperty(DarkSliderUI.KEY_MANUAL_LABEL_ALIGN, true);
    UIUpdater.registerComponent(max);
    dict.remove(FontSizePreset.Small.getPercentage());
    dict.remove(FontSizePreset.SMALL.getPercentage());
    dict.remove(FontSizePreset.Large.getPercentage());
    dict.remove(FontSizePreset.LARGE.getPercentage());
    dict.remove(FontSizePreset.Huge.getPercentage());
    fontSlider.setLabelTable(dict);
    fontSlider.setMajorTickSpacing(tickSpacing);
    fontSlider.setMinorTickSpacing(tickSpacing);
    fontSlider.setPaintLabels(true);
    fontSlider.setSnapToTicks(true);
    return fontSlider;
}
Also used : MouseEvent(java.awt.event.MouseEvent) SliderUI(javax.swing.plaf.SliderUI) DarkSliderUI(com.github.weisj.darklaf.ui.slider.DarkSliderUI) ToolTipContext(com.github.weisj.darklaf.components.tooltip.ToolTipContext) DarkSliderUI(com.github.weisj.darklaf.ui.slider.DarkSliderUI)

Aggregations

ToolTipContext (com.github.weisj.darklaf.components.tooltip.ToolTipContext)1 DarkSliderUI (com.github.weisj.darklaf.ui.slider.DarkSliderUI)1 MouseEvent (java.awt.event.MouseEvent)1 SliderUI (javax.swing.plaf.SliderUI)1