Theme Editor: support navigating to next/previous editor with Ctrl+Tab/Ctrl+Shift+Tab

This commit is contained in:
Karl Tauber
2020-12-30 14:03:41 +01:00
parent ea94899a28
commit 0896143838
3 changed files with 67 additions and 0 deletions

View File

@@ -17,6 +17,8 @@
package com.formdev.flatlaf.themeeditor;
import java.awt.Color;
import java.awt.KeyboardFocusManager;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.swing.text.BadLocationException;
@@ -38,6 +40,9 @@ class FlatSyntaxTextArea
private final Map<String, Color> parsedColorsMap = new HashMap<>();
FlatSyntaxTextArea() {
// remove Ctrl+Tab and Ctrl+Shift+Tab focus traversal keys to allow tabbed pane to process them
setFocusTraversalKeys( KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.emptySet() );
setFocusTraversalKeys( KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, Collections.emptySet() );
}
boolean isUseColorOfColorTokens() {

View File

@@ -165,12 +165,29 @@ public class FlatThemeFileEditor
return result;
}
private void nextEditor() {
int index = tabbedPane.getSelectedIndex() + 1;
if( index >= tabbedPane.getTabCount() )
index = 0;
tabbedPane.setSelectedIndex( index );
}
private void previousEditor() {
int index = tabbedPane.getSelectedIndex() - 1;
if( index < 0 )
index = tabbedPane.getTabCount() - 1;
tabbedPane.setSelectedIndex( index );
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
menuBar = new JMenuBar();
fileMenu = new JMenu();
saveAllMenuItem = new JMenuItem();
exitMenuItem = new JMenuItem();
windowMenu = new JMenu();
nextEditorMenuItem = new JMenuItem();
previousEditorMenuItem = new JMenuItem();
controlPanel = new JPanel();
directoryLabel = new JLabel();
directoryField = new JTextField();
@@ -219,6 +236,27 @@ public class FlatThemeFileEditor
fileMenu.add(exitMenuItem);
}
menuBar.add(fileMenu);
//======== windowMenu ========
{
windowMenu.setText("Window");
windowMenu.setMnemonic('W');
//---- nextEditorMenuItem ----
nextEditorMenuItem.setText("Next Editor");
nextEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
nextEditorMenuItem.setMnemonic('N');
nextEditorMenuItem.addActionListener(e -> nextEditor());
windowMenu.add(nextEditorMenuItem);
//---- previousEditorMenuItem ----
previousEditorMenuItem.setText("Previous Editor");
previousEditorMenuItem.setMnemonic('P');
previousEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_MASK));
previousEditorMenuItem.addActionListener(e -> previousEditor());
windowMenu.add(previousEditorMenuItem);
}
menuBar.add(windowMenu);
}
setJMenuBar(menuBar);
@@ -238,6 +276,7 @@ public class FlatThemeFileEditor
//---- directoryField ----
directoryField.setEditable(false);
directoryField.setFocusable(false);
controlPanel.add(directoryField, "cell 1 0");
}
contentPane.add(controlPanel, BorderLayout.NORTH);
@@ -255,6 +294,9 @@ public class FlatThemeFileEditor
private JMenu fileMenu;
private JMenuItem saveAllMenuItem;
private JMenuItem exitMenuItem;
private JMenu windowMenu;
private JMenuItem nextEditorMenuItem;
private JMenuItem previousEditorMenuItem;
private JPanel controlPanel;
private JLabel directoryLabel;
private JTextField directoryField;

View File

@@ -27,6 +27,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JTextField" ) {
name: "directoryField"
"editable": false
"focusable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
@@ -62,6 +63,25 @@ new FormModel {
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "exit", false ) )
} )
} )
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "windowMenu"
"text": "Window"
"mnemonic": 87
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "nextEditorMenuItem"
"text": "Next Editor"
"accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4226, false )
"mnemonic": 78
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "nextEditor", false ) )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "previousEditorMenuItem"
"text": "Previous Editor"
"mnemonic": 80
"accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4291, false )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "previousEditor", false ) )
} )
} )
}
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )