1 /*
2  * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package com.sun.java.swing.plaf.motif;
27 
28 import sun.awt.AppContext;
29 
30 import javax.swing.*;
31 import javax.swing.border.*;
32 import javax.swing.plaf.basic.BasicRadioButtonUI;
33 
34 import javax.swing.plaf.*;
35 
36 import java.awt.*;
37 
38 /**
39  * RadioButtonUI implementation for MotifRadioButtonUI
40  * <p>
41  * <strong>Warning:</strong>
42  * Serialized objects of this class will not be compatible with
43  * future Swing releases.  The current serialization support is appropriate
44  * for short term storage or RMI between applications running the same
45  * version of Swing.  A future release of Swing will provide support for
46  * long term persistence.
47  *
48  * @author Rich Schiavi
49  */
50 public class MotifRadioButtonUI extends BasicRadioButtonUI {
51 
52     private static final Object MOTIF_RADIO_BUTTON_UI_KEY = new Object();
53 
54     protected Color focusColor;
55 
56     private boolean defaults_initialized = false;
57 
58     // ********************************
59     //         Create PLAF
60     // ********************************
createUI(JComponent c)61     public static ComponentUI createUI(JComponent c) {
62         AppContext appContext = AppContext.getAppContext();
63         MotifRadioButtonUI motifRadioButtonUI =
64                 (MotifRadioButtonUI) appContext.get(MOTIF_RADIO_BUTTON_UI_KEY);
65         if (motifRadioButtonUI == null) {
66             motifRadioButtonUI = new MotifRadioButtonUI();
67             appContext.put(MOTIF_RADIO_BUTTON_UI_KEY, motifRadioButtonUI);
68         }
69         return motifRadioButtonUI;
70     }
71 
72     // ********************************
73     //          Install Defaults
74     // ********************************
installDefaults(AbstractButton b)75     public void installDefaults(AbstractButton b) {
76         super.installDefaults(b);
77         if(!defaults_initialized) {
78             focusColor = UIManager.getColor(getPropertyPrefix() + "focus");
79             defaults_initialized = true;
80         }
81     }
82 
uninstallDefaults(AbstractButton b)83     protected void uninstallDefaults(AbstractButton b) {
84         super.uninstallDefaults(b);
85         defaults_initialized = false;
86     }
87 
88     // ********************************
89     //          Default Accessors
90     // ********************************
91 
getFocusColor()92     protected Color getFocusColor() {
93         return focusColor;
94     }
95 
96     // ********************************
97     //         Paint Methods
98     // ********************************
paintFocus(Graphics g, Rectangle t, Dimension d)99     protected void paintFocus(Graphics g, Rectangle t, Dimension d){
100         g.setColor(getFocusColor());
101         g.drawRect(0,0,d.width-1,d.height-1);
102     }
103 
104 }
105