Theme Editor:

- use class `FlatDesktop`
- hide "File > Exit" and "Help > About" on macOS
- enable macOS screen menu bar
This commit is contained in:
Karl Tauber
2021-10-24 11:49:48 +02:00
parent d907c469ed
commit 78cef1b3c7
2 changed files with 32 additions and 8 deletions

View File

@@ -57,6 +57,7 @@ import com.formdev.flatlaf.FlatDarkLaf;
import com.formdev.flatlaf.FlatIntelliJLaf; import com.formdev.flatlaf.FlatIntelliJLaf;
import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.FlatLightLaf;
import com.formdev.flatlaf.extras.FlatDesktop;
import com.formdev.flatlaf.extras.FlatInspector; import com.formdev.flatlaf.extras.FlatInspector;
import com.formdev.flatlaf.extras.FlatSVGIcon; import com.formdev.flatlaf.extras.FlatSVGIcon;
import com.formdev.flatlaf.extras.FlatSVGUtils; import com.formdev.flatlaf.extras.FlatSVGUtils;
@@ -65,6 +66,7 @@ import com.formdev.flatlaf.extras.components.*;
import com.formdev.flatlaf.icons.FlatClearIcon; import com.formdev.flatlaf.icons.FlatClearIcon;
import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.StringUtils;
import com.formdev.flatlaf.util.SystemInfo;
import com.formdev.flatlaf.util.UIScale; import com.formdev.flatlaf.util.UIScale;
/** /**
@@ -102,6 +104,10 @@ class FlatThemeFileEditor
Locale.setDefault( Locale.ENGLISH ); Locale.setDefault( Locale.ENGLISH );
System.setProperty( "user.language", "en" ); System.setProperty( "user.language", "en" );
// on macOS enable screen menu bar
if( SystemInfo.isMacOS )
System.setProperty( "apple.laf.useScreenMenuBar", "true" );
SwingUtilities.invokeLater( () -> { SwingUtilities.invokeLater( () -> {
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" ); FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" );
@@ -170,6 +176,24 @@ class FlatThemeFileEditor
loadDirectory( (File) directoryField.getSelectedItem() ); loadDirectory( (File) directoryField.getSelectedItem() );
enableDisableActions(); enableDisableActions();
// hide some menu items on macOS
if( SystemInfo.isMacOS ) {
exitMenuItem.setVisible( false );
aboutMenuItem.setVisible( false );
}
// integrate into macOS screen menu
FlatDesktop.setAboutHandler( this::about );
FlatDesktop.setQuitHandler( response -> {
if( !saveAll() ) {
response.cancelQuit();
return;
}
saveWindowBounds();
response.performQuit();
} );
} }
private void openDirectory() { private void openDirectory() {
@@ -953,7 +977,7 @@ class FlatThemeFileEditor
//---- newPropertiesFileMenuItem ---- //---- newPropertiesFileMenuItem ----
newPropertiesFileMenuItem.setText("New Properties File..."); newPropertiesFileMenuItem.setText("New Properties File...");
newPropertiesFileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_DOWN_MASK)); newPropertiesFileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newPropertiesFileMenuItem.setMnemonic('N'); newPropertiesFileMenuItem.setMnemonic('N');
newPropertiesFileMenuItem.addActionListener(e -> newPropertiesFile()); newPropertiesFileMenuItem.addActionListener(e -> newPropertiesFile());
fileMenu.add(newPropertiesFileMenuItem); fileMenu.add(newPropertiesFileMenuItem);
@@ -990,13 +1014,13 @@ class FlatThemeFileEditor
//---- insertColorMenuItem ---- //---- insertColorMenuItem ----
insertColorMenuItem.setText("Insert Color"); insertColorMenuItem.setText("Insert Color");
insertColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_DOWN_MASK)); insertColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
insertColorMenuItem.addActionListener(e -> insertColor()); insertColorMenuItem.addActionListener(e -> insertColor());
editMenu.add(insertColorMenuItem); editMenu.add(insertColorMenuItem);
//---- pickColorMenuItem ---- //---- pickColorMenuItem ----
pickColorMenuItem.setText("Pick Color from Screen"); pickColorMenuItem.setText("Pick Color from Screen");
pickColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_DOWN_MASK|KeyEvent.SHIFT_DOWN_MASK)); pickColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_DOWN_MASK));
pickColorMenuItem.addActionListener(e -> pickColor()); pickColorMenuItem.addActionListener(e -> pickColor());
editMenu.add(pickColorMenuItem); editMenu.add(pickColorMenuItem);
} }
@@ -1009,7 +1033,7 @@ class FlatThemeFileEditor
//---- previewMenuItem ---- //---- previewMenuItem ----
previewMenuItem.setText("Preview"); previewMenuItem.setText("Preview");
previewMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK)); previewMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
previewMenuItem.addActionListener(e -> showHidePreview()); previewMenuItem.addActionListener(e -> showHidePreview());
viewMenu.add(previewMenuItem); viewMenu.add(previewMenuItem);
viewMenu.addSeparator(); viewMenu.addSeparator();

View File

@@ -70,7 +70,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JMenuItem" ) { add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "newPropertiesFileMenuItem" name: "newPropertiesFileMenuItem"
"text": "New Properties File..." "text": "New Properties File..."
"accelerator": static javax.swing.KeyStroke getKeyStroke( 78, 130, false ) "accelerator": static javax.swing.KeyStroke getKeyStroke( 78, 4356, false )
"mnemonic": 78 "mnemonic": 78
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "newPropertiesFile", false ) ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "newPropertiesFile", false ) )
} ) } )
@@ -109,13 +109,13 @@ new FormModel {
add( new FormComponent( "javax.swing.JMenuItem" ) { add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "insertColorMenuItem" name: "insertColorMenuItem"
"text": "Insert Color" "text": "Insert Color"
"accelerator": static javax.swing.KeyStroke getKeyStroke( 71, 130, false ) "accelerator": static javax.swing.KeyStroke getKeyStroke( 71, 4356, false )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "insertColor", false ) ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "insertColor", false ) )
} ) } )
add( new FormComponent( "javax.swing.JMenuItem" ) { add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "pickColorMenuItem" name: "pickColorMenuItem"
"text": "Pick Color from Screen" "text": "Pick Color from Screen"
"accelerator": &KeyStroke0 static javax.swing.KeyStroke getKeyStroke( 71, 195, false ) "accelerator": static javax.swing.KeyStroke getKeyStroke( 71, 4421, false )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "pickColor", false ) ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "pickColor", false ) )
} ) } )
} ) } )
@@ -126,7 +126,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
name: "previewMenuItem" name: "previewMenuItem"
"text": "Preview" "text": "Preview"
"accelerator": static javax.swing.KeyStroke getKeyStroke( 80, 130, false ) "accelerator": static javax.swing.KeyStroke getKeyStroke( 80, 4356, false )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHidePreview", false ) ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHidePreview", false ) )
} ) } )
add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) {