/*========================================================================= Program: FusionViewer Module: $RCSfile: CheckerboardPanel.java,v $ Language: Java Date: $Date: 2008/01/11 21:43:26 $ Version: $Revision: 1.3 $ Copyright (c) Insightful Corporation. All rights reserved. See Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ package org.fusionviewer.ui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.fusionviewer.model.FusionDisplayModel; import org.fusionviewer.model.ImageDisplayModel; import org.fusionviewer.model.ImageDisplayModelListener; /**\class CheckerboardPanel *\brief Controls for changing checkerboard fusion mode parameters. */ public class CheckerboardPanel extends JPanel implements ChangeListener, ImageDisplayModelListener { private FusionDisplayModel m_model; private JSlider m_slider; private JLabel m_value; public CheckerboardPanel(FusionDisplayModel model) { m_model = model; model.addListener(this); setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); setLayout(new GridBagLayout()); GridBagConstraints labelConstraints = new GridBagConstraints(); labelConstraints.fill = GridBagConstraints.NONE; labelConstraints.anchor = GridBagConstraints.LINE_START; labelConstraints.insets = new java.awt.Insets(5, 5, 5, 5); labelConstraints.gridx = 0; labelConstraints.gridy = 0; GridBagConstraints sliderConstraints = new GridBagConstraints(); sliderConstraints.fill = GridBagConstraints.HORIZONTAL; sliderConstraints.weightx = 1.0; sliderConstraints.insets = new java.awt.Insets(5, 5, 5, 5); sliderConstraints.gridx = 1; sliderConstraints.gridy = 0; GridBagConstraints valueConstraints = new GridBagConstraints(); valueConstraints.fill = GridBagConstraints.HORIZONTAL; valueConstraints.insets = new java.awt.Insets(5, 5, 5, 5); valueConstraints.gridx = 1; valueConstraints.gridy = 1; m_slider = new JSlider(); m_slider.setPaintTicks(true); m_slider.setMajorTickSpacing(50); m_slider.setMaximum(350); m_slider.setMinimum(50); m_slider.addChangeListener(this); m_value = new JLabel(); m_value.setHorizontalAlignment(JLabel.CENTER); setOpaque(false); m_slider.setOpaque(false); setValuesToModel(); add(new JLabel("Block Size"), labelConstraints); add(m_slider, sliderConstraints); add(m_value, valueConstraints); } private void setValuesToModel() { int value = m_model.getCheckerboardSize(); m_slider.setValue(value); showText(value); } /* (non-Javadoc) * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) */ public void stateChanged(ChangeEvent e) { m_model.setCheckerboardSize(m_slider.getValue()); showText(m_slider.getValue()); } /* (non-Javadoc) * @see com.insightful.jimage.core.ImageDisplayModelListener#modelChanged(int, com.insightful.jimage.core.ImageDisplayModel) */ public void modelChanged(int type, int planes, ImageDisplayModel source) { if (type == FusionDisplayModel.CHECKERBOARD_CHANGED) setValuesToModel(); } private void showText(int value) { m_value.setText(Integer.toString(value) + " pixels"); } }