org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.GrayChooser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of substance Show documentation
Show all versions of substance Show documentation
A fork of @kirilcool's substance project
/*
* @(#)GrayChooser.java 1.4 2006-04-23
*
* Copyright (c) 2005-2006 Werner Randelshofer
* Staldenmattweg 2, Immensee, CH-6405, Switzerland.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Werner Randelshofer. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entehue into
* with Werner Randelshofer.
*/
package org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser;
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.plaf.*;
import org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.*;
import org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.util.*;
/**
* A color chooser with a brightness slider.
*
* @author Werner Randelshofer
* @version 1.4 2006-04-23 Retrieve labels from UIManager.
*
1.3 2005-11-22 Moved handler for text fields into separate class.
*
1.2.1 2005-11-07 Get "Labels" ResourceBundle from UIManager.
*
1.2 2005-09-05 Get font, spacing and icon from UIManager.
*
1.1.1 2005-04-23 Localized form. Added color swatches for 0%, 25%, 50%,
* 75% and 100% brightness.
*
1.0 29 March 2005 Created.
*/
public class GrayChooser extends AbstractColorChooserPanel implements UIResource {
private ColorSliderModel ccModel = new GrayColorSliderModel();
/** Creates new form. */
public GrayChooser() {
initComponents();
Font font = UIManager.getFont("ColorChooser.font");
brightnessLabel.setFont(font);
brightnessSlider.setFont(font);
brightnessField.setFont(font);
brightnessFieldLabel.setFont(font);
zeroPercentButton.setFont(font);
twentyFivePercentButton.setFont(font);
fiftyPercentButton.setFont(font);
seventyFivePercentButton.setFont(font);
//
int textSliderGap = UIManager.getInt("ColorChooser.textSliderGap");
if (textSliderGap != 0) {
Border fieldBorder = new EmptyBorder(0,textSliderGap,0,0);
brightnessFieldPanel.setBorder(fieldBorder);
}
ccModel.configureColorSlider(0, brightnessSlider);
brightnessField.setText(Integer.toString(brightnessSlider.getValue()));
Insets borderMargin = (Insets) UIManager.getInsets("Component.visualMargin").clone();
borderMargin.left = 3 - borderMargin.left;
brightnessFieldLabel.putClientProperty("Quaqua.Component.visualMargin",borderMargin);
new ColorSliderTextFieldHandler(brightnessField, ccModel, 0);
ccModel.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent evt) {
if (updateRecursion == 0) {
setColorToModel(ccModel.getColor());
}
}
});
brightnessField.setMinimumSize(brightnessField.getPreferredSize());
VisualMargin bm = new VisualMargin(false,false,true,false);
brightnessLabel.setBorder(bm);
zeroPercentButton.putClientProperty("Quaqua.Button.style","colorWell");
twentyFivePercentButton.putClientProperty("Quaqua.Button.style","colorWell");
fiftyPercentButton.putClientProperty("Quaqua.Button.style","colorWell");
seventyFivePercentButton.putClientProperty("Quaqua.Button.style","colorWell");
hundredPercentButton.putClientProperty("Quaqua.Button.style","colorWell");
Border b = new CompoundBorder(new VisualMargin(), new SmallColorWellBorder());
zeroPercentButton.setBorder(b);
twentyFivePercentButton.setBorder(b);
fiftyPercentButton.setBorder(b);
seventyFivePercentButton.setBorder(b);
hundredPercentButton.setBorder(b);
Insets bmInsets = UIManager.getInsets("Component.visualMargin");
Dimension d = new Dimension(12+bmInsets.left+bmInsets.right,12+bmInsets.top+bmInsets.bottom);
zeroPercentButton.setPreferredSize(d);
twentyFivePercentButton.setPreferredSize(d);
fiftyPercentButton.setPreferredSize(d);
seventyFivePercentButton.setPreferredSize(d);
hundredPercentButton.setPreferredSize(d);
}
@Override
protected void buildChooser() {
}
@Override
public String getDisplayName() {
return UIManager.getString("ColorChooser.grayScaleSlider");
}
@Override
public Icon getLargeDisplayIcon() {
return UIManager.getIcon("ColorChooser.colorSlidersIcon");
}
@Override
public Icon getSmallDisplayIcon() {
return getLargeDisplayIcon();
}
/**
* We have to prevent us from constantly updating the color model, because
* the gray chooser is not able to preserve all color components.
*/
private int updateRecursion;
@Override
public void updateChooser() {
updateRecursion++;
Color cfm = getColorFromModel();
ccModel.setColor(cfm);
updateRecursion--;
}
public void setColorToModel(Color color) {
getColorSelectionModel().setSelectedColor(color);
}
/** 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.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
brightnessLabel = new javax.swing.JLabel();
brightnessSlider = new javax.swing.JSlider();
brightnessFieldPanel = new javax.swing.JPanel();
brightnessField = new javax.swing.JTextField();
brightnessFieldLabel = new javax.swing.JLabel();
springPanel = new javax.swing.JPanel();
percentPanel = new javax.swing.JPanel();
zeroPercentButton = new javax.swing.JButton();
twentyFivePercentButton = new javax.swing.JButton();
fiftyPercentButton = new javax.swing.JButton();
seventyFivePercentButton = new javax.swing.JButton();
hundredPercentButton = new javax.swing.JButton();
setLayout(new java.awt.GridBagLayout());
brightnessLabel.setText(UIManager.getString("ColorChooser.hsbBrightnessText"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
gridBagConstraints.insets = new java.awt.Insets(1, 0, 0, 0);
add(brightnessLabel, gridBagConstraints);
brightnessSlider.setMajorTickSpacing(100);
brightnessSlider.setMinorTickSpacing(50);
brightnessSlider.setPaintTicks(true);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
add(brightnessSlider, gridBagConstraints);
brightnessFieldPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0));
brightnessField.setColumns(3);
brightnessField.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
brightnessField.setText("0");
brightnessField.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusLost(java.awt.event.FocusEvent evt) {
brightnessFieldFocusLost(evt);
}
});
brightnessFieldPanel.add(brightnessField);
brightnessFieldLabel.setText("%");
brightnessFieldPanel.add(brightnessFieldLabel);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 5;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
add(brightnessFieldPanel, gridBagConstraints);
springPanel.setLayout(new java.awt.BorderLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 100;
gridBagConstraints.weighty = 1.0;
add(springPanel, gridBagConstraints);
percentPanel.setLayout(new java.awt.GridBagLayout());
zeroPercentButton.setBackground(new java.awt.Color(0, 0, 0));
zeroPercentButton.setToolTipText("0 %");
zeroPercentButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
percentActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
percentPanel.add(zeroPercentButton, gridBagConstraints);
twentyFivePercentButton.setBackground(new java.awt.Color(64, 64, 64));
twentyFivePercentButton.setToolTipText("25 %");
twentyFivePercentButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
percentActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
gridBagConstraints.weightx = 1.0;
percentPanel.add(twentyFivePercentButton, gridBagConstraints);
fiftyPercentButton.setBackground(new java.awt.Color(128, 128, 128));
fiftyPercentButton.setToolTipText("50 %");
fiftyPercentButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
percentActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
percentPanel.add(fiftyPercentButton, gridBagConstraints);
seventyFivePercentButton.setBackground(new java.awt.Color(192, 192, 192));
seventyFivePercentButton.setToolTipText("75 %");
seventyFivePercentButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
percentActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
gridBagConstraints.weightx = 1.0;
percentPanel.add(seventyFivePercentButton, gridBagConstraints);
hundredPercentButton.setBackground(new java.awt.Color(255, 255, 255));
hundredPercentButton.setToolTipText("100 %");
hundredPercentButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
percentActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
percentPanel.add(hundredPercentButton, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
add(percentPanel, gridBagConstraints);
}// //GEN-END:initComponents
private void percentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_percentActionPerformed
setColorToModel(((JButton) evt.getSource()).getBackground());
}//GEN-LAST:event_percentActionPerformed
private void brightnessFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_brightnessFieldFocusLost
brightnessField.setText(Integer.toString(ccModel.getBoundedRangeModel(0).getValue()));
}//GEN-LAST:event_brightnessFieldFocusLost
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField brightnessField;
private javax.swing.JLabel brightnessFieldLabel;
private javax.swing.JPanel brightnessFieldPanel;
private javax.swing.JLabel brightnessLabel;
private javax.swing.JSlider brightnessSlider;
private javax.swing.JButton fiftyPercentButton;
private javax.swing.JButton hundredPercentButton;
private javax.swing.JPanel percentPanel;
private javax.swing.JButton seventyFivePercentButton;
private javax.swing.JPanel springPanel;
private javax.swing.JButton twentyFivePercentButton;
private javax.swing.JButton zeroPercentButton;
// End of variables declaration//GEN-END:variables
}