1 /*
2  * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  *   - Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  *
11  *   - Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  *
15  *   - Neither the name of Oracle nor the names of its
16  *     contributors may be used to endorse or promote products derived
17  *     from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * This source code is provided to illustrate the usage of a given feature
34  * or technique and has been deliberately simplified. Additional steps
35  * required for a production-quality application, such as security checks,
36  * input validation and proper error handling, might not be present in
37  * this sample code.
38  */
39 
40 
41 
42 import javax.swing.plaf.*;
43 import javax.swing.plaf.metal.*;
44 import javax.swing.*;
45 import javax.swing.border.*;
46 import java.awt.*;
47 
48 
49 /**
50  * This class describes a theme using "green" colors.
51  *
52  * @author Steve Wilson
53  * @author Alexander Kouznetsov
54  */
55 public class BigContrastMetalTheme extends ContrastMetalTheme {
56 
57     @Override
getName()58     public String getName() {
59         return "Low Vision";
60     }
61     private final FontUIResource controlFont = new FontUIResource("Dialog",
62             Font.BOLD, 24);
63     private final FontUIResource systemFont = new FontUIResource("Dialog",
64             Font.PLAIN, 24);
65     private final FontUIResource windowTitleFont = new FontUIResource("Dialog",
66             Font.BOLD, 24);
67     private final FontUIResource userFont = new FontUIResource("SansSerif",
68             Font.PLAIN, 24);
69     private final FontUIResource smallFont = new FontUIResource("Dialog",
70             Font.PLAIN, 20);
71 
72     @Override
getControlTextFont()73     public FontUIResource getControlTextFont() {
74         return controlFont;
75     }
76 
77     @Override
getSystemTextFont()78     public FontUIResource getSystemTextFont() {
79         return systemFont;
80     }
81 
82     @Override
getUserTextFont()83     public FontUIResource getUserTextFont() {
84         return userFont;
85     }
86 
87     @Override
getMenuTextFont()88     public FontUIResource getMenuTextFont() {
89         return controlFont;
90     }
91 
92     @Override
getWindowTitleFont()93     public FontUIResource getWindowTitleFont() {
94         return windowTitleFont;
95     }
96 
97     @Override
getSubTextFont()98     public FontUIResource getSubTextFont() {
99         return smallFont;
100     }
101 
102     @Override
addCustomEntriesToTable(UIDefaults table)103     public void addCustomEntriesToTable(UIDefaults table) {
104         super.addCustomEntriesToTable(table);
105 
106         final int internalFrameIconSize = 30;
107         table.put("InternalFrame.closeIcon", MetalIconFactory.
108                 getInternalFrameCloseIcon(internalFrameIconSize));
109         table.put("InternalFrame.maximizeIcon", MetalIconFactory.
110                 getInternalFrameMaximizeIcon(internalFrameIconSize));
111         table.put("InternalFrame.iconifyIcon", MetalIconFactory.
112                 getInternalFrameMinimizeIcon(internalFrameIconSize));
113         table.put("InternalFrame.minimizeIcon", MetalIconFactory.
114                 getInternalFrameAltMaximizeIcon(internalFrameIconSize));
115 
116 
117         Border blackLineBorder = new BorderUIResource(new MatteBorder(2, 2, 2, 2,
118                 Color.black));
119         Border textBorder = blackLineBorder;
120 
121         table.put("ToolTip.border", blackLineBorder);
122         table.put("TitledBorder.border", blackLineBorder);
123 
124 
125         table.put("TextField.border", textBorder);
126         table.put("PasswordField.border", textBorder);
127         table.put("TextArea.border", textBorder);
128         table.put("TextPane.font", textBorder);
129 
130         table.put("ScrollPane.border", blackLineBorder);
131 
132         table.put("ScrollBar.width", 25);
133 
134 
135 
136     }
137 }
138