~ubuntu-branches/ubuntu/utopic/figtree/utopic

« back to all changes in this revision

Viewing changes to src/figtree/ui/components/ColorWellButton.java

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Tille
  • Date: 2011-02-21 08:17:38 UTC
  • Revision ID: james.westby@ubuntu.com-20110221081738-80pe2ulo8rg7up10
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * ColorWellButton.java
 
3
 *
 
4
 * Copyright (c) 2009 JAM Development Team
 
5
 *
 
6
 * This package is distributed under the Lesser Gnu Public Licence (LGPL)
 
7
 *
 
8
 */
 
9
 
 
10
package figtree.ui.components;
 
11
 
 
12
import javax.swing.*;
 
13
import java.awt.*;
 
14
import java.awt.event.ActionListener;
 
15
import java.awt.event.ActionEvent;
 
16
import java.io.StringWriter;
 
17
import java.io.PrintWriter;
 
18
 
 
19
/**
 
20
 * @author Andrew Rambaut
 
21
 * @version $Id$
 
22
 */
 
23
public class ColorWellButton extends JButton {
 
24
        private JColorChooser chooser;
 
25
        private String colorChooserTitle;
 
26
 
 
27
        public ColorWellButton(Color color, final String colorChooserTitle) {
 
28
                super();
 
29
 
 
30
                this.colorChooserTitle = colorChooserTitle;
 
31
 
 
32
                putClientProperty("JButton.buttonType", "square");
 
33
                setBorderPainted(true);
 
34
//              putClientProperty("Quaqua.Button.style", "colorWell");
 
35
                setIcon(new ColorWell(color));
 
36
                setMargin(new Insets(10, 10, 10, 10));
 
37
                addActionListener(new ActionListener() {
 
38
                        public void actionPerformed(ActionEvent evt) {
 
39
                                chooserButtonActionPerformed(evt);
 
40
                        }
 
41
                });
 
42
        }
 
43
 
 
44
        public Color getSelectedColor() {
 
45
                return ((ColorWell)getIcon()).color;
 
46
        }
 
47
 
 
48
        public void setSelectedColor(Color color) {
 
49
                ((ColorWell)getIcon()).color = color;
 
50
                repaint();
 
51
        }
 
52
 
 
53
    private void chooserButtonActionPerformed(java.awt.event.ActionEvent evt) {
 
54
        try {
 
55
            //      System.out.println("chooserButtonActionPerformed "+evt);
 
56
            if (chooser == null) {
 
57
                chooser = new JColorChooser();
 
58
                /*
 
59
                chooser.setSelectionModel(new DefaultColorSelectionModel() {
 
60
                    public void setSelectedColor(Color c) {
 
61
                        new Throwable().printStackTrace();
 
62
                        super.setSelectedColor(c);
 
63
                    }
 
64
                }
 
65
                );*/
 
66
                //JOptionPane.showMessageDialog(this, "Made a new chooser");
 
67
            }
 
68
            Color color = chooser.showDialog(this, colorChooserTitle, ((ColorWell)getIcon()).color);
 
69
                if (color != null) {
 
70
                        setSelectedColor(color);
 
71
                }
 
72
        } catch (Throwable t) {
 
73
            StringWriter sw = new StringWriter();
 
74
            PrintWriter pw = new PrintWriter(sw);
 
75
            t.printStackTrace(pw);
 
76
            pw.close();
 
77
            JOptionPane.showMessageDialog(this, "JColorChooser Failed "+sw.toString());
 
78
            t.printStackTrace();
 
79
        }
 
80
    }
 
81
 
 
82
        private class ColorWell implements Icon {
 
83
                Color color;
 
84
 
 
85
                ColorWell(Color color) {
 
86
                        super();
 
87
                        this.color = color;
 
88
                }
 
89
 
 
90
                public int getIconWidth() {
 
91
                        return 15;
 
92
                }
 
93
 
 
94
                public int getIconHeight() {
 
95
                        return 15;
 
96
                }
 
97
 
 
98
                public void paintIcon(Component c, Graphics g, int x, int y) {
 
99
                        if (color == null) return;
 
100
                        g.setColor(color);
 
101
                        g.fillRect(x, y, getIconWidth(), getIconHeight());
 
102
                        g.setColor(color.darker());
 
103
                        g.drawRect(x, y, getIconWidth() - 1, getIconHeight() - 1);
 
104
                }
 
105
        }
 
106
 
 
107
}