1. /*
  2. * @(#)GTKLookAndFeel.java 1.71 04/07/16
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.java.swing.plaf.gtk;
  8. import com.sun.java.swing.SwingUtilities2;
  9. import java.lang.ref.*;
  10. import javax.swing.plaf.synth.*;
  11. import java.awt.*;
  12. import java.awt.event.*;
  13. import java.beans.*;
  14. import java.io.File;
  15. import java.lang.reflect.*;
  16. import java.security.AccessController;
  17. import java.security.PrivilegedAction;
  18. import java.util.HashMap;
  19. import java.util.Locale;
  20. import javax.swing.*;
  21. import javax.swing.colorchooser.*;
  22. import javax.swing.plaf.*;
  23. import javax.swing.text.DefaultEditorKit;
  24. import java.io.IOException;
  25. import sun.security.action.GetPropertyAction;
  26. /**
  27. * @version 1.71, 07/16/04
  28. * @author Scott Violet
  29. */
  30. public class GTKLookAndFeel extends SynthLookAndFeel {
  31. private static final boolean IS_22;
  32. /**
  33. * Whether or not text is drawn antialiased. This keys off the
  34. * desktop property 'gnome.Xft/Antialias'.
  35. */
  36. static Boolean aaText = Boolean.FALSE;
  37. /**
  38. * Whether or not the default locale is CJK. If it is,
  39. * the GNOME desktop property for antialiasing is ignored
  40. * and the text is always rendered w/o aa.
  41. * This is done to be consistent with what GTK does - they
  42. * disable text aa for CJK locales as well.
  43. *
  44. * Note: this doesn't work well with changing locales
  45. * at runtime. But most of Swing/2D code (including fonts
  46. * initialization) doesn't either.
  47. */
  48. static boolean cjkLocale;
  49. /**
  50. * Font to use in places where there is no widget.
  51. */
  52. private Font fallbackFont;
  53. /**
  54. * If true, GTKLookAndFeel is inside the <code>initialize</code>
  55. * method.
  56. */
  57. private boolean inInitialize;
  58. static {
  59. // Backup for specifying the version, this isn't currently documented.
  60. // If you pass in anything but 2.2 you got the 2.0 colors/look.
  61. String version = (String)java.security.AccessController.doPrivileged(
  62. new GetPropertyAction("swing.gtk.version"));
  63. if (version != null) {
  64. IS_22 = version.equals("2.2");
  65. }
  66. else {
  67. IS_22 = true;
  68. }
  69. }
  70. /**
  71. * Returns true if running on system containing at least 2.2.
  72. */
  73. static boolean is2_2() {
  74. // NOTE: We're currently hard coding to use 2.2.
  75. // If we want to support both GTK 2.0 and 2.2, we'll
  76. // need to get the major/minor/micro version from the .so.
  77. // Refer to bug 4912613 for details.
  78. return IS_22;
  79. }
  80. /**
  81. * Maps a swing constant to a GTK constant.
  82. */
  83. static int SwingOrientationConstantToGTK(int side) {
  84. switch (side) {
  85. case SwingConstants.LEFT:
  86. return GTKConstants.LEFT;
  87. case SwingConstants.RIGHT:
  88. return GTKConstants.RIGHT;
  89. case SwingConstants.TOP:
  90. return GTKConstants.TOP;
  91. case SwingConstants.BOTTOM:
  92. return GTKConstants.BOTTOM;
  93. }
  94. assert false : "Unknowning orientation: " + side;
  95. return side;
  96. }
  97. /**
  98. * Maps from a Synth state to the corresponding GTK state.
  99. * The GTK states are named differently than Synth's states, the
  100. * following gives the mapping:
  101. * <table><tr><td>Synth<td>GTK
  102. * <tr><td>SynthConstants.PRESSED<td>ACTIVE
  103. * <tr><td>SynthConstants.SELECTED<td>SELECTED
  104. * <tr><td>SynthConstants.MOUSE_OVER<td>PRELIGHT
  105. * <tr><td>SynthConstants.DISABLED<td>INACTIVE
  106. * <tr><td>SynthConstants.ENABLED<td>NORMAL
  107. * </table>
  108. * Additionally some widgets are special cased.
  109. */
  110. static int synthStateToGTKState(Region region, int state) {
  111. int orgState = state;
  112. if ((state & SynthConstants.PRESSED) != 0) {
  113. if (region == Region.RADIO_BUTTON
  114. || region == Region.CHECK_BOX
  115. || region == Region.TOGGLE_BUTTON
  116. || region == Region.MENU
  117. || region == Region.MENU_ITEM
  118. || region == Region.RADIO_BUTTON_MENU_ITEM
  119. || region == Region.CHECK_BOX_MENU_ITEM
  120. || region == Region.SPLIT_PANE) {
  121. state = SynthConstants.MOUSE_OVER;
  122. } else {
  123. state = SynthConstants.PRESSED;
  124. }
  125. }
  126. else if ((state & SynthConstants.SELECTED) != 0) {
  127. if (region == Region.MENU) {
  128. state = SynthConstants.MOUSE_OVER;
  129. } else if (region == Region.RADIO_BUTTON ||
  130. region == Region.TOGGLE_BUTTON ||
  131. region == Region.RADIO_BUTTON_MENU_ITEM ||
  132. region == Region.CHECK_BOX_MENU_ITEM ||
  133. region == Region.CHECK_BOX ||
  134. region == Region.BUTTON) {
  135. // If the button is SELECTED and is PRELIGHT we need to
  136. // make the state MOUSE_OVER otherwise we don't paint the
  137. // PRELIGHT.
  138. if ((state & SynthConstants.MOUSE_OVER) != 0) {
  139. state = SynthConstants.MOUSE_OVER;
  140. } else {
  141. state = SynthConstants.PRESSED;
  142. }
  143. } else if (region == Region.TABBED_PANE_TAB) {
  144. state = SynthConstants.ENABLED;
  145. } else {
  146. state = SynthConstants.SELECTED;
  147. }
  148. }
  149. else if ((state & SynthConstants.MOUSE_OVER) != 0) {
  150. state = SynthConstants.MOUSE_OVER;
  151. }
  152. else if ((state & SynthConstants.DISABLED) != 0) {
  153. state = SynthConstants.DISABLED;
  154. }
  155. else {
  156. if (region == Region.SLIDER_TRACK) {
  157. state = SynthConstants.PRESSED;
  158. } else if (region == Region.TABBED_PANE_TAB) {
  159. state = SynthConstants.PRESSED;
  160. } else {
  161. state = SynthConstants.ENABLED;
  162. }
  163. }
  164. return state;
  165. }
  166. static boolean isText(Region region) {
  167. // These Regions treat FOREGROUND as TEXT.
  168. return (region == Region.TEXT_FIELD ||
  169. region == Region.FORMATTED_TEXT_FIELD ||
  170. region == Region.LIST ||
  171. region == Region.PASSWORD_FIELD ||
  172. region == Region.SPINNER ||
  173. region == Region.TABLE ||
  174. region == Region.TEXT_AREA ||
  175. region == Region.TEXT_FIELD ||
  176. region == Region.TEXT_PANE ||
  177. region == Region.TREE);
  178. }
  179. public UIDefaults getDefaults() {
  180. // We need to call super for basic's properties file.
  181. UIDefaults table = super.getDefaults();
  182. initResourceBundle(table);
  183. // For compatability with apps expecting certain defaults we'll
  184. // populate the table with the values from basic.
  185. initSystemColorDefaults(table);
  186. initComponentDefaults(table);
  187. return table;
  188. }
  189. private void initResourceBundle(UIDefaults table) {
  190. table.addResourceBundle("com.sun.java.swing.plaf.gtk.resources.gtk");
  191. }
  192. protected void initComponentDefaults(UIDefaults table) {
  193. // For compatability with apps expecting certain defaults we'll
  194. // populate the table with the values from basic.
  195. super.initComponentDefaults(table);
  196. Object tempBorder = new GTKStyle.GTKLazyValue(
  197. "com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder");
  198. Integer caretBlinkRate = new Integer(500);
  199. Insets zeroInsets = new InsetsUIResource(0, 0, 0, 0);
  200. Double defaultCaretAspectRatio = new Double(0.025);
  201. Color caretColor = table.getColor("caretColor");
  202. Object fieldInputMap = new UIDefaults.LazyInputMap(new Object[] {
  203. "ctrl C", DefaultEditorKit.copyAction,
  204. "ctrl V", DefaultEditorKit.pasteAction,
  205. "ctrl X", DefaultEditorKit.cutAction,
  206. "COPY", DefaultEditorKit.copyAction,
  207. "PASTE", DefaultEditorKit.pasteAction,
  208. "CUT", DefaultEditorKit.cutAction,
  209. "shift LEFT", DefaultEditorKit.selectionBackwardAction,
  210. "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
  211. "shift RIGHT", DefaultEditorKit.selectionForwardAction,
  212. "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
  213. "ctrl LEFT", DefaultEditorKit.previousWordAction,
  214. "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
  215. "ctrl RIGHT", DefaultEditorKit.nextWordAction,
  216. "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
  217. "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
  218. "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
  219. "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
  220. "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
  221. "ctrl A", DefaultEditorKit.selectAllAction,
  222. "HOME", DefaultEditorKit.beginLineAction,
  223. "END", DefaultEditorKit.endLineAction,
  224. "shift HOME", DefaultEditorKit.selectionBeginLineAction,
  225. "shift END", DefaultEditorKit.selectionEndLineAction,
  226. "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
  227. "ctrl H", DefaultEditorKit.deletePrevCharAction,
  228. "DELETE", DefaultEditorKit.deleteNextCharAction,
  229. "RIGHT", DefaultEditorKit.forwardAction,
  230. "LEFT", DefaultEditorKit.backwardAction,
  231. "KP_RIGHT", DefaultEditorKit.forwardAction,
  232. "KP_LEFT", DefaultEditorKit.backwardAction,
  233. "ENTER", JTextField.notifyAction,
  234. "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
  235. "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
  236. });
  237. Object passwordInputMap = new UIDefaults.LazyInputMap(new Object[] {
  238. "ctrl C", DefaultEditorKit.copyAction,
  239. "ctrl V", DefaultEditorKit.pasteAction,
  240. "ctrl X", DefaultEditorKit.cutAction,
  241. "COPY", DefaultEditorKit.copyAction,
  242. "PASTE", DefaultEditorKit.pasteAction,
  243. "CUT", DefaultEditorKit.cutAction,
  244. "shift LEFT", DefaultEditorKit.selectionBackwardAction,
  245. "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
  246. "shift RIGHT", DefaultEditorKit.selectionForwardAction,
  247. "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
  248. "ctrl LEFT", DefaultEditorKit.beginLineAction,
  249. "ctrl KP_LEFT", DefaultEditorKit.beginLineAction,
  250. "ctrl RIGHT", DefaultEditorKit.endLineAction,
  251. "ctrl KP_RIGHT", DefaultEditorKit.endLineAction,
  252. "ctrl shift LEFT", DefaultEditorKit.selectionBeginLineAction,
  253. "ctrl shift KP_LEFT", DefaultEditorKit.selectionBeginLineAction,
  254. "ctrl shift RIGHT", DefaultEditorKit.selectionEndLineAction,
  255. "ctrl shift KP_RIGHT", DefaultEditorKit.selectionEndLineAction,
  256. "ctrl A", DefaultEditorKit.selectAllAction,
  257. "HOME", DefaultEditorKit.beginLineAction,
  258. "END", DefaultEditorKit.endLineAction,
  259. "shift HOME", DefaultEditorKit.selectionBeginLineAction,
  260. "shift END", DefaultEditorKit.selectionEndLineAction,
  261. "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
  262. "ctrl H", DefaultEditorKit.deletePrevCharAction,
  263. "DELETE", DefaultEditorKit.deleteNextCharAction,
  264. "RIGHT", DefaultEditorKit.forwardAction,
  265. "LEFT", DefaultEditorKit.backwardAction,
  266. "KP_RIGHT", DefaultEditorKit.forwardAction,
  267. "KP_LEFT", DefaultEditorKit.backwardAction,
  268. "ENTER", JTextField.notifyAction,
  269. "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
  270. "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
  271. });
  272. Object editorMargin = new InsetsUIResource(3,3,3,3);
  273. Object multilineInputMap = new UIDefaults.LazyInputMap(new Object[] {
  274. "ctrl C", DefaultEditorKit.copyAction,
  275. "ctrl V", DefaultEditorKit.pasteAction,
  276. "ctrl X", DefaultEditorKit.cutAction,
  277. "COPY", DefaultEditorKit.copyAction,
  278. "PASTE", DefaultEditorKit.pasteAction,
  279. "CUT", DefaultEditorKit.cutAction,
  280. "shift LEFT", DefaultEditorKit.selectionBackwardAction,
  281. "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
  282. "shift RIGHT", DefaultEditorKit.selectionForwardAction,
  283. "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
  284. "ctrl LEFT", DefaultEditorKit.previousWordAction,
  285. "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
  286. "ctrl RIGHT", DefaultEditorKit.nextWordAction,
  287. "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
  288. "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
  289. "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
  290. "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
  291. "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
  292. "ctrl A", DefaultEditorKit.selectAllAction,
  293. "HOME", DefaultEditorKit.beginLineAction,
  294. "END", DefaultEditorKit.endLineAction,
  295. "shift HOME", DefaultEditorKit.selectionBeginLineAction,
  296. "shift END", DefaultEditorKit.selectionEndLineAction,
  297. "UP", DefaultEditorKit.upAction,
  298. "KP_UP", DefaultEditorKit.upAction,
  299. "DOWN", DefaultEditorKit.downAction,
  300. "KP_DOWN", DefaultEditorKit.downAction,
  301. "PAGE_UP", DefaultEditorKit.pageUpAction,
  302. "PAGE_DOWN", DefaultEditorKit.pageDownAction,
  303. "shift PAGE_UP", "selection-page-up",
  304. "shift PAGE_DOWN", "selection-page-down",
  305. "ctrl shift PAGE_UP", "selection-page-left",
  306. "ctrl shift PAGE_DOWN", "selection-page-right",
  307. "shift UP", DefaultEditorKit.selectionUpAction,
  308. "shift KP_UP", DefaultEditorKit.selectionUpAction,
  309. "shift DOWN", DefaultEditorKit.selectionDownAction,
  310. "shift KP_DOWN", DefaultEditorKit.selectionDownAction,
  311. "ENTER", DefaultEditorKit.insertBreakAction,
  312. "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
  313. "ctrl H", DefaultEditorKit.deletePrevCharAction,
  314. "DELETE", DefaultEditorKit.deleteNextCharAction,
  315. "RIGHT", DefaultEditorKit.forwardAction,
  316. "LEFT", DefaultEditorKit.backwardAction,
  317. "KP_RIGHT", DefaultEditorKit.forwardAction,
  318. "KP_LEFT", DefaultEditorKit.backwardAction,
  319. "TAB", DefaultEditorKit.insertTabAction,
  320. "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
  321. "ctrl HOME", DefaultEditorKit.beginAction,
  322. "ctrl END", DefaultEditorKit.endAction,
  323. "ctrl shift HOME", DefaultEditorKit.selectionBeginAction,
  324. "ctrl shift END", DefaultEditorKit.selectionEndAction,
  325. "ctrl T", "next-link-action",
  326. "ctrl shift T", "previous-link-action",
  327. "ctrl SPACE", "activate-link-action",
  328. "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
  329. });
  330. class FontLazyValue implements UIDefaults.LazyValue {
  331. private Region region;
  332. FontLazyValue(Region region) {
  333. this.region = region;
  334. }
  335. public Object createValue(UIDefaults table) {
  336. GTKStyleFactory factory = (GTKStyleFactory)getStyleFactory();
  337. GTKStyle style = (GTKStyle)factory.getStyle(
  338. GTKStyleFactory.gtkClassFor(region));
  339. return style.getFontForState(
  340. null, region, SynthConstants.ENABLED);
  341. }
  342. }
  343. Object[] defaults = new Object[] {
  344. "ArrowButton.size", new Integer(13),
  345. "Button.defaultButtonFollowsFocus", Boolean.FALSE,
  346. "Button.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
  347. "SPACE", "pressed",
  348. "released SPACE", "released",
  349. "ENTER", "pressed",
  350. "released ENTER", "released"
  351. }),
  352. "Button.font", new FontLazyValue(Region.BUTTON),
  353. "CheckBox.focusInputMap", new UIDefaults.LazyInputMap(new Object[]{
  354. "SPACE", "pressed",
  355. "released SPACE", "released",
  356. }),
  357. "CheckBox.icon", new GTKStyle.GTKLazyValue(
  358. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  359. "getCheckBoxIcon"),
  360. "CheckBox.font", new FontLazyValue(Region.CHECK_BOX),
  361. "CheckBoxMenuItem.arrowIcon", new GTKStyle.GTKLazyValue(
  362. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  363. "getCheckBoxMenuItemArrowIcon"),
  364. "CheckBoxMenuItem.checkIcon", new GTKStyle.GTKLazyValue(
  365. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  366. "getCheckBoxMenuItemCheckIcon"),
  367. "CheckBoxMenuItem.font",
  368. new FontLazyValue(Region.CHECK_BOX_MENU_ITEM),
  369. "CheckBoxMenuItem.margin", zeroInsets,
  370. "ColorChooser.showPreviewPanelText", Boolean.FALSE,
  371. "ColorChooser.panels", new UIDefaults.ActiveValue() {
  372. public Object createValue(UIDefaults table) {
  373. return new AbstractColorChooserPanel[] {
  374. new GTKColorChooserPanel() };
  375. }
  376. },
  377. "ColorChooser.font", new FontLazyValue(Region.COLOR_CHOOSER),
  378. "ComboBox.ancestorInputMap",
  379. new UIDefaults.LazyInputMap(new Object[] {
  380. "ESCAPE", "hidePopup",
  381. "PAGE_UP", "pageUpPassThrough",
  382. "PAGE_DOWN", "pageDownPassThrough",
  383. "HOME", "homePassThrough",
  384. "END", "endPassThrough",
  385. "DOWN", "selectNext",
  386. "KP_DOWN", "selectNext",
  387. "alt DOWN", "togglePopup",
  388. "alt KP_DOWN", "togglePopup",
  389. "alt UP", "togglePopup",
  390. "alt KP_UP", "togglePopup",
  391. "SPACE", "spacePopup",
  392. "ENTER", "enterPressed",
  393. "UP", "selectPrevious",
  394. "KP_UP", "selectPrevious"
  395. }),
  396. "ComboBox.font", new FontLazyValue(Region.COMBO_BOX),
  397. "EditorPane.caretForeground", caretColor,
  398. "EditorPane.caretAspectRatio", defaultCaretAspectRatio,
  399. "EditorPane.caretBlinkRate", caretBlinkRate,
  400. "EditorPane.margin", editorMargin,
  401. "EditorPane.focusInputMap", multilineInputMap,
  402. "EditorPane.font", new FontLazyValue(Region.EDITOR_PANE),
  403. "FileChooser.ancestorInputMap",
  404. new UIDefaults.LazyInputMap(new Object[] {
  405. "ESCAPE", "cancelSelection"
  406. }),
  407. "FileChooserUI", "com.sun.java.swing.plaf.gtk.GTKLookAndFeel",
  408. "FormattedTextField.caretForeground", caretColor,
  409. "FormattedTextField.caretAspectRatio", defaultCaretAspectRatio,
  410. "FormattedTextField.caretBlinkRate", caretBlinkRate,
  411. "FormattedTextField.focusInputMap",
  412. new UIDefaults.LazyInputMap(new Object[] {
  413. "ctrl C", DefaultEditorKit.copyAction,
  414. "ctrl V", DefaultEditorKit.pasteAction,
  415. "ctrl X", DefaultEditorKit.cutAction,
  416. "COPY", DefaultEditorKit.copyAction,
  417. "PASTE", DefaultEditorKit.pasteAction,
  418. "CUT", DefaultEditorKit.cutAction,
  419. "shift LEFT", DefaultEditorKit.selectionBackwardAction,
  420. "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
  421. "shift RIGHT", DefaultEditorKit.selectionForwardAction,
  422. "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
  423. "ctrl LEFT", DefaultEditorKit.previousWordAction,
  424. "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
  425. "ctrl RIGHT", DefaultEditorKit.nextWordAction,
  426. "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
  427. "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
  428. "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
  429. "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
  430. "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
  431. "ctrl A", DefaultEditorKit.selectAllAction,
  432. "HOME", DefaultEditorKit.beginLineAction,
  433. "END", DefaultEditorKit.endLineAction,
  434. "shift HOME", DefaultEditorKit.selectionBeginLineAction,
  435. "shift END", DefaultEditorKit.selectionEndLineAction,
  436. "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
  437. "ctrl H", DefaultEditorKit.deletePrevCharAction,
  438. "DELETE", DefaultEditorKit.deleteNextCharAction,
  439. "RIGHT", DefaultEditorKit.forwardAction,
  440. "LEFT", DefaultEditorKit.backwardAction,
  441. "KP_RIGHT", DefaultEditorKit.forwardAction,
  442. "KP_LEFT", DefaultEditorKit.backwardAction,
  443. "ENTER", JTextField.notifyAction,
  444. "ctrl BACK_SLASH", "unselect",
  445. "control shift O", "toggle-componentOrientation",
  446. "ESCAPE", "reset-field-edit",
  447. "UP", "increment",
  448. "KP_UP", "increment",
  449. "DOWN", "decrement",
  450. "KP_DOWN", "decrement",
  451. }),
  452. "FormattedTextField.font",
  453. new FontLazyValue(Region.FORMATTED_TEXT_FIELD),
  454. "InternalFrameTitlePane.titlePaneLayout",
  455. new GTKStyle.GTKLazyValue("com.sun.java.swing.plaf.gtk.Metacity",
  456. "getTitlePaneLayout"),
  457. "InternalFrame.windowBindings", new Object[] {
  458. "shift ESCAPE", "showSystemMenu",
  459. "ctrl SPACE", "showSystemMenu",
  460. "ESCAPE", "hideSystemMenu" },
  461. "InternalFrame.layoutTitlePaneAtOrigin", Boolean.TRUE,
  462. "InternalFrame.useTaskBar", Boolean.TRUE,
  463. "Label.font", new FontLazyValue(Region.LABEL),
  464. "List.focusCellHighlightBorder", tempBorder,
  465. "List.focusInputMap",
  466. new UIDefaults.LazyInputMap(new Object[] {
  467. "ctrl C", "copy",
  468. "ctrl V", "paste",
  469. "ctrl X", "cut",
  470. "COPY", "copy",
  471. "PASTE", "paste",
  472. "CUT", "cut",
  473. "UP", "selectPreviousRow",
  474. "KP_UP", "selectPreviousRow",
  475. "shift UP", "selectPreviousRowExtendSelection",
  476. "shift KP_UP", "selectPreviousRowExtendSelection",
  477. "ctrl shift UP", "selectPreviousRowExtendSelection",
  478. "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
  479. "ctrl UP", "selectPreviousRowChangeLead",
  480. "ctrl KP_UP", "selectPreviousRowChangeLead",
  481. "DOWN", "selectNextRow",
  482. "KP_DOWN", "selectNextRow",
  483. "shift DOWN", "selectNextRowExtendSelection",
  484. "shift KP_DOWN", "selectNextRowExtendSelection",
  485. "ctrl shift DOWN", "selectNextRowExtendSelection",
  486. "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
  487. "ctrl DOWN", "selectNextRowChangeLead",
  488. "ctrl KP_DOWN", "selectNextRowChangeLead",
  489. "LEFT", "selectPreviousColumn",
  490. "KP_LEFT", "selectPreviousColumn",
  491. "shift LEFT", "selectPreviousColumnExtendSelection",
  492. "shift KP_LEFT", "selectPreviousColumnExtendSelection",
  493. "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
  494. "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
  495. "ctrl LEFT", "selectPreviousColumnChangeLead",
  496. "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
  497. "RIGHT", "selectNextColumn",
  498. "KP_RIGHT", "selectNextColumn",
  499. "shift RIGHT", "selectNextColumnExtendSelection",
  500. "shift KP_RIGHT", "selectNextColumnExtendSelection",
  501. "ctrl shift RIGHT", "selectNextColumnExtendSelection",
  502. "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
  503. "ctrl RIGHT", "selectNextColumnChangeLead",
  504. "ctrl KP_RIGHT", "selectNextColumnChangeLead",
  505. "HOME", "selectFirstRow",
  506. "shift HOME", "selectFirstRowExtendSelection",
  507. "ctrl shift HOME", "selectFirstRowExtendSelection",
  508. "ctrl HOME", "selectFirstRowChangeLead",
  509. "END", "selectLastRow",
  510. "shift END", "selectLastRowExtendSelection",
  511. "ctrl shift END", "selectLastRowExtendSelection",
  512. "ctrl END", "selectLastRowChangeLead",
  513. "PAGE_UP", "scrollUp",
  514. "shift PAGE_UP", "scrollUpExtendSelection",
  515. "ctrl shift PAGE_UP", "scrollUpExtendSelection",
  516. "ctrl PAGE_UP", "scrollUpChangeLead",
  517. "PAGE_DOWN", "scrollDown",
  518. "shift PAGE_DOWN", "scrollDownExtendSelection",
  519. "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
  520. "ctrl PAGE_DOWN", "scrollDownChangeLead",
  521. "ctrl A", "selectAll",
  522. "ctrl SLASH", "selectAll",
  523. "ctrl BACK_SLASH", "clearSelection",
  524. "SPACE", "addToSelection",
  525. "ctrl SPACE", "toggleAndAnchor",
  526. "shift SPACE", "extendTo",
  527. "ctrl shift SPACE", "moveSelectionTo"
  528. }),
  529. "List.focusInputMap.RightToLeft",
  530. new UIDefaults.LazyInputMap(new Object[] {
  531. "LEFT", "selectNextColumn",
  532. "KP_LEFT", "selectNextColumn",
  533. "shift LEFT", "selectNextColumnExtendSelection",
  534. "shift KP_LEFT", "selectNextColumnExtendSelection",
  535. "ctrl shift LEFT", "selectNextColumnExtendSelection",
  536. "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
  537. "ctrl LEFT", "selectNextColumnChangeLead",
  538. "ctrl KP_LEFT", "selectNextColumnChangeLead",
  539. "RIGHT", "selectPreviousColumn",
  540. "KP_RIGHT", "selectPreviousColumn",
  541. "shift RIGHT", "selectPreviousColumnExtendSelection",
  542. "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
  543. "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
  544. "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
  545. "ctrl RIGHT", "selectPreviousColumnChangeLead",
  546. "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
  547. }),
  548. "List.font", new FontLazyValue(Region.LIST),
  549. "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK},
  550. "Menu.arrowIcon", new GTKStyle.GTKLazyValue(
  551. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  552. "getMenuArrowIcon"),
  553. "Menu.font", new FontLazyValue(Region.MENU),
  554. "Menu.margin", zeroInsets,
  555. "MenuBar.windowBindings", new Object[] {
  556. "F10", "takeFocus" },
  557. "MenuBar.font", new FontLazyValue(Region.MENU_BAR),
  558. "MenuItem.arrowIcon", new GTKStyle.GTKLazyValue(
  559. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  560. "getMenuItemArrowIcon"),
  561. "MenuItem.font", new FontLazyValue(Region.MENU_ITEM),
  562. "MenuItem.margin", zeroInsets,
  563. "OptionPane.setButtonMargin", Boolean.FALSE,
  564. "OptionPane.sameSizeButtons", Boolean.TRUE,
  565. "OptionPane.buttonOrientation", new Integer(SwingConstants.RIGHT),
  566. "OptionPane.minimumSize", new DimensionUIResource(262, 90),
  567. "OptionPane.buttonPadding", new Integer(10),
  568. "OptionPane.windowBindings", new Object[] {
  569. "ESCAPE", "close" },
  570. "OptionPane.buttonClickThreshhold", new Integer(500),
  571. "OptionPane.isYesLast", Boolean.TRUE,
  572. "OptionPane.font", new FontLazyValue(Region.OPTION_PANE),
  573. "Panel.font", new FontLazyValue(Region.PANEL),
  574. "PasswordField.caretForeground", caretColor,
  575. "PasswordField.caretAspectRatio", defaultCaretAspectRatio,
  576. "PasswordField.caretBlinkRate", caretBlinkRate,
  577. "PasswordField.margin", zeroInsets,
  578. "PasswordField.focusInputMap", passwordInputMap,
  579. "PasswordField.font", new FontLazyValue(Region.PASSWORD_FIELD),
  580. "PopupMenu.consumeEventOnClose", Boolean.TRUE,
  581. "PopupMenu.selectedWindowInputMapBindings", new Object[] {
  582. "ESCAPE", "cancel",
  583. "DOWN", "selectNext",
  584. "KP_DOWN", "selectNext",
  585. "UP", "selectPrevious",
  586. "KP_UP", "selectPrevious",
  587. "LEFT", "selectParent",
  588. "KP_LEFT", "selectParent",
  589. "RIGHT", "selectChild",
  590. "KP_RIGHT", "selectChild",
  591. "ENTER", "return",
  592. "SPACE", "return"
  593. },
  594. "PopupMenu.selectedWindowInputMapBindings.RightToLeft",
  595. new Object[] {
  596. "LEFT", "selectChild",
  597. "KP_LEFT", "selectChild",
  598. "RIGHT", "selectParent",
  599. "KP_RIGHT", "selectParent",
  600. },
  601. "PopupMenu.font", new FontLazyValue(Region.POPUP_MENU),
  602. "ProgressBar.horizontalSize", new DimensionUIResource(146, 16),
  603. "ProgressBar.verticalSize", new DimensionUIResource(16, 146),
  604. "ProgressBar.font", new FontLazyValue(Region.PROGRESS_BAR),
  605. "RadioButton.focusInputMap",
  606. new UIDefaults.LazyInputMap(new Object[] {
  607. "SPACE", "pressed",
  608. "released SPACE", "released",
  609. "RETURN", "pressed"
  610. }),
  611. "RadioButton.icon", new GTKStyle.GTKLazyValue(
  612. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  613. "getRadioButtonIcon"),
  614. "RadioButton.font", new FontLazyValue(Region.RADIO_BUTTON),
  615. "RadioButtonMenuItem.arrowIcon", new GTKStyle.GTKLazyValue(
  616. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  617. "getRadioButtonMenuItemArrowIcon"),
  618. "RadioButtonMenuItem.checkIcon", new GTKStyle.GTKLazyValue(
  619. "com.sun.java.swing.plaf.gtk.GTKIconFactory",
  620. "getRadioButtonMenuItemCheckIcon"),
  621. "RadioButtonMenuItem.font", new FontLazyValue(Region.RADIO_BUTTON_MENU_ITEM),
  622. "RadioButtonMenuItem.margin", zeroInsets,
  623. // These bindings are only enabled when there is a default
  624. // button set on the rootpane.
  625. "RootPane.defaultButtonWindowKeyBindings", new Object[] {
  626. "ENTER", "press",
  627. "released ENTER", "release",
  628. "ctrl ENTER", "press",
  629. "ctrl released ENTER", "release"
  630. },
  631. "ScrollBar.squareButtons", Boolean.TRUE,
  632. "ScrollBar.thumbHeight", new Integer(14),
  633. "ScrollBar.width", new Integer(16),
  634. "ScrollBar.minimumThumbSize", new Dimension(8, 8),
  635. "ScrollBar.maximumThumbSize", new Dimension(4096, 4096),
  636. "ScrollBar.allowsAbsolutePositioning", Boolean.TRUE,
  637. "ScrollBar.ancestorInputMap",
  638. new UIDefaults.LazyInputMap(new Object[] {
  639. "RIGHT", "positiveUnitIncrement",
  640. "KP_RIGHT", "positiveUnitIncrement",
  641. "DOWN", "positiveUnitIncrement",
  642. "KP_DOWN", "positiveUnitIncrement",
  643. "PAGE_DOWN", "positiveBlockIncrement",
  644. "LEFT", "negativeUnitIncrement",
  645. "KP_LEFT", "negativeUnitIncrement",
  646. "UP", "negativeUnitIncrement",
  647. "KP_UP", "negativeUnitIncrement",
  648. "PAGE_UP", "negativeBlockIncrement",
  649. "HOME", "minScroll",
  650. "END", "maxScroll"
  651. }),
  652. "ScrollBar.ancestorInputMap.RightToLeft",
  653. new UIDefaults.LazyInputMap(new Object[] {
  654. "RIGHT", "negativeUnitIncrement",
  655. "KP_RIGHT", "negativeUnitIncrement",
  656. "LEFT", "positiveUnitIncrement",
  657. "KP_LEFT", "positiveUnitIncrement",
  658. }),
  659. "ScrollPane.ancestorInputMap",
  660. new UIDefaults.LazyInputMap(new Object[] {
  661. "RIGHT", "unitScrollRight",
  662. "KP_RIGHT", "unitScrollRight",
  663. "DOWN", "unitScrollDown",
  664. "KP_DOWN", "unitScrollDown",
  665. "LEFT", "unitScrollLeft",
  666. "KP_LEFT", "unitScrollLeft",
  667. "UP", "unitScrollUp",
  668. "KP_UP", "unitScrollUp",
  669. "PAGE_UP", "scrollUp",
  670. "PAGE_DOWN", "scrollDown",
  671. "ctrl PAGE_UP", "scrollLeft",
  672. "ctrl PAGE_DOWN", "scrollRight",
  673. "ctrl HOME", "scrollHome",
  674. "ctrl END", "scrollEnd"
  675. }),
  676. "ScrollPane.ancestorInputMap.RightToLeft",
  677. new UIDefaults.LazyInputMap(new Object[] {
  678. "ctrl PAGE_UP", "scrollRight",
  679. "ctrl PAGE_DOWN", "scrollLeft",
  680. }),
  681. "ScrollPane.font", new FontLazyValue(Region.SCROLL_PANE),
  682. "Separator.insets", zeroInsets,
  683. "Separator.thickness", new Integer(2),
  684. "Slider.paintValue", Boolean.TRUE,
  685. "Slider.thumbWidth", new Integer(30),
  686. "Slider.thumbHeight", new Integer(14),
  687. "Slider.focusInputMap",
  688. new UIDefaults.LazyInputMap(new Object[] {
  689. "RIGHT", "positiveUnitIncrement",
  690. "KP_RIGHT", "positiveUnitIncrement",
  691. "DOWN", "negativeUnitIncrement",
  692. "KP_DOWN", "negativeUnitIncrement",
  693. "PAGE_DOWN", "negativeBlockIncrement",
  694. "LEFT", "negativeUnitIncrement",
  695. "KP_LEFT", "negativeUnitIncrement",
  696. "UP", "positiveUnitIncrement",
  697. "KP_UP", "positiveUnitIncrement",
  698. "PAGE_UP", "positiveBlockIncrement",
  699. "HOME", "minScroll",
  700. "END", "maxScroll"
  701. }),
  702. "Slider.focusInputMap.RightToLeft",
  703. new UIDefaults.LazyInputMap(new Object[] {
  704. "RIGHT", "negativeUnitIncrement",
  705. "KP_RIGHT", "negativeUnitIncrement",
  706. "LEFT", "positiveUnitIncrement",
  707. "KP_LEFT", "positiveUnitIncrement",
  708. }),
  709. "Spinner.ancestorInputMap",
  710. new UIDefaults.LazyInputMap(new Object[] {
  711. "UP", "increment",
  712. "KP_UP", "increment",
  713. "DOWN", "decrement",
  714. "KP_DOWN", "decrement",
  715. }),
  716. "Spinner.font", new FontLazyValue(Region.SPINNER),
  717. "SplitPane.ancestorInputMap",
  718. new UIDefaults.LazyInputMap(new Object[] {
  719. "UP", "negativeIncrement",
  720. "DOWN", "positiveIncrement",
  721. "LEFT", "negativeIncrement",
  722. "RIGHT", "positiveIncrement",
  723. "KP_UP", "negativeIncrement",
  724. "KP_DOWN", "positiveIncrement",
  725. "KP_LEFT", "negativeIncrement",
  726. "KP_RIGHT", "positiveIncrement",
  727. "HOME", "selectMin",
  728. "END", "selectMax",
  729. "F8", "startResize",
  730. "F6", "toggleFocus",
  731. "ctrl TAB", "focusOutForward",
  732. "ctrl shift TAB", "focusOutBackward"
  733. }),
  734. "SplitPane.size", new Integer(7),
  735. "SplitPane.oneTouchOffset", new Integer(2),
  736. "SplitPane.oneTouchButtonSize", new Integer(5),
  737. "SplitPane.supportsOneTouchButtons", Boolean.FALSE,
  738. "TabbedPane.focusInputMap",
  739. new UIDefaults.LazyInputMap(new Object[] {
  740. "RIGHT", "navigateRight",
  741. "KP_RIGHT", "navigateRight",
  742. "LEFT", "navigateLeft",
  743. "KP_LEFT", "navigateLeft",
  744. "UP", "navigateUp",
  745. "KP_UP", "navigateUp",
  746. "DOWN", "navigateDown",
  747. "KP_DOWN", "navigateDown",
  748. "ctrl DOWN", "requestFocusForVisibleComponent",
  749. "ctrl KP_DOWN", "requestFocusForVisibleComponent",
  750. "SPACE", "selectTabWithFocus"
  751. }),
  752. "TabbedPane.ancestorInputMap",
  753. new UIDefaults.LazyInputMap(new Object[] {
  754. "ctrl TAB", "navigateNext",
  755. "ctrl shift TAB", "navigatePrevious",
  756. "ctrl PAGE_DOWN", "navigatePageDown",
  757. "ctrl PAGE_UP", "navigatePageUp",
  758. "ctrl UP", "requestFocus",
  759. "ctrl KP_UP", "requestFocus",
  760. }),
  761. "TabbedPane.selectionFollowsFocus", Boolean.FALSE,
  762. "TabbedPane.font", new FontLazyValue(Region.TABBED_PANE),
  763. "Table.focusCellHighlightBorder", tempBorder,
  764. "Table.ancestorInputMap",
  765. new UIDefaults.LazyInputMap(new Object[] {
  766. "ctrl C", "copy",
  767. "ctrl V", "paste",
  768. "ctrl X", "cut",
  769. "COPY", "copy",
  770. "PASTE", "paste",
  771. "CUT", "cut",
  772. "RIGHT", "selectNextColumn",
  773. "KP_RIGHT", "selectNextColumn",
  774. "shift RIGHT", "selectNextColumnExtendSelection",
  775. "shift KP_RIGHT", "selectNextColumnExtendSelection",
  776. "ctrl shift RIGHT", "selectNextColumnExtendSelection",
  777. "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
  778. "ctrl RIGHT", "selectNextColumnChangeLead",
  779. "ctrl KP_RIGHT", "selectNextColumnChangeLead",
  780. "LEFT", "selectPreviousColumn",
  781. "KP_LEFT", "selectPreviousColumn",
  782. "shift LEFT", "selectPreviousColumnExtendSelection",
  783. "shift KP_LEFT", "selectPreviousColumnExtendSelection",
  784. "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
  785. "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
  786. "ctrl LEFT", "selectPreviousColumnChangeLead",
  787. "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
  788. "DOWN", "selectNextRow",
  789. "KP_DOWN", "selectNextRow",
  790. "shift DOWN", "selectNextRowExtendSelection",
  791. "shift KP_DOWN", "selectNextRowExtendSelection",
  792. "ctrl shift DOWN", "selectNextRowExtendSelection",
  793. "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
  794. "ctrl DOWN", "selectNextRowChangeLead",
  795. "ctrl KP_DOWN", "selectNextRowChangeLead",
  796. "UP", "selectPreviousRow",
  797. "KP_UP", "selectPreviousRow",
  798. "shift UP", "selectPreviousRowExtendSelection",
  799. "shift KP_UP", "selectPreviousRowExtendSelection",
  800. "ctrl shift UP", "selectPreviousRowExtendSelection",
  801. "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
  802. "ctrl UP", "selectPreviousRowChangeLead",
  803. "ctrl KP_UP", "selectPreviousRowChangeLead",
  804. "HOME", "selectFirstColumn",
  805. "shift HOME", "selectFirstColumnExtendSelection",
  806. "ctrl shift HOME", "selectFirstRowExtendSelection",
  807. "ctrl HOME", "selectFirstRow",
  808. "END", "selectLastColumn",
  809. "shift END", "selectLastColumnExtendSelection",
  810. "ctrl shift END", "selectLastRowExtendSelection",
  811. "ctrl END", "selectLastRow",
  812. "PAGE_UP", "scrollUpChangeSelection",
  813. "shift PAGE_UP", "scrollUpExtendSelection",
  814. "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
  815. "ctrl PAGE_UP", "scrollLeftChangeSelection",
  816. "PAGE_DOWN", "scrollDownChangeSelection",
  817. "shift PAGE_DOWN", "scrollDownExtendSelection",
  818. "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
  819. "ctrl PAGE_DOWN", "scrollRightChangeSelection",
  820. "TAB", "selectNextColumnCell",
  821. "shift TAB", "selectPreviousColumnCell",
  822. "ENTER", "selectNextRowCell",
  823. "shift ENTER", "selectPreviousRowCell",
  824. "ctrl A", "selectAll",
  825. "ctrl SLASH", "selectAll",
  826. "ctrl BACK_SLASH", "clearSelection",
  827. "ESCAPE", "cancel",
  828. "F2", "startEditing",
  829. "SPACE", "addToSelection",
  830. "ctrl SPACE", "toggleAndAnchor",
  831. "shift SPACE", "extendTo",
  832. "ctrl shift SPACE", "moveSelectionTo"
  833. }),
  834. "Table.ancestorInputMap.RightToLeft",
  835. new UIDefaults.LazyInputMap(new Object[] {
  836. "RIGHT", "selectPreviousColumn",
  837. "KP_RIGHT", "selectPreviousColumn",
  838. "shift RIGHT", "selectPreviousColumnExtendSelection",
  839. "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
  840. "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
  841. "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
  842. "shift RIGHT", "selectPreviousColumnChangeLead",
  843. "shift KP_RIGHT", "selectPreviousColumnChangeLead",
  844. "LEFT", "selectNextColumn",
  845. "KP_LEFT", "selectNextColumn",
  846. "shift LEFT", "selectNextColumnExtendSelection",
  847. "shift KP_LEFT", "selectNextColumnExtendSelection",
  848. "ctrl shift LEFT", "selectNextColumnExtendSelection",
  849. "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
  850. "ctrl LEFT", "selectNextColumnChangeLead",
  851. "ctrl KP_LEFT", "selectNextColumnChangeLead",
  852. "ctrl PAGE_UP", "scrollRightChangeSelection",
  853. "ctrl PAGE_DOWN", "scrollLeftChangeSelection",
  854. "ctrl shift PAGE_UP", "scrollRightExtendSelection",
  855. "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection",
  856. }),
  857. "Table.font", new FontLazyValue(Region.TABLE),
  858. "TableHeader.font", new FontLazyValue(Region.TABLE_HEADER),
  859. "TextArea.caretForeground", caretColor,
  860. "TextArea.caretAspectRatio", defaultCaretAspectRatio,
  861. "TextArea.caretBlinkRate", caretBlinkRate,
  862. "TextArea.margin", zeroInsets,
  863. "TextArea.focusInputMap", multilineInputMap,
  864. "TextArea.font", new FontLazyValue(Region.TEXT_AREA),
  865. "TextField.caretForeground", caretColor,
  866. "TextField.caretAspectRatio", defaultCaretAspectRatio,
  867. "TextField.caretBlinkRate", caretBlinkRate,
  868. "TextField.margin", zeroInsets,
  869. "TextField.focusInputMap", fieldInputMap,
  870. "TextField.font", new FontLazyValue(Region.TEXT_FIELD),
  871. "TextPane.caretForeground", caretColor,
  872. "TextPane.caretAspectRatio", defaultCaretAspectRatio,
  873. "TextPane.caretBlinkRate", caretBlinkRate,
  874. "TextPane.margin", editorMargin,
  875. "TextPane.focusInputMap", multilineInputMap,
  876. "TextPane.font", new FontLazyValue(Region.TEXT_PANE),
  877. "TitledBorder.titleColor", new ColorUIResource(Color.BLACK),
  878. "TitledBorder.border", new UIDefaults.ProxyLazyValue(
  879. "javax.swing.plaf.BorderUIResource",
  880. "getEtchedBorderUIResource"),
  881. "ToggleButton.focusInputMap",
  882. new UIDefaults.