/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.acquire.utils; import java.awt.Dimension; import java.awt.GridLayout; import java.util.Hashtable; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import org.weasis.core.api.gui.util.GuiExecutor; import org.weasis.core.api.util.FontTools; /** * * @author Yannick LARVOR * @version 2.5.0 * @since 2.5.0 - 2016-04-08 - ylar - Creation * */ public class SwingHelper { private SwingHelper() { // Cannot use constructor } /** * @return A new JPanel * @since 2.5.0 */ public static JPanel newPanel() { return new JPanel(); } /** * * @param element * @param height * @return * @since 2.5.0 */ public static <T extends JComponent> T setHeight(T element, int height) { Dimension dim = element.getPreferredSize(); dim.height = height; element.setPreferredSize(dim); return element; } /** * @author Yannick LARVOR * @version 2.5.0 * @since 2.5.0 - 2016-04-08 - ylar - Creation */ public static class Layout { private Layout() { // Cannot use Layout() constructor } /** * * @param element * @return * @since 2.5.0 */ public static <T extends JComponent> T verticalBox(T element) { element.setLayout(new BoxLayout(element, BoxLayout.Y_AXIS)); return element; } /** * * @param element * @return * @since 2.5.0 */ public static <T extends JComponent> T grid(T element) { return grid(element, 1); } /** * * @param element * @param columns * @return * @since 2.5.0 */ public static <T extends JComponent> T grid(T element, int columns) { element.setLayout(new GridLayout(0, columns, 10, 10)); return element; } } /** * * @param value * @param min * @param max * @return * @since 2.5.0 */ public static JSlider newSlider(int value, int min, int max) { return new JSlider(min, max, value); } /** * * @param value * @param min * @param max * @param nbDiv * @return * @sicne 2.5.0 */ public static JSlider newSlider(int value, int min, int max, int nbDiv) { JSlider slider = newSlider(value, min, max); slider.setPaintTicks(true); slider.setPaintLabels(true); setSliderLabelValues(slider, nbDiv); return slider; } /** * * @param slider * @param div * @since 2.5.0 */ public static void setSliderLabelValues(JSlider slider, final int div) { final int min = slider.getMinimum(); final int max = slider.getMaximum(); if (div < 1) { return; } int space = (max - min) / (div - 1); final int spacing = space < 1 ? 1 : space; if (!slider.getPaintLabels()) { return; } final Hashtable<Integer, JLabel> table = new Hashtable<>(); GuiExecutor.instance().invokeAndWait(() -> { for (int i = 0; i < div; i++) { Integer index = i * spacing + min; table.put(index, new JLabel(index.toString())); } }); slider.setLabelTable(table); FontTools.setFont10(slider); slider.setMinorTickSpacing(1); slider.setMajorTickSpacing(spacing); } }