/* * File : AlphaColorChooserPanel.java * Created : 25-sep-2002 16:51 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program 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 2 of the License, or * (at your option) any later version. * * This program 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 (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.util.Options; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JColorChooser; import javax.swing.colorchooser.ColorSelectionModel; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.08.29 */ public class AlphaColorChooserPanel extends javax.swing.colorchooser.AbstractColorChooserPanel { protected javax.swing.JColorChooser currentChooser = null; protected Options options; /** Creates new form AlphaColorChooserPanel */ public AlphaColorChooserPanel(Options options) { super(); this.options=options; initComponents(); } /** 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. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel alphaLabel; java.awt.GridBagConstraints gridBagConstraints; alphaSlider = new javax.swing.JSlider(); alphaLabel = new javax.swing.JLabel(); alphaTxt = new javax.swing.JTextField(); setLayout(new java.awt.GridBagLayout()); alphaSlider.setMajorTickSpacing(50); alphaSlider.setMaximum(255); alphaSlider.setMinorTickSpacing(10); alphaSlider.setPaintLabels(true); alphaSlider.setPaintTicks(true); alphaSlider.setToolTipText(options.getMsg("edit_color_opacity_tooltip")); alphaSlider.setValue(0); alphaSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { alphaSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaSlider, gridBagConstraints); alphaLabel.setText(options.getMsg("edit_color_opacity")); alphaLabel.setLabelFor(alphaTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaLabel, gridBagConstraints); alphaTxt.setText("0"); alphaTxt.setToolTipText(options.getMsg("edit_color_opacity_tooltip")); alphaTxt.setPreferredSize(new java.awt.Dimension(40, 21)); alphaTxt.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaTxt, gridBagConstraints); }//GEN-END:initComponents private void alphaSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_alphaSliderStateChanged int v=alphaSlider.getValue(); alphaTxt.setText(Integer.toString(v)); ColorSelectionModel csm=getColorSelectionModel(); if(csm!=null){ Color c=csm.getSelectedColor(); Color nc = v < 255 ? new Color(c.getRed(), c.getGreen(), c.getBlue(), v) : new Color(c.getRed(), c.getGreen(), c.getBlue()); csm.setSelectedColor(nc); } }//GEN-LAST:event_alphaSliderStateChanged public String getDisplayName() { return options.getMsg("edit_color_opacity"); } public javax.swing.Icon getLargeDisplayIcon() { return null; } public javax.swing.Icon getSmallDisplayIcon() { return null; } @Override public void installChooserPanel(javax.swing.JColorChooser jColorChooser) { super.installChooserPanel(jColorChooser); currentChooser=jColorChooser; setColor(jColorChooser.getColor()); } protected void setColor(Color c){ int a=c.getAlpha(); alphaSlider.setValue(a); alphaTxt.setText(Integer.toString(a)); } public void updateChooser() { /* ColorSelectionModel csm=getColorSelectionModel(); if(csm!=null){ int a=csm.getSelectedColor().getAlpha(); alphaSlider.setValue(a); alphaTxt.setText(Integer.toString(a)); } */ } protected void buildChooser() { //initComponents(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider alphaSlider; private javax.swing.JTextField alphaTxt; // End of variables declaration//GEN-END:variables static JColorChooser chooser; static AlphaColorChooserPanel accp; static ActionListener okListener; static ActionListener cancelListener; static Object[] result; public static Color chooseColor(Options options, java.awt.Component parent, Color initialColor){ if(chooser==null){ chooser=new JColorChooser(initialColor); accp=new AlphaColorChooserPanel(options); chooser.addChooserPanel(accp); result=new Object[1]; okListener = new ActionListener() { public void actionPerformed(ActionEvent e) { result[0] = chooser.getColor(); } }; cancelListener = new ActionListener() { public void actionPerformed(ActionEvent e) { result[0] = null; } }; } // 30-mai-2007 // Clear result between calls to chooseColor result[0]=null; chooser.setColor(initialColor); accp.setColor(initialColor); JColorChooser.createDialog(parent, options.getMsg("edit_color_dlgTitle"), true, chooser, okListener, cancelListener).setVisible(true); return (Color)result[0]; } }