/** * */ package cz.cuni.mff.peckam.java.origamist.gui.common; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JSlider; import javax.swing.JSpinner; import javax.swing.border.Border; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.FormLayout; import cz.cuni.mff.peckam.java.origamist.configuration.Configuration; import cz.cuni.mff.peckam.java.origamist.services.ServiceLocator; import cz.cuni.mff.peckam.java.origamist.services.TooltipFactory; import cz.cuni.mff.peckam.java.origamist.services.interfaces.ConfigurationManager; /** * An editable slider with zoom icons. * * @author Martin Pecka */ public class JZoomSlider extends JEditableSlider { /** */ private static final long serialVersionUID = 7403547161994063196L; /** Button for zooming. */ protected JButton zoomIn, zoomOut; /** The number that represents the value change if either the zoomIn or zoomOut is clicked. */ protected int zoomStep = 10; /** * */ public JZoomSlider() { super(); } /** * @param slider * @param spinner */ public JZoomSlider(JSlider slider, JSpinner spinner) { super(slider, spinner); } @Override protected void createComponents() { super.createComponents(); zoomIn = new JButton(new ImageIcon(getClass().getResource("/resources/images/zoom-in-24.png"))); zoomOut = new JButton(new ImageIcon(getClass().getResource("/resources/images/zoom-out-24.png"))); Border border = BorderFactory.createEmptyBorder(); zoomIn.setBorder(border); zoomOut.setBorder(border); zoomIn.setBackground(new Color(0, 0, 0, 0)); zoomIn.setOpaque(false); zoomOut.setBackground(new Color(0, 0, 0, 0)); zoomOut.setOpaque(false); zoomIn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setValue(getValue() + zoomStep); } }); zoomOut.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setValue(getValue() - zoomStep); } }); ServiceLocator .get(ConfigurationManager.class) .get() .addAndRunResourceBundleListener( new Configuration.LocaleListener("application", "JZoomSlider.zoomIn.tooltip") { @Override protected void updateText(String text) { String zoomInTooltip = text; String zoomOutTooltip = bundle.getString("JZoomSlider.zoomOut.tooltip"); String tooltip = ServiceLocator.get(TooltipFactory.class).getPlain(zoomInTooltip); zoomIn.setToolTipText(tooltip); tooltip = ServiceLocator.get(TooltipFactory.class).getPlain(zoomOutTooltip); zoomOut.setToolTipText(tooltip); } }); } @Override protected void buildLayout() { DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("min,0px,default,0px,min,$rgap,pref", ""), this); builder.append(zoomOut, slider, zoomIn); builder.append(spinner); } /** * @return the zoomStep */ public int getZoomStep() { return zoomStep; } /** * @param zoomStep the zoomStep to set */ public void setZoomStep(int zoomStep) { this.zoomStep = zoomStep; } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); zoomIn.setEnabled(enabled); zoomOut.setEnabled(enabled); } }