/* * @(#)PaletteColorWheelChooser.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 javax.swing.*; import javax.swing.colorchooser.*; import javax.swing.event.*; import javax.swing.plaf.*; import org.jhotdraw.color.HSVColorSpace; import org.jhotdraw.color.JColorWheel; import org.jhotdraw.gui.plaf.palette.PaletteLookAndFeel; import org.jhotdraw.gui.plaf.palette.PalettePanelUI; /** * A HSB color chooser, which displays a hue/saturation color wheel, and a * brightness slider. * * @author Werner Randelshofer * @version $Id$ */ public class PaletteColorWheelChooser extends AbstractColorChooserPanel implements UIResource { private static final long serialVersionUID = 1L; private JColorWheel colorWheel; private PaletteColorSliderModel ccModel = new PaletteColorSliderModel(new HSVColorSpace()); private int updatingChooser; /** * Creates a new instance. */ public PaletteColorWheelChooser() { } /** 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() { brightnessSlider = new javax.swing.JSlider(); setBorder(javax.swing.BorderFactory.createEmptyBorder(4, 6, 6, 6)); setLayout(new java.awt.BorderLayout()); brightnessSlider.setMajorTickSpacing(50); brightnessSlider.setOrientation(javax.swing.JSlider.VERTICAL); brightnessSlider.setPaintTicks(true); add(brightnessSlider, java.awt.BorderLayout.EAST); }// </editor-fold>//GEN-END:initComponents @Override protected void buildChooser() { initComponents(); setUI(PalettePanelUI.createUI(this)); int textSliderGap = PaletteLookAndFeel.getInstance().getInt("ColorChooser.textSliderGap"); if (textSliderGap != 0) { BorderLayout layout = (BorderLayout) getLayout(); layout.setHgap(textSliderGap); } colorWheel = new JColorWheel(); add(colorWheel); ccModel.configureSlider(2, brightnessSlider); brightnessSlider.setMaximum(200); colorWheel.setModel(ccModel); ccModel.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent evt) { setColorToModel(ccModel.getColor()); } }); } @Override public String getDisplayName() { return PaletteLookAndFeel.getInstance().getString("ColorChooser.colorWheel"); } @Override public javax.swing.Icon getLargeDisplayIcon() { return PaletteLookAndFeel.getInstance().getIcon("ColorChooser.colorWheelIcon"); } @Override public Icon getSmallDisplayIcon() { return getLargeDisplayIcon(); } @Override public void updateChooser() { updatingChooser++; ccModel.setColor(getColorFromModel()); updatingChooser--; } public void setColorToModel(Color color) { if (updatingChooser == 0) { getColorSelectionModel().setSelectedColor(color); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider brightnessSlider; // End of variables declaration//GEN-END:variables }