KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > form > fakepeer > FakeButtonPeer


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20
21 package org.netbeans.modules.form.fakepeer;
22
23 import java.awt.*;
24
25 /**
26  *
27  * @author Tran Duc Trung
28  */

29 class FakeButtonPeer extends FakeComponentPeer
30 {
31     FakeButtonPeer(Button target) {
32         super(target);
33     }
34
35     Component createDelegate() {
36         return new Delegate();
37     }
38
39     public void setLabel(String JavaDoc label) {
40     }
41
42     //
43
//
44
//
45

46     private class Delegate extends Component
47     {
48         Delegate() {
49             this.setBackground(SystemColor.control);
50             this.setForeground(SystemColor.controlText);
51         }
52         
53         public void paint(Graphics g) {
54             Button target =(Button) _target;
55             Dimension sz = target.getSize();
56
57             g.setColor(target.getBackground());
58             FakePeerUtils.drawButton(g, 0, 0, sz.width, sz.height);
59
60             String JavaDoc label = target.getLabel();
61             if (label == null)
62                 return;
63             
64             g.setFont(target.getFont());
65
66             FontMetrics fm = g.getFontMetrics();
67             int w = fm.stringWidth(label),
68                 h = fm.getHeight() - fm.getDescent(),
69                 x = (sz.width - w) / 2,
70                 y = (sz.height - h) / 2 + h - 2;
71             
72             if (target.isEnabled()) {
73                 g.setColor(target.getForeground());
74             }
75             else {
76                 g.setColor(SystemColor.controlLtHighlight);
77                 g.drawString(label, x+1, y+1);
78                 g.setColor(SystemColor.controlShadow);
79             }
80
81             g.drawString(label, x, y);
82         }
83
84         public Dimension getMinimumSize() {
85             String JavaDoc label = ((Button)_target).getLabel();
86
87             FontMetrics fm = this.getFontMetrics(this.getFont());
88             int w = fm.stringWidth(label);
89             int h = fm.getHeight();
90
91             return new Dimension(w + MARGINS.left + MARGINS.right,
92                                  h + MARGINS.top + MARGINS.bottom);
93         }
94     }
95
96     private static final Insets MARGINS = new Insets(4, 8, 4, 8);
97 }
98
Popular Tags