/*
* @(#)PaletteColorSlidersChooser.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.gui.plaf.palette.colorchooser;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.colorchooser.*;
import javax.swing.plaf.*;
import org.jhotdraw.gui.plaf.palette.PaletteLookAndFeel;
import org.jhotdraw.gui.plaf.palette.PalettePanelUI;
/**
* The ColorSlidersChooser contains four individual color slider pages: gray
* slider, RGB sliders, CMYK sliders, and HTML sliders.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class PaletteColorSlidersChooser extends AbstractColorChooserPanel
implements UIResource {
private static final long serialVersionUID = 1L;
/**
* We store here the name of the last selected color sliders panel.
* When the ColorSlidersChooser is recreated multiple times in the same
* panel, the application 'remembers' which panel the user had opened
* before.
*/
private static int lastSelectedPanelIndex = 0;
/** Creates new form. */
public PaletteColorSlidersChooser() {
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
slidersComboBox = new javax.swing.JComboBox();
slidersHolder = new javax.swing.JPanel();
setBorder(javax.swing.BorderFactory.createEmptyBorder(4, 6, 6, 6));
setLayout(new java.awt.BorderLayout());
add(slidersComboBox, java.awt.BorderLayout.NORTH);
slidersHolder.setLayout(new java.awt.CardLayout());
add(slidersHolder, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
@Override
protected void buildChooser() {
initComponents();
PaletteLookAndFeel laf = PaletteLookAndFeel.getInstance();
setUI(PalettePanelUI.createUI(this));
slidersHolder.setUI((PanelUI) PalettePanelUI.createUI(slidersHolder));
slidersComboBox.setFont(laf.getFont("ColorChooser.font"));
slidersHolder.add(new PaletteRGBChooser(),""+laf.getString("ColorChooser.rgbSliders"));
slidersHolder.add(new PaletteCMYKChooser(),""+laf.getString("ColorChooser.cmykSliders"));
slidersHolder.add(new PaletteHSBChooser(),""+laf.getString("ColorChooser.hsbSliders"));
DefaultComboBoxModel cbm = new DefaultComboBoxModel();
cbm.addElement(laf.getString("ColorChooser.rgbSliders"));
cbm.addElement(laf.getString("ColorChooser.cmykSliders"));
cbm.addElement(laf.getString("ColorChooser.hsbSliders"));
slidersComboBox.setModel(cbm);
slidersComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
((CardLayout) slidersHolder.getLayout()).show(slidersHolder, (String) evt.getItem());
lastSelectedPanelIndex = slidersComboBox.getSelectedIndex();
}
}
});
slidersComboBox.setSelectedIndex(lastSelectedPanelIndex);
}
@Override
public void installChooserPanel(JColorChooser enclosingChooser) {
super.installChooserPanel(enclosingChooser);
Component[] components = slidersHolder.getComponents();
for (Component component : components) {
AbstractColorChooserPanel ccp = (AbstractColorChooserPanel) component;
ccp.installChooserPanel(enclosingChooser);
}
}
/**
* Invoked when the panel is removed from the chooser.
* If override this, be sure to call <code>super</code>.
*/
@Override
public void uninstallChooserPanel(JColorChooser enclosingChooser) {
Component[] components = slidersHolder.getComponents();
for (Component component : components) {
AbstractColorChooserPanel ccp = (AbstractColorChooserPanel) component;
ccp.uninstallChooserPanel(enclosingChooser);
}
super.uninstallChooserPanel(enclosingChooser);
}
@Override
public String getDisplayName() {
PaletteLookAndFeel laf = PaletteLookAndFeel.getInstance();
return laf.getString("ColorChooser.colorSliders");
}
@Override
public Icon getLargeDisplayIcon() {
PaletteLookAndFeel laf = PaletteLookAndFeel.getInstance();
return laf.getIcon("ColorChooser.colorSlidersIcon");
}
@Override
public Icon getSmallDisplayIcon() {
return getLargeDisplayIcon();
}
@Override
public void updateChooser() {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox slidersComboBox;
private javax.swing.JPanel slidersHolder;
// End of variables declaration//GEN-END:variables
}