mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/gdm/GDMBorderColorDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: GDMBorderColorDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 20:22:00 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 package org.tigr.microarray.mev.cluster.gui.impl.gdm;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import java.awt.BorderLayout;
2 26 Feb 07 jari 16 import java.awt.Color;
2 26 Feb 07 jari 17 import java.awt.Dimension;
2 26 Feb 07 jari 18 import java.awt.Frame;
2 26 Feb 07 jari 19 import java.awt.GradientPaint;
2 26 Feb 07 jari 20 import java.awt.Graphics;
2 26 Feb 07 jari 21 import java.awt.Graphics2D;
2 26 Feb 07 jari 22 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 23 import java.awt.Insets;
2 26 Feb 07 jari 24 import java.awt.Toolkit;
2 26 Feb 07 jari 25 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 26 import java.awt.event.ActionListener;
2 26 Feb 07 jari 27 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29 import javax.swing.JDialog;
2 26 Feb 07 jari 30 import javax.swing.JOptionPane;
2 26 Feb 07 jari 31 import javax.swing.JPanel;
2 26 Feb 07 jari 32 import javax.swing.border.EtchedBorder;
2 26 Feb 07 jari 33 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 34 import javax.swing.event.ChangeListener;
2 26 Feb 07 jari 35
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37 /** Supplies option dialog for selection of
2 26 Feb 07 jari 38  * expression color scheme
2 26 Feb 07 jari 39  */
2 26 Feb 07 jari 40 public class GDMBorderColorDialog extends JDialog {
2 26 Feb 07 jari 41    
2 26 Feb 07 jari 42     /**
2 26 Feb 07 jari 43      * Creates new form ColorSchemeSelectionDialog
2 26 Feb 07 jari 44      * @param parent parent Frame
2 26 Feb 07 jari 45      * @param modal modal selection for dialog
2 26 Feb 07 jari 46      */
2 26 Feb 07 jari 47     public GDMBorderColorDialog(Frame parent, boolean modal, Color color) {
2 26 Feb 07 jari 48         super(parent, modal);
2 26 Feb 07 jari 49         this.setTitle("Border Color Scheme Selection");
2 26 Feb 07 jari 50         this.borderColor = color;
2 26 Feb 07 jari 51         previewer = new PreviewPanel(color);
2 26 Feb 07 jari 52         initComponents();
2 26 Feb 07 jari 53
2 26 Feb 07 jari 54         this.colorChooser.setPreviewPanel(new JPanel());
2 26 Feb 07 jari 55         this.gradientPreviewPanel.add(this.previewer, BorderLayout.CENTER);
2 26 Feb 07 jari 56         this.colorChooser.getSelectionModel().addChangeListener(previewer);
2 26 Feb 07 jari 57         setSize(450, 465);
2 26 Feb 07 jari 58         
2 26 Feb 07 jari 59         this.okButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 60             public void actionPerformed(ActionEvent e){
2 26 Feb 07 jari 61                 result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 62                 setVisible(false);
2 26 Feb 07 jari 63             }
2 26 Feb 07 jari 64         });
2 26 Feb 07 jari 65         
2 26 Feb 07 jari 66         this.cancelButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 67             public void actionPerformed(ActionEvent e){
2 26 Feb 07 jari 68                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 69                 setVisible(false);
2 26 Feb 07 jari 70             }
2 26 Feb 07 jari 71         });
2 26 Feb 07 jari 72     
2 26 Feb 07 jari 73     boolean initState = (borderColor == Color.black) ? true : false;
2 26 Feb 07 jari 74     
2 26 Feb 07 jari 75         defaultBlackCheckBox = new javax.swing.JCheckBox("Black - default", initState);
2 26 Feb 07 jari 76         defaultBlackCheckBox.setFocusPainted(false);
2 26 Feb 07 jari 77             
2 26 Feb 07 jari 78         defaultBlackCheckBox.addActionListener( new ActionListener(){
2 26 Feb 07 jari 79             public void actionPerformed(ActionEvent ae){
2 26 Feb 07 jari 80                 if(defaultBlackCheckBox.isSelected()) {
2 26 Feb 07 jari 81                     borderColor = Color.black;
2 26 Feb 07 jari 82           previewer.setColorGradient(previewer.createGradientImage(borderColor, borderColor));
2 26 Feb 07 jari 83                 repaint();
2 26 Feb 07 jari 84
2 26 Feb 07 jari 85                 } else {
2 26 Feb 07 jari 86                      defaultBlackSet = false;
2 26 Feb 07 jari 87                 }
2 26 Feb 07 jari 88             }
2 26 Feb 07 jari 89         });
2 26 Feb 07 jari 90         
2 26 Feb 07 jari 91         this.defaultBlackPanel.add(defaultBlackCheckBox, new GridBagConstraints(0,1,2,0,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL, new Insets(0,50,0,0), 0,0));
2 26 Feb 07 jari 92         this.defaultBlackPanel.validate();
2 26 Feb 07 jari 93        
2 26 Feb 07 jari 94     }
2 26 Feb 07 jari 95     
2 26 Feb 07 jari 96     public Color getBorderColor() {
2 26 Feb 07 jari 97       return this.borderColor;
2 26 Feb 07 jari 98     }
2 26 Feb 07 jari 99     
2 26 Feb 07 jari 100     /** This method is called from within the constructor to
2 26 Feb 07 jari 101      * initialize the form.
2 26 Feb 07 jari 102      */
2 26 Feb 07 jari 103     private void initComponents() {//GEN-BEGIN:initComponents
2 26 Feb 07 jari 104         defaultBlackPanel = new javax.swing.JPanel();    
2 26 Feb 07 jari 105         actionButtonPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 106         okButton = new javax.swing.JButton();
2 26 Feb 07 jari 107         cancelButton = new javax.swing.JButton();
2 26 Feb 07 jari 108         colorChooser = new javax.swing.JColorChooser();
2 26 Feb 07 jari 109         this.colorChooser.setPreviewPanel(previewer);
2 26 Feb 07 jari 110         gradientPreviewPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 111         
2 26 Feb 07 jari 112         
2 26 Feb 07 jari 113         getContentPane().setLayout(new java.awt.GridBagLayout());
2 26 Feb 07 jari 114         java.awt.GridBagConstraints gridBagConstraints1;
2 26 Feb 07 jari 115         
2 26 Feb 07 jari 116         setModal(true);
2 26 Feb 07 jari 117         setResizable(false);
2 26 Feb 07 jari 118         addWindowListener(new java.awt.event.WindowAdapter() {
2 26 Feb 07 jari 119             public void windowClosing(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 120                 closeDialog(evt);
2 26 Feb 07 jari 121             }
2 26 Feb 07 jari 122         });
2 26 Feb 07 jari 123         
2 26 Feb 07 jari 124         defaultBlackPanel.setLayout(new java.awt.GridBagLayout());
2 26 Feb 07 jari 125         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 126         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 127         gridBagConstraints1.gridy = 0;
2 26 Feb 07 jari 128         gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 129         getContentPane().add(defaultBlackPanel, gridBagConstraints1);
2 26 Feb 07 jari 130         
2 26 Feb 07 jari 131         actionButtonPanel.setLayout(new java.awt.GridBagLayout());
2 26 Feb 07 jari 132         java.awt.GridBagConstraints gridBagConstraints3;
2 26 Feb 07 jari 133         
2 26 Feb 07 jari 134         okButton.setText(" Apply Color Scheme");
2 26 Feb 07 jari 135         okButton.setFocusPainted(false);
2 26 Feb 07 jari 136         okButton.setSelected(true);
2 26 Feb 07 jari 137         gridBagConstraints3 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 138         gridBagConstraints3.gridx = 0;
2 26 Feb 07 jari 139         gridBagConstraints3.gridy = 0;
2 26 Feb 07 jari 140         gridBagConstraints3.insets = new java.awt.Insets(10, 0, 10, 10);
2 26 Feb 07 jari 141         actionButtonPanel.add(okButton, gridBagConstraints3);
2 26 Feb 07 jari 142         
2 26 Feb 07 jari 143         cancelButton.setText("Cancel");
2 26 Feb 07 jari 144         gridBagConstraints3 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 145         gridBagConstraints3.gridx = 1;
2 26 Feb 07 jari 146         gridBagConstraints3.gridy = 0;
2 26 Feb 07 jari 147         gridBagConstraints3.insets = new java.awt.Insets(10, 10, 10, 0);
2 26 Feb 07 jari 148         actionButtonPanel.add(cancelButton, gridBagConstraints3);
2 26 Feb 07 jari 149         
2 26 Feb 07 jari 150         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 151         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 152         gridBagConstraints1.gridy = 3;
2 26 Feb 07 jari 153         gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;
2 26 Feb 07 jari 154         getContentPane().add(actionButtonPanel, gridBagConstraints1);
2 26 Feb 07 jari 155         
2 26 Feb 07 jari 156         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 157         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 158         gridBagConstraints1.gridy = 1;
2 26 Feb 07 jari 159         gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;
2 26 Feb 07 jari 160         getContentPane().add(colorChooser, gridBagConstraints1);
2 26 Feb 07 jari 161         
2 26 Feb 07 jari 162         gradientPreviewPanel.setLayout(new java.awt.BorderLayout());
2 26 Feb 07 jari 163         
2 26 Feb 07 jari 164         gradientPreviewPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), "Gradient Preview"));
2 26 Feb 07 jari 165         gradientPreviewPanel.setPreferredSize(new java.awt.Dimension(200, 70));
2 26 Feb 07 jari 166         gradientPreviewPanel.setMinimumSize(new java.awt.Dimension(200, 70));
2 26 Feb 07 jari 167         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 168         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 169         gridBagConstraints1.gridy = 2;
2 26 Feb 07 jari 170         gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;
2 26 Feb 07 jari 171         getContentPane().add(gradientPreviewPanel, gridBagConstraints1);
2 26 Feb 07 jari 172         
2 26 Feb 07 jari 173         pack();
2 26 Feb 07 jari 174     }//GEN-END:initComponents
2 26 Feb 07 jari 175     
2 26 Feb 07 jari 176     /** Closes the dialog */
2 26 Feb 07 jari 177     private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
2 26 Feb 07 jari 178         setVisible(false);
2 26 Feb 07 jari 179         dispose();
2 26 Feb 07 jari 180     }//GEN-LAST:event_closeDialog
2 26 Feb 07 jari 181     
2 26 Feb 07 jari 182     /**
2 26 Feb 07 jari 183      * Shows the dialog.
2 26 Feb 07 jari 184      */
2 26 Feb 07 jari 185     public int showModal() {
2 26 Feb 07 jari 186         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 187         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 188         show();
2 26 Feb 07 jari 189         return result;
2 26 Feb 07 jari 190     }    
2 26 Feb 07 jari 191     
2 26 Feb 07 jari 192     // Variables declaration - do not modify//GEN-BEGIN:variables
2 26 Feb 07 jari 193     private javax.swing.JPanel defaultBlackPanel;    
2 26 Feb 07 jari 194     private javax.swing.JPanel actionButtonPanel;
2 26 Feb 07 jari 195     private javax.swing.JButton okButton;
2 26 Feb 07 jari 196     private javax.swing.JButton cancelButton;
2 26 Feb 07 jari 197     private javax.swing.JColorChooser colorChooser;
2 26 Feb 07 jari 198     private javax.swing.JPanel gradientPreviewPanel;
2 26 Feb 07 jari 199     private javax.swing.JCheckBox defaultBlackCheckBox;
2 26 Feb 07 jari 200     
2 26 Feb 07 jari 201     // End of variables declaration//GEN-END:variables
2 26 Feb 07 jari 202   private Color borderColor;    
2 26 Feb 07 jari 203     private PreviewPanel previewer;
2 26 Feb 07 jari 204     private boolean defaultBlackSet;
2 26 Feb 07 jari 205     private int result = 0;
2 26 Feb 07 jari 206     
2 26 Feb 07 jari 207     /**
2 26 Feb 07 jari 208      * Panel which displays the current color scheme gradient
2 26 Feb 07 jari 209      */
2 26 Feb 07 jari 210     public class PreviewPanel extends JPanel implements ChangeListener{
2 26 Feb 07 jari 211         
2 26 Feb 07 jari 212         BufferedImage currentColorGradient;
2 26 Feb 07 jari 213         
2 26 Feb 07 jari 214         public PreviewPanel(Color color) {
2 26 Feb 07 jari 215           borderColor = color;
2 26 Feb 07 jari 216             currentColorGradient = createGradientImage(borderColor, borderColor);;
2 26 Feb 07 jari 217             super.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Gradient Preview"));
2 26 Feb 07 jari 218             setSize(200, 70);
2 26 Feb 07 jari 219             setPreferredSize(new Dimension(200, 70));
2 26 Feb 07 jari 220             setVisible(true);
2 26 Feb 07 jari 221         }
2 26 Feb 07 jari 222         
2 26 Feb 07 jari 223         void setColorGradient(BufferedImage image) {
2 26 Feb 07 jari 224           currentColorGradient = image;
2 26 Feb 07 jari 225         }
2 26 Feb 07 jari 226         
2 26 Feb 07 jari 227         /**
2 26 Feb 07 jari 228          * Handles color change events
2 26 Feb 07 jari 229          */
2 26 Feb 07 jari 230         public void stateChanged(javax.swing.event.ChangeEvent changeEvent) {
2 26 Feb 07 jari 231
2 26 Feb 07 jari 232       Color newColor = colorChooser.getColor();
2 26 Feb 07 jari 233
2 26 Feb 07 jari 234             if(newColor == null || (borderColor == Color.black && defaultBlackSet == true)) return;
2 26 Feb 07 jari 235             
2 26 Feb 07 jari 236             if (defaultBlackSet == true) 
2 26 Feb 07 jari 237               borderColor = Color.black;
2 26 Feb 07 jari 238             else                
2 26 Feb 07 jari 239         borderColor = newColor;
2 26 Feb 07 jari 240         
2 26 Feb 07 jari 241       setColorGradient(createGradientImage(borderColor, borderColor));
2 26 Feb 07 jari 242       // currentColorGradient = createGradientImage(borderColor, borderColor);
2 26 Feb 07 jari 243             repaint();
2 26 Feb 07 jari 244         }
2 26 Feb 07 jari 245         
2 26 Feb 07 jari 246         /**
2 26 Feb 07 jari 247          * Paints dialog
2 26 Feb 07 jari 248          */
2 26 Feb 07 jari 249         public void paint(Graphics g){
2 26 Feb 07 jari 250             super.paintComponent(g);
2 26 Feb 07 jari 251             g.drawImage(currentColorGradient, 0, 0, this.getWidth()/2, this.getHeight(), null);
2 26 Feb 07 jari 252             g.drawImage(currentColorGradient, this.getWidth()/2, 0, this.getWidth()/2, this.getHeight(), null);
2 26 Feb 07 jari 253         }
2 26 Feb 07 jari 254         
2 26 Feb 07 jari 255         /**
2 26 Feb 07 jari 256          * Creates a gradient image given specified <CODE>Color</CODE>(s)
2 26 Feb 07 jari 257          * @param color1 <CODE>Color</CODE> to display at left side of gradient
2 26 Feb 07 jari 258          * @param color2 <CODE>Color</CODE> to display at right side of gradient
2 26 Feb 07 jari 259          * @return returns a gradient image
2 26 Feb 07 jari 260          */
2 26 Feb 07 jari 261         private BufferedImage createGradientImage(Color color1, Color color2) {
2 26 Feb 07 jari 262             BufferedImage image = new BufferedImage(256, 1, BufferedImage.TYPE_3BYTE_BGR);
2 26 Feb 07 jari 263             Graphics2D graphics = image.createGraphics();
2 26 Feb 07 jari 264             GradientPaint gp = new GradientPaint(0, 0, color1, 255, 0, color2);
2 26 Feb 07 jari 265             graphics.setPaint(gp);
2 26 Feb 07 jari 266             graphics.drawRect(0, 0, 255, 1);
2 26 Feb 07 jari 267             return image;
2 26 Feb 07 jari 268         }
2 26 Feb 07 jari 269         
2 26 Feb 07 jari 270     }
2 26 Feb 07 jari 271     
2 26 Feb 07 jari 272 }