/* * Copyright 2010-2015 Institut Pasteur. * * This file is part of Icy. * * Icy is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Icy is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Icy. If not, see <http://www.gnu.org/licenses/>. */ package icy.gui.viewer; import icy.gui.component.IcySlider; import icy.gui.util.ComponentUtil; import icy.gui.util.GuiUtil; import icy.system.thread.ThreadUtil; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * @author Stephane */ public class ZNavigationPanel extends JPanel { /** * */ private static final long serialVersionUID = -1839748578015800706L; final IcySlider slider; final JLabel topLabel; final JLabel bottomLabel; public ZNavigationPanel() { super(); slider = new IcySlider(SwingConstants.VERTICAL); slider.setFocusable(false); slider.setMaximum(0); slider.setMinimum(0); slider.setToolTipText("Move cursor to navigate in Z dimension"); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { ThreadUtil.invokeLater(new Runnable() { @Override public void run() { topLabel.setText(Integer.toString(slider.getMaximum())); bottomLabel.setText(Integer.toString(slider.getValue())); validate(); } }); } }); ComponentUtil.setFixedWidth(slider, 22); topLabel = new JLabel("000"); topLabel.setToolTipText("Z sequence size"); bottomLabel = new JLabel("000"); bottomLabel.setToolTipText("Z position"); final JLabel zLabel = GuiUtil.createBoldLabel("Z"); setBorder(BorderFactory.createTitledBorder("").getBorder()); setLayout(new BorderLayout()); add(GuiUtil.createCenteredLabel(topLabel), BorderLayout.NORTH); add(slider, BorderLayout.CENTER); add(GuiUtil.createPageBoxPanel(GuiUtil.createCenteredLabel(bottomLabel), Box.createVerticalStrut(8), GuiUtil.createCenteredLabel(zLabel)), BorderLayout.SOUTH); validate(); } /** * @see icy.gui.component.IcySlider#setPaintLabels(boolean) */ public void setPaintLabels(boolean b) { slider.setPaintLabels(b); } /** * @see icy.gui.component.IcySlider#setPaintTicks(boolean) */ public void setPaintTicks(boolean b) { slider.setPaintTicks(b); } /** * @see javax.swing.JSlider#addChangeListener(javax.swing.event.ChangeListener) */ public void addChangeListener(ChangeListener l) { slider.addChangeListener(l); } /** * @see javax.swing.JSlider#removeChangeListener(javax.swing.event.ChangeListener) */ public void removeChangeListener(ChangeListener l) { slider.removeChangeListener(l); } /** * Remove all change listener */ public void removeAllChangeListener() { for (ChangeListener l : slider.getListeners(ChangeListener.class)) slider.removeChangeListener(l); } /** * @see javax.swing.JSlider#getValue() */ public int getValue() { return slider.getValue(); } /** * @param n * @see javax.swing.JSlider#setValue(int) */ public void setValue(int n) { slider.setValue(n); } /** * @see javax.swing.JSlider#getMinimum() */ public int getMinimum() { return slider.getMinimum(); } /** * @see javax.swing.JSlider#setMinimum(int) */ public void setMinimum(int minimum) { slider.setMinimum(minimum); } /** * @see javax.swing.JSlider#getMaximum() */ public int getMaximum() { return slider.getMaximum(); } /** * @see javax.swing.JSlider#setMaximum(int) */ public void setMaximum(int maximum) { slider.setMaximum(maximum); } /** * @see javax.swing.JSlider#getPaintTicks() */ public boolean getPaintTicks() { return slider.getPaintTicks(); } /** * @see javax.swing.JSlider#getPaintTrack() */ public boolean getPaintTrack() { return slider.getPaintTrack(); } /** * @see javax.swing.JSlider#setPaintTrack(boolean) */ public void setPaintTrack(boolean b) { slider.setPaintTrack(b); } /** * @see javax.swing.JSlider#getPaintLabels() */ public boolean getPaintLabels() { return slider.getPaintLabels(); } }