From eafad942e7c983e4cc9fb550016df4b985b6af3a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 8 Jul 2020 10:43:24 +0200 Subject: [PATCH] Theme Editor: added basic auto-complete for keys --- .../testing/uidefaults/UIDefaultsDump.java | 3 + .../uidefaults/UIDefaultsKeysDump.java | 79 ++ flatlaf-theme-editor/build.gradle.kts | 1 + .../themeeditor/FlatCompletionProvider.java | 72 ++ .../themeeditor/FlatThemeEditorPane.java | 9 + .../flatlaf/themeeditor/FlatLafUIKeys.txt | 922 ++++++++++++++++++ 6 files changed, 1086 insertions(+) create mode 100644 flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java create mode 100644 flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java create mode 100644 flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index b552165f..8a6ea7b7 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -120,6 +120,9 @@ public class UIDefaultsDump // } // dumpIntelliJThemes( dir ); + + // dump UI keys + UIDefaultsKeysDump.main( new String[0] ); } @SuppressWarnings( "unused" ) diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java new file mode 100644 index 00000000..b0abaa38 --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java @@ -0,0 +1,79 @@ +/* + * Copyright 2020 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.testing.uidefaults; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Locale; +import javax.swing.UIDefaults; +import javax.swing.UIManager; +import com.formdev.flatlaf.*; + +/** + * Collects all FlatLaf UI defaults keys and dumps them to a file. + * + * @author Karl Tauber + */ +public class UIDefaultsKeysDump +{ + public static void main( String[] args ) { + Locale.setDefault( Locale.ENGLISH ); + System.setProperty( "sun.java2d.uiScale", "1x" ); + System.setProperty( FlatSystemProperties.UI_SCALE, "1x" ); + + File keysFile = new File( "../flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" ); + + HashSet keys = new HashSet<>(); + + collectKeys( FlatLightLaf.class.getName(), keys ); + collectKeys( FlatDarkLaf.class.getName(), keys ); + collectKeys( FlatIntelliJLaf.class.getName(), keys ); + collectKeys( FlatDarculaLaf.class.getName(), keys ); + + try( Writer fileWriter = new BufferedWriter( new FileWriter( keysFile ) ) ) { + String[] sortedKeys = keys.toArray( new String[keys.size()] ); + Arrays.sort( sortedKeys ); + for( String key : sortedKeys ) { + fileWriter.write( key ); + fileWriter.write( "\n" ); + } + } catch( IOException ex ) { + ex.printStackTrace(); + } + } + + private static void collectKeys( String lookAndFeelClassName, HashSet keys ) { + try { + UIManager.setLookAndFeel( lookAndFeelClassName ); + } catch( Exception ex ) { + ex.printStackTrace(); + return; + } + + UIDefaults defaults = UIManager.getLookAndFeel().getDefaults(); + + for( Object key : defaults.keySet() ) { + if( key instanceof String ) + keys.add( (String) key ); + } + } +} diff --git a/flatlaf-theme-editor/build.gradle.kts b/flatlaf-theme-editor/build.gradle.kts index de5df384..c1123573 100644 --- a/flatlaf-theme-editor/build.gradle.kts +++ b/flatlaf-theme-editor/build.gradle.kts @@ -23,4 +23,5 @@ dependencies { implementation( project( ":flatlaf-extras" ) ) implementation( "com.fifesoft:rsyntaxtextarea:3.1.1" ) + implementation( "com.fifesoft:autocomplete:3.1.0" ) } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java new file mode 100644 index 00000000..937c21e3 --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java @@ -0,0 +1,72 @@ +/* + * Copyright 2020 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.themeeditor; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashSet; +import org.fife.ui.autocomplete.BasicCompletion; +import org.fife.ui.autocomplete.DefaultCompletionProvider; + +/** + * @author Karl Tauber + */ +class FlatCompletionProvider + extends DefaultCompletionProvider +{ + FlatCompletionProvider() { + // load all keys + HashSet keys = new HashSet<>(); + try { + try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" ) ) { + if( in != null ) { + try( BufferedReader reader = new BufferedReader( new InputStreamReader( in, "UTF-8" ) ) ) { + String key; + while( (key = reader.readLine()) != null ) { + keys.add( key ); + } + } + } + } + } catch( IOException ex ) { + ex.printStackTrace(); // TODO + } + + // collect key parts + HashSet keyParts = new HashSet<>(); + for( String key : keys ) { + int delimIndex = key.length() + 1; + while( (delimIndex = key.lastIndexOf( '.', delimIndex - 1 )) >= 0 ) + keyParts.add( key.substring( 0, delimIndex + 1 ) ); + } + + // add key parts + for( String keyPart : keyParts ) + addCompletion( new BasicCompletion( this, keyPart ) ); + + // add all keys + for( String key : keys ) + addCompletion( new BasicCompletion( this, key ) ); + } + + @Override + protected boolean isValidChar( char ch ) { + return super.isValidChar( ch ) || ch == '.'; + } +} diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java index e080fafa..f8f8c667 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java @@ -25,6 +25,8 @@ import java.nio.charset.StandardCharsets; import java.util.List; import javax.swing.JLayer; import javax.swing.JPanel; +import org.fife.ui.autocomplete.AutoCompletion; +import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory; import org.fife.ui.rsyntaxtextarea.FileLocation; import org.fife.ui.rsyntaxtextarea.SyntaxScheme; @@ -74,6 +76,13 @@ class FlatThemeEditorPane scheme.getStyle( FlatThemeTokenMaker.TOKEN_COLOR ).background = new Color( 0x0a000000, true ); scheme.getStyle( FlatThemeTokenMaker.TOKEN_VARIABLE ).background = new Color( 0x1800cc00, true ); + // autocomplete + CompletionProvider provider = new FlatCompletionProvider(); + AutoCompletion ac = new AutoCompletion( provider ); + ac.setChoicesWindowSize( UIScale.scale( 300 ), UIScale.scale( 400 ) ); + ac.setDescriptionWindowSize( UIScale.scale( 300 ), UIScale.scale( 400 ) ); + ac.install( textArea ); + // create overlay layer JLayer overlay = new JLayer<>( textArea, new FlatThemeEditorOverlay() ); diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt new file mode 100644 index 00000000..2e253ca0 --- /dev/null +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -0,0 +1,922 @@ +Actions.Blue +Actions.Green +Actions.Grey +Actions.GreyInline +Actions.Red +Actions.Yellow +AuditoryCues.allAuditoryCues +AuditoryCues.cueList +AuditoryCues.noAuditoryCues +BusyLabelUI +Button.arc +Button.background +Button.border +Button.borderColor +Button.darkShadow +Button.default.background +Button.default.boldText +Button.default.borderColor +Button.default.borderWidth +Button.default.focusColor +Button.default.focusedBackground +Button.default.focusedBorderColor +Button.default.foreground +Button.default.hoverBackground +Button.default.hoverBorderColor +Button.default.pressedBackground +Button.defaultButtonFollowsFocus +Button.disabledBackground +Button.disabledBorderColor +Button.disabledText +Button.focusInputMap +Button.focusedBackground +Button.focusedBorderColor +Button.font +Button.foreground +Button.highlight +Button.hoverBackground +Button.hoverBorderColor +Button.iconTextGap +Button.light +Button.margin +Button.minimumWidth +Button.pressedBackground +Button.rollover +Button.shadow +Button.textIconGap +Button.textShiftOffset +Button.toolbar.hoverBackground +Button.toolbar.margin +Button.toolbar.pressedBackground +Button.toolbar.spacingInsets +ButtonUI +Caret.width +CheckBox.arc +CheckBox.background +CheckBox.border +CheckBox.disabledText +CheckBox.focusInputMap +CheckBox.font +CheckBox.foreground +CheckBox.icon +CheckBox.icon.background +CheckBox.icon.borderColor +CheckBox.icon.checkmarkColor +CheckBox.icon.disabledBackground +CheckBox.icon.disabledBorderColor +CheckBox.icon.disabledCheckmarkColor +CheckBox.icon.focusedBackground +CheckBox.icon.focusedBorderColor +CheckBox.icon.hoverBackground +CheckBox.icon.hoverBorderColor +CheckBox.icon.pressedBackground +CheckBox.icon.selectedBackground +CheckBox.icon.selectedBorderColor +CheckBox.icon.selectedFocusedBorderColor +CheckBox.icon.style +CheckBox.iconTextGap +CheckBox.icon[filled].checkmarkColor +CheckBox.icon[filled].focusWidth +CheckBox.icon[filled].selectedBackground +CheckBox.icon[filled].selectedBorderColor +CheckBox.icon[filled].selectedFocusedBackground +CheckBox.icon[filled].selectedFocusedBorderColor +CheckBox.icon[filled].selectedFocusedCheckmarkColor +CheckBox.icon[filled].selectedHoverBackground +CheckBox.icon[filled].selectedPressedBackground +CheckBox.margin +CheckBox.rollover +CheckBox.textIconGap +CheckBox.textShiftOffset +CheckBoxMenuItem.acceleratorFont +CheckBoxMenuItem.acceleratorForeground +CheckBoxMenuItem.acceleratorSelectionForeground +CheckBoxMenuItem.arrowIcon +CheckBoxMenuItem.background +CheckBoxMenuItem.border +CheckBoxMenuItem.borderPainted +CheckBoxMenuItem.checkIcon +CheckBoxMenuItem.disabledForeground +CheckBoxMenuItem.font +CheckBoxMenuItem.foreground +CheckBoxMenuItem.margin +CheckBoxMenuItem.opaque +CheckBoxMenuItem.selectionBackground +CheckBoxMenuItem.selectionForeground +CheckBoxMenuItemUI +CheckBoxUI +ColorChooser.background +ColorChooser.font +ColorChooser.foreground +ColorChooser.swatchesDefaultRecentColor +ColorChooser.swatchesRecentSwatchSize +ColorChooser.swatchesSwatchSize +ColorChooserUI +ComboBox.ancestorInputMap +ComboBox.background +ComboBox.border +ComboBox.buttonArrowColor +ComboBox.buttonBackground +ComboBox.buttonDarkShadow +ComboBox.buttonDisabledArrowColor +ComboBox.buttonEditableBackground +ComboBox.buttonHighlight +ComboBox.buttonHoverArrowColor +ComboBox.buttonShadow +ComboBox.buttonStyle +ComboBox.disabledBackground +ComboBox.disabledForeground +ComboBox.editorColumns +ComboBox.font +ComboBox.foreground +ComboBox.isEnterSelectablePopup +ComboBox.maximumRowCount +ComboBox.minimumWidth +ComboBox.noActionOnKeyNavigation +ComboBox.padding +ComboBox.selectionBackground +ComboBox.selectionForeground +ComboBox.timeFactor +ComboBoxUI +Component.arc +Component.arrowType +Component.borderColor +Component.custom.borderColor +Component.disabledBorderColor +Component.error.borderColor +Component.error.focusedBorderColor +Component.focusColor +Component.focusWidth +Component.focusedBorderColor +Component.grayFilter +Component.hideMnemonics +Component.innerFocusWidth +Component.innerOutlineWidth +Component.linkColor +Component.minimumWidth +Component.warning.borderColor +Component.warning.focusedBorderColor +DatePickerUI +Desktop.ancestorInputMap +Desktop.background +Desktop.minOnScreenInsets +DesktopIcon.background +DesktopIcon.border +DesktopIcon.closeIcon +DesktopIcon.closeSize +DesktopIcon.foreground +DesktopIcon.iconSize +DesktopIconUI +DesktopPaneUI +EditorPane.background +EditorPane.border +EditorPane.caretBlinkRate +EditorPane.caretForeground +EditorPane.disabledBackground +EditorPane.focusInputMap +EditorPane.font +EditorPane.foreground +EditorPane.inactiveBackground +EditorPane.inactiveForeground +EditorPane.margin +EditorPane.selectionBackground +EditorPane.selectionForeground +EditorPaneUI +FileChooser.ancestorInputMap +FileChooser.detailsViewIcon +FileChooser.homeFolderIcon +FileChooser.listViewIcon +FileChooser.newFolderIcon +FileChooser.readOnly +FileChooser.upFolderIcon +FileChooser.useSystemExtensionHiding +FileChooser.usesSingleFilePane +FileChooserUI +FileView.computerIcon +FileView.directoryIcon +FileView.fileIcon +FileView.floppyDriveIcon +FileView.hardDriveIcon +FormattedTextField.background +FormattedTextField.border +FormattedTextField.caretBlinkRate +FormattedTextField.caretForeground +FormattedTextField.disabledBackground +FormattedTextField.focusInputMap +FormattedTextField.font +FormattedTextField.foreground +FormattedTextField.inactiveBackground +FormattedTextField.inactiveForeground +FormattedTextField.margin +FormattedTextField.placeholderForeground +FormattedTextField.selectionBackground +FormattedTextField.selectionForeground +FormattedTextFieldUI +HeaderUI +HelpButton.background +HelpButton.borderColor +HelpButton.disabledBackground +HelpButton.disabledBorderColor +HelpButton.disabledQuestionMarkColor +HelpButton.focusedBackground +HelpButton.focusedBorderColor +HelpButton.hoverBackground +HelpButton.hoverBorderColor +HelpButton.icon +HelpButton.pressedBackground +HelpButton.questionMarkColor +Hyperlink.disabledText +Hyperlink.linkColor +Hyperlink.visitedColor +HyperlinkUI +InternalFrame.activeBorderColor +InternalFrame.activeDropShadowInsets +InternalFrame.activeDropShadowOpacity +InternalFrame.activeTitleBackground +InternalFrame.activeTitleForeground +InternalFrame.border +InternalFrame.borderColor +InternalFrame.borderDarkShadow +InternalFrame.borderHighlight +InternalFrame.borderLight +InternalFrame.borderLineWidth +InternalFrame.borderMargins +InternalFrame.borderShadow +InternalFrame.buttonHoverBackground +InternalFrame.buttonPressedBackground +InternalFrame.buttonSize +InternalFrame.closeHoverBackground +InternalFrame.closeHoverForeground +InternalFrame.closeIcon +InternalFrame.closePressedBackground +InternalFrame.closePressedForeground +InternalFrame.dropShadowPainted +InternalFrame.icon +InternalFrame.iconifyIcon +InternalFrame.inactiveBorderColor +InternalFrame.inactiveDropShadowInsets +InternalFrame.inactiveDropShadowOpacity +InternalFrame.inactiveTitleBackground +InternalFrame.inactiveTitleForeground +InternalFrame.maximizeIcon +InternalFrame.minimizeIcon +InternalFrame.titleFont +InternalFrameTitlePane.border +InternalFrameTitlePane.closeButtonOpacity +InternalFrameTitlePane.iconifyButtonOpacity +InternalFrameTitlePane.maximizeButtonOpacity +InternalFrameUI +JXBusyLabel.baseColor +JXBusyLabel.highlightColor +JXDatePicker.border +JXHeader.background +JXHeader.startBackground +JXMonthView.arrowColor +JXMonthView.background +JXMonthView.daysOfTheWeekForeground +JXMonthView.disabledArrowColor +JXMonthView.flaggedDayForeground +JXMonthView.leadingDayForeground +JXMonthView.monthDownFileName +JXMonthView.monthStringBackground +JXMonthView.monthStringForeground +JXMonthView.monthUpFileName +JXMonthView.selectedBackground +JXMonthView.trailingDayForeground +JXMonthView.unselectableDayForeground +JXMonthView.weekOfTheYearForeground +JXTitledPanel.borderColor +JXTitledPanel.captionInsets +JXTitledPanel.titleBackground +JXTitledPanel.titleForeground +JideTabbedPane.background +JideTabbedPane.contentBorderInsets +JideTabbedPane.foreground +JideTabbedPane.shadow +JideTabbedPane.tabAreaBackground +JideTabbedPane.tabAreaInsets +JideTabbedPane.tabInsets +JideTabbedPane.tabRunOverlay +JideTabbedPaneUI +Label.background +Label.disabledForeground +Label.disabledShadow +Label.font +Label.foreground +LabelUI +List.background +List.border +List.cellFocusColor +List.cellMargins +List.cellNoFocusBorder +List.cellRenderer +List.dropCellBackground +List.dropCellForeground +List.dropLineColor +List.focusCellHighlightBorder +List.focusInputMap +List.focusInputMap.RightToLeft +List.focusSelectedCellHighlightBorder +List.font +List.foreground +List.noFocusBorder +List.selectionBackground +List.selectionForeground +List.selectionInactiveBackground +List.selectionInactiveForeground +List.showCellFocusIndicator +List.timeFactor +ListUI +Menu.acceleratorFont +Menu.acceleratorForeground +Menu.acceleratorSelectionForeground +Menu.arrowIcon +Menu.background +Menu.border +Menu.borderPainted +Menu.cancelMode +Menu.crossMenuMnemonic +Menu.disabledForeground +Menu.font +Menu.foreground +Menu.icon.arrowColor +Menu.icon.disabledArrowColor +Menu.margin +Menu.menuPopupOffsetX +Menu.menuPopupOffsetY +Menu.opaque +Menu.preserveTopLevelSelection +Menu.selectionBackground +Menu.selectionForeground +Menu.shortcutKeys +Menu.submenuPopupOffsetX +Menu.submenuPopupOffsetY +MenuBar.background +MenuBar.border +MenuBar.borderColor +MenuBar.font +MenuBar.foreground +MenuBar.highlight +MenuBar.hoverBackground +MenuBar.itemMargins +MenuBar.shadow +MenuBar.windowBindings +MenuBarUI +MenuItem.acceleratorArrowGap +MenuItem.acceleratorDelimiter +MenuItem.acceleratorFont +MenuItem.acceleratorForeground +MenuItem.acceleratorSelectionForeground +MenuItem.arrowIcon +MenuItem.background +MenuItem.border +MenuItem.borderPainted +MenuItem.checkBackground +MenuItem.checkMargins +MenuItem.disabledForeground +MenuItem.font +MenuItem.foreground +MenuItem.iconTextGap +MenuItem.margin +MenuItem.minimumIconSize +MenuItem.minimumWidth +MenuItem.opaque +MenuItem.selectionBackground +MenuItem.selectionForeground +MenuItem.textAcceleratorGap +MenuItem.textNoAcceleratorGap +MenuItem.underlineSelectionBackground +MenuItem.underlineSelectionCheckBackground +MenuItem.underlineSelectionColor +MenuItem.underlineSelectionHeight +MenuItemCheckBox.icon.checkmarkColor +MenuItemCheckBox.icon.disabledCheckmarkColor +MenuItemUI +MenuUI +MonthViewUI +Objects.BlackText +Objects.Blue +Objects.Green +Objects.GreenAndroid +Objects.Grey +Objects.Pink +Objects.Purple +Objects.Red +Objects.RedStatus +Objects.Yellow +Objects.YellowDark +OptionPane.background +OptionPane.border +OptionPane.buttonAreaBorder +OptionPane.buttonClickThreshhold +OptionPane.buttonMinimumWidth +OptionPane.buttonOrientation +OptionPane.buttonPadding +OptionPane.errorIcon +OptionPane.font +OptionPane.foreground +OptionPane.iconMessageGap +OptionPane.informationIcon +OptionPane.maxCharactersPerLine +OptionPane.messageAreaBorder +OptionPane.messagePadding +OptionPane.minimumSize +OptionPane.questionIcon +OptionPane.sameSizeButtons +OptionPane.setButtonMargin +OptionPane.warningIcon +OptionPane.windowBindings +OptionPaneUI +Panel.background +Panel.font +Panel.foreground +PanelUI +PasswordField.background +PasswordField.border +PasswordField.capsLockIcon +PasswordField.capsLockIconColor +PasswordField.caretBlinkRate +PasswordField.caretForeground +PasswordField.disabledBackground +PasswordField.echoChar +PasswordField.focusInputMap +PasswordField.font +PasswordField.foreground +PasswordField.inactiveBackground +PasswordField.inactiveForeground +PasswordField.margin +PasswordField.placeholderForeground +PasswordField.selectionBackground +PasswordField.selectionForeground +PasswordFieldUI +Popup.dropShadowColor +Popup.dropShadowInsets +Popup.dropShadowOpacity +Popup.dropShadowPainted +PopupMenu.background +PopupMenu.border +PopupMenu.borderColor +PopupMenu.borderInsets +PopupMenu.consumeEventOnClose +PopupMenu.font +PopupMenu.foreground +PopupMenu.selectedWindowInputMapBindings +PopupMenu.selectedWindowInputMapBindings.RightToLeft +PopupMenuSeparator.height +PopupMenuSeparator.stripeIndent +PopupMenuSeparator.stripeWidth +PopupMenuSeparatorUI +PopupMenuUI +ProgressBar.arc +ProgressBar.background +ProgressBar.border +ProgressBar.cellLength +ProgressBar.cellSpacing +ProgressBar.cycleTime +ProgressBar.font +ProgressBar.foreground +ProgressBar.horizontalSize +ProgressBar.repaintInterval +ProgressBar.selectionBackground +ProgressBar.selectionForeground +ProgressBar.verticalSize +ProgressBarUI +RadioButton.background +RadioButton.border +RadioButton.darkShadow +RadioButton.disabledText +RadioButton.focusInputMap +RadioButton.font +RadioButton.foreground +RadioButton.highlight +RadioButton.icon +RadioButton.icon.centerDiameter +RadioButton.iconTextGap +RadioButton.icon[filled].centerDiameter +RadioButton.light +RadioButton.margin +RadioButton.rollover +RadioButton.shadow +RadioButton.textIconGap +RadioButton.textShiftOffset +RadioButtonMenuItem.acceleratorFont +RadioButtonMenuItem.acceleratorForeground +RadioButtonMenuItem.acceleratorSelectionForeground +RadioButtonMenuItem.arrowIcon +RadioButtonMenuItem.background +RadioButtonMenuItem.border +RadioButtonMenuItem.borderPainted +RadioButtonMenuItem.checkIcon +RadioButtonMenuItem.disabledForeground +RadioButtonMenuItem.font +RadioButtonMenuItem.foreground +RadioButtonMenuItem.margin +RadioButtonMenuItem.opaque +RadioButtonMenuItem.selectionBackground +RadioButtonMenuItem.selectionForeground +RadioButtonMenuItemUI +RadioButtonUI +Resizable.resizeBorder +RootPane.activeBorderColor +RootPane.ancestorInputMap +RootPane.border +RootPane.borderDragThickness +RootPane.cornerDragWidth +RootPane.defaultButtonWindowKeyBindings +RootPane.honorDialogMinimumSizeOnResize +RootPane.honorFrameMinimumSizeOnResize +RootPane.inactiveBorderColor +RootPaneUI +ScrollBar.allowsAbsolutePositioning +ScrollBar.ancestorInputMap +ScrollBar.ancestorInputMap.RightToLeft +ScrollBar.background +ScrollBar.buttonArrowColor +ScrollBar.buttonDisabledArrowColor +ScrollBar.foreground +ScrollBar.hoverButtonBackground +ScrollBar.hoverThumbColor +ScrollBar.hoverThumbWithTrack +ScrollBar.hoverTrackColor +ScrollBar.maximumThumbSize +ScrollBar.minimumThumbSize +ScrollBar.pressedButtonBackground +ScrollBar.pressedThumbColor +ScrollBar.pressedThumbWithTrack +ScrollBar.showButtons +ScrollBar.squareButtons +ScrollBar.thumb +ScrollBar.thumbArc +ScrollBar.thumbDarkShadow +ScrollBar.thumbHighlight +ScrollBar.thumbInsets +ScrollBar.thumbShadow +ScrollBar.track +ScrollBar.trackArc +ScrollBar.trackHighlight +ScrollBar.trackInsets +ScrollBar.width +ScrollBarUI +ScrollPane.ancestorInputMap +ScrollPane.ancestorInputMap.RightToLeft +ScrollPane.background +ScrollPane.border +ScrollPane.fillUpperCorner +ScrollPane.font +ScrollPane.foreground +ScrollPane.smoothScrolling +ScrollPaneUI +Separator.background +Separator.foreground +Separator.height +Separator.highlight +Separator.shadow +Separator.stripeIndent +Separator.stripeWidth +SeparatorUI +Slider.background +Slider.disabledForeground +Slider.focus +Slider.focusInputMap +Slider.focusInputMap.RightToLeft +Slider.focusInsets +Slider.font +Slider.foreground +Slider.highlight +Slider.horizontalSize +Slider.hoverColor +Slider.minimumHorizontalSize +Slider.minimumVerticalSize +Slider.onlyLeftMouseButtonDrag +Slider.shadow +Slider.thumbColor +Slider.thumbWidth +Slider.tickColor +Slider.trackColor +Slider.trackWidth +Slider.verticalSize +SliderUI +Spinner.ancestorInputMap +Spinner.arrowButtonSize +Spinner.background +Spinner.border +Spinner.buttonArrowColor +Spinner.buttonBackground +Spinner.buttonDisabledArrowColor +Spinner.buttonHoverArrowColor +Spinner.buttonStyle +Spinner.disabledBackground +Spinner.disabledForeground +Spinner.editorAlignment +Spinner.editorBorderPainted +Spinner.font +Spinner.foreground +Spinner.padding +SpinnerUI +SplitPane.ancestorInputMap +SplitPane.background +SplitPane.centerOneTouchButtons +SplitPane.continuousLayout +SplitPane.darkShadow +SplitPane.dividerSize +SplitPane.highlight +SplitPane.oneTouchButtonOffset +SplitPane.oneTouchButtonSize +SplitPane.shadow +SplitPaneDivider.draggingColor +SplitPaneDivider.oneTouchArrowColor +SplitPaneDivider.oneTouchHoverArrowColor +SplitPaneUI +TabbedPane.ancestorInputMap +TabbedPane.background +TabbedPane.contentAreaColor +TabbedPane.contentOpaque +TabbedPane.contentSeparatorHeight +TabbedPane.darkShadow +TabbedPane.disabledForeground +TabbedPane.disabledUnderlineColor +TabbedPane.focus +TabbedPane.focusColor +TabbedPane.focusInputMap +TabbedPane.font +TabbedPane.foreground +TabbedPane.hasFullBorder +TabbedPane.highlight +TabbedPane.hoverColor +TabbedPane.labelShift +TabbedPane.light +TabbedPane.selectedLabelShift +TabbedPane.selectedTabPadInsets +TabbedPane.selectionFollowsFocus +TabbedPane.shadow +TabbedPane.tabAreaInsets +TabbedPane.tabHeight +TabbedPane.tabInsets +TabbedPane.tabRunOverlay +TabbedPane.tabSelectionHeight +TabbedPane.tabsOpaque +TabbedPane.tabsOverlapBorder +TabbedPane.textIconGap +TabbedPane.underlineColor +TabbedPaneUI +Table.ancestorInputMap +Table.ancestorInputMap.RightToLeft +Table.ascendingSortIcon +Table.background +Table.cellFocusColor +Table.cellMargins +Table.cellNoFocusBorder +Table.descendingSortIcon +Table.dropCellBackground +Table.dropCellForeground +Table.dropLineColor +Table.dropLineShortColor +Table.focusCellBackground +Table.focusCellForeground +Table.focusCellHighlightBorder +Table.focusSelectedCellHighlightBorder +Table.font +Table.foreground +Table.gridColor +Table.intercellSpacing +Table.rowHeight +Table.scrollPaneBorder +Table.selectionBackground +Table.selectionForeground +Table.selectionInactiveBackground +Table.selectionInactiveForeground +Table.showHorizontalLines +Table.showVerticalLines +Table.sortIconColor +TableHeader.ancestorInputMap +TableHeader.background +TableHeader.bottomSeparatorColor +TableHeader.cellBorder +TableHeader.focusCellBackground +TableHeader.font +TableHeader.foreground +TableHeader.height +TableHeader.separatorColor +TableHeaderUI +TableUI +TaskPane.background +TaskPane.borderColor +TaskPane.contentInsets +TaskPane.specialTitleBackground +TaskPane.specialTitleForeground +TaskPane.specialTitleOver +TaskPane.titleBackgroundGradientStart +TaskPane.titleForeground +TaskPane.titleOver +TaskPaneContainer.background +TaskPaneContainer.border +TextArea.background +TextArea.border +TextArea.caretBlinkRate +TextArea.caretForeground +TextArea.disabledBackground +TextArea.focusInputMap +TextArea.font +TextArea.foreground +TextArea.inactiveBackground +TextArea.inactiveForeground +TextArea.margin +TextArea.selectionBackground +TextArea.selectionForeground +TextAreaUI +TextComponent.arc +TextComponent.selectAllOnFocusPolicy +TextField.background +TextField.border +TextField.caretBlinkRate +TextField.caretForeground +TextField.darkShadow +TextField.disabledBackground +TextField.focusInputMap +TextField.font +TextField.foreground +TextField.highlight +TextField.inactiveBackground +TextField.inactiveForeground +TextField.light +TextField.margin +TextField.placeholderForeground +TextField.selectionBackground +TextField.selectionForeground +TextField.shadow +TextFieldUI +TextPane.background +TextPane.border +TextPane.caretBlinkRate +TextPane.caretForeground +TextPane.disabledBackground +TextPane.focusInputMap +TextPane.font +TextPane.foreground +TextPane.inactiveBackground +TextPane.inactiveForeground +TextPane.margin +TextPane.selectionBackground +TextPane.selectionForeground +TextPaneUI +TitlePane.background +TitlePane.buttonHoverBackground +TitlePane.buttonMaximizedHeight +TitlePane.buttonPressedBackground +TitlePane.buttonSize +TitlePane.closeHoverBackground +TitlePane.closeHoverForeground +TitlePane.closeIcon +TitlePane.closePressedBackground +TitlePane.closePressedForeground +TitlePane.embeddedForeground +TitlePane.foreground +TitlePane.iconMargins +TitlePane.iconSize +TitlePane.iconifyIcon +TitlePane.inactiveBackground +TitlePane.inactiveForeground +TitlePane.maximizeIcon +TitlePane.menuBarEmbedded +TitlePane.menuBarMargins +TitlePane.restoreIcon +TitlePane.titleMargins +TitledBorder.border +TitledBorder.font +TitledBorder.titleColor +TitledPanelUI +ToggleButton.background +ToggleButton.border +ToggleButton.darkShadow +ToggleButton.disabledBackground +ToggleButton.disabledSelectedBackground +ToggleButton.disabledText +ToggleButton.focusInputMap +ToggleButton.font +ToggleButton.foreground +ToggleButton.highlight +ToggleButton.iconTextGap +ToggleButton.light +ToggleButton.margin +ToggleButton.pressedBackground +ToggleButton.rollover +ToggleButton.selectedBackground +ToggleButton.selectedForeground +ToggleButton.shadow +ToggleButton.tab.disabledUnderlineColor +ToggleButton.tab.focusBackground +ToggleButton.tab.hoverBackground +ToggleButton.tab.underlineColor +ToggleButton.tab.underlineHeight +ToggleButton.textIconGap +ToggleButton.textShiftOffset +ToggleButton.toolbar.hoverBackground +ToggleButton.toolbar.pressedBackground +ToggleButton.toolbar.selectedBackground +ToggleButtonUI +ToolBar.ancestorInputMap +ToolBar.background +ToolBar.border +ToolBar.borderMargins +ToolBar.darkShadow +ToolBar.dockingBackground +ToolBar.dockingForeground +ToolBar.floatingBackground +ToolBar.floatingForeground +ToolBar.font +ToolBar.foreground +ToolBar.gripColor +ToolBar.highlight +ToolBar.isRollover +ToolBar.light +ToolBar.separatorColor +ToolBar.separatorWidth +ToolBar.shadow +ToolBar.spacingBorder +ToolBarSeparatorUI +ToolBarUI +ToolTip.background +ToolTip.border +ToolTip.font +ToolTip.foreground +ToolTipManager.enableToolTipMode +ToolTipUI +Tree.ancestorInputMap +Tree.background +Tree.border +Tree.changeSelectionWithFocus +Tree.closedIcon +Tree.collapsedIcon +Tree.drawsFocusBorderAroundIcon +Tree.dropCellBackground +Tree.dropCellForeground +Tree.dropLineColor +Tree.editorBorder +Tree.expandedIcon +Tree.focusInputMap +Tree.focusInputMap.RightToLeft +Tree.font +Tree.foreground +Tree.hash +Tree.icon.closedColor +Tree.icon.collapsedColor +Tree.icon.expandedColor +Tree.icon.leafColor +Tree.icon.openColor +Tree.leafIcon +Tree.leftChildIndent +Tree.lineTypeDashed +Tree.openIcon +Tree.paintLines +Tree.rendererFillBackground +Tree.rendererMargins +Tree.repaintWholeRow +Tree.rightChildIndent +Tree.rowHeight +Tree.scrollsOnExpand +Tree.selectionBackground +Tree.selectionBorderColor +Tree.selectionForeground +Tree.selectionInactiveBackground +Tree.selectionInactiveForeground +Tree.showCellFocusIndicator +Tree.textBackground +Tree.textForeground +Tree.timeFactor +Tree.wideSelection +TreeUI +Viewport.background +Viewport.font +Viewport.foreground +ViewportUI +activeCaption +activeCaptionBorder +activeCaptionText +control +controlDkShadow +controlHighlight +controlLtHighlight +controlShadow +controlText +defaultFont +desktop +html.missingImage +html.pendingImage +inactiveCaption +inactiveCaptionBorder +inactiveCaptionText +info +infoText +laf.scaleFactor +menu +menuText +scrollbar +swingx/TaskPaneUI +text +textHighlight +textHighlightText +textInactiveText +textText +window +windowBorder +windowText