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;
}
Aggregations