1 /*
2  * Copyright (c) 2002, 2013, 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 javax.swing.plaf.synth;
27 
28 import java.awt.Graphics;
29 import javax.swing.*;
30 import javax.swing.text.*;
31 import javax.swing.plaf.ComponentUI;
32 
33 /**
34  * Provides the Synth L&F UI delegate for
35  * {@link javax.swing.JPasswordField}.
36  *
37  * @author  Shannon Hickey
38  * @since 1.7
39  */
40 public class SynthPasswordFieldUI extends SynthTextFieldUI {
41 
42     /**
43      * Creates a UI for a JPasswordField.
44      *
45      * @param c the JPasswordField
46      * @return the UI
47      */
createUI(JComponent c)48     public static ComponentUI createUI(JComponent c) {
49         return new SynthPasswordFieldUI();
50     }
51 
52     /**
53      * Fetches the name used as a key to look up properties through the
54      * UIManager.  This is used as a prefix to all the standard
55      * text properties.
56      *
57      * @return the name ("PasswordField")
58      */
59     @Override
getPropertyPrefix()60     protected String getPropertyPrefix() {
61         return "PasswordField";
62     }
63 
64     /**
65      * Creates a view (PasswordView) for an element.
66      *
67      * @param elem the element
68      * @return the view
69      */
70     @Override
create(Element elem)71     public View create(Element elem) {
72         return new PasswordView(elem);
73     }
74 
75     /**
76      * {@inheritDoc}
77      */
78     @Override
paintBackground(SynthContext context, Graphics g, JComponent c)79     void paintBackground(SynthContext context, Graphics g, JComponent c) {
80         context.getPainter().paintPasswordFieldBackground(context, g, 0, 0,
81                                                 c.getWidth(), c.getHeight());
82     }
83 
84     /**
85      * {@inheritDoc}
86      */
87     @Override
paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h)88     public void paintBorder(SynthContext context, Graphics g, int x,
89                             int y, int w, int h) {
90         context.getPainter().paintPasswordFieldBorder(context, g, x, y, w, h);
91     }
92 
93     /**
94      * {@inheritDoc}
95      */
96     @Override
installKeyboardActions()97     protected void installKeyboardActions() {
98         super.installKeyboardActions();
99         ActionMap map = SwingUtilities.getUIActionMap(getComponent());
100         if (map != null && map.get(DefaultEditorKit.selectWordAction) != null) {
101             Action a = map.get(DefaultEditorKit.selectLineAction);
102             if (a != null) {
103                 map.put(DefaultEditorKit.selectWordAction, a);
104             }
105         }
106     }
107 }
108