mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 05:50:53 +03:00
System File Chooser:
- introduced state storage - added "New Folder" to macOS select folder dialog - Demo: added "Select Folder (System)" menu item - javadoc fixes
This commit is contained in:
@@ -18,6 +18,7 @@ package com.formdev.flatlaf.demo;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
@@ -175,13 +176,19 @@ class DemoFrame
|
||||
|
||||
private void openSystemActionPerformed() {
|
||||
SystemFileChooser chooser = new SystemFileChooser();
|
||||
chooser.setMultiSelectionEnabled( true );
|
||||
chooser.addChoosableFileFilter( new SystemFileChooser.FileNameExtensionFilter(
|
||||
"Text Files", "txt", "md" ) );
|
||||
chooser.addChoosableFileFilter( new SystemFileChooser.FileNameExtensionFilter(
|
||||
"PDF Files", "pdf" ) );
|
||||
chooser.addChoosableFileFilter( new SystemFileChooser.FileNameExtensionFilter(
|
||||
"Archives", "zip", "tar", "jar", "7z" ) );
|
||||
chooser.showOpenDialog( this );
|
||||
|
||||
if( chooser.showOpenDialog( this ) != SystemFileChooser.APPROVE_OPTION )
|
||||
return;
|
||||
|
||||
File[] files = chooser.getSelectedFiles();
|
||||
System.out.println( Arrays.toString( files ).replace( ",", "\n" ) );
|
||||
}
|
||||
|
||||
private void saveAsSystemActionPerformed() {
|
||||
@@ -190,7 +197,23 @@ class DemoFrame
|
||||
"Text Files", "txt", "md" ) );
|
||||
chooser.addChoosableFileFilter( new SystemFileChooser.FileNameExtensionFilter(
|
||||
"Images", "png", "gif", "jpg" ) );
|
||||
chooser.showSaveDialog( this );
|
||||
|
||||
if( chooser.showSaveDialog( this ) != SystemFileChooser.APPROVE_OPTION )
|
||||
return;
|
||||
|
||||
File file = chooser.getSelectedFile();
|
||||
System.out.println( file );
|
||||
}
|
||||
|
||||
private void selectFolderSystemActionPerformed() {
|
||||
SystemFileChooser chooser = new SystemFileChooser();
|
||||
chooser.setFileSelectionMode( SystemFileChooser.DIRECTORIES_ONLY );
|
||||
|
||||
if( chooser.showOpenDialog( this ) != SystemFileChooser.APPROVE_OPTION )
|
||||
return;
|
||||
|
||||
File directory = chooser.getSelectedFile();
|
||||
System.out.println( directory );
|
||||
}
|
||||
|
||||
private void exitActionPerformed() {
|
||||
@@ -519,6 +542,7 @@ class DemoFrame
|
||||
JMenuItem saveAsMenuItem = new JMenuItem();
|
||||
JMenuItem openSystemMenuItem = new JMenuItem();
|
||||
JMenuItem saveAsSystemMenuItem = new JMenuItem();
|
||||
JMenuItem selectFolderSystemMenuItem = new JMenuItem();
|
||||
JMenuItem closeMenuItem = new JMenuItem();
|
||||
exitMenuItem = new JMenuItem();
|
||||
JMenu editMenu = new JMenu();
|
||||
@@ -630,6 +654,12 @@ class DemoFrame
|
||||
saveAsSystemMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_DOWN_MASK));
|
||||
saveAsSystemMenuItem.addActionListener(e -> saveAsSystemActionPerformed());
|
||||
fileMenu.add(saveAsSystemMenuItem);
|
||||
|
||||
//---- selectFolderSystemMenuItem ----
|
||||
selectFolderSystemMenuItem.setText("Select Folder (System)...");
|
||||
selectFolderSystemMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_DOWN_MASK));
|
||||
selectFolderSystemMenuItem.addActionListener(e -> selectFolderSystemActionPerformed());
|
||||
fileMenu.add(selectFolderSystemMenuItem);
|
||||
fileMenu.addSeparator();
|
||||
|
||||
//---- closeMenuItem ----
|
||||
|
||||
@@ -197,6 +197,12 @@ new FormModel {
|
||||
"accelerator": static javax.swing.KeyStroke getKeyStroke( 83, 4291, false )
|
||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "saveAsSystemActionPerformed", false ) )
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||
name: "selectFolderSystemMenuItem"
|
||||
"text": "Select Folder (System)..."
|
||||
"accelerator": static javax.swing.KeyStroke getKeyStroke( 70, 4291, false )
|
||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "selectFolderSystemActionPerformed", false ) )
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) {
|
||||
name: "separator2"
|
||||
} )
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.formdev.flatlaf.demo;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.util.prefs.Preferences;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.SwingUtilities;
|
||||
@@ -27,6 +28,7 @@ import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
||||
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
||||
import com.formdev.flatlaf.fonts.roboto_mono.FlatRobotoMonoFont;
|
||||
import com.formdev.flatlaf.util.SystemFileChooser;
|
||||
import com.formdev.flatlaf.util.SystemInfo;
|
||||
|
||||
/**
|
||||
@@ -73,6 +75,28 @@ public class FlatLafDemo
|
||||
DemoPrefs.init( PREFS_ROOT_PATH );
|
||||
DemoPrefs.initSystemScale();
|
||||
|
||||
// SystemFileChooser state storage
|
||||
SystemFileChooser.setStateStore( new SystemFileChooser.StateStore() {
|
||||
private static final String KEY_PREFIX = "fileChooser.";
|
||||
private final Preferences state = Preferences.userRoot().node( PREFS_ROOT_PATH );
|
||||
|
||||
@Override
|
||||
public String get( String key, String def ) {
|
||||
String value = state.get( KEY_PREFIX + key, def );
|
||||
System.out.println( "SystemFileChooser State GET " + key + " = " + value );
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put( String key, String value ) {
|
||||
System.out.println( "SystemFileChooser State PUT " + key + " = " + value );
|
||||
if( value != null )
|
||||
state.put( KEY_PREFIX + key, value );
|
||||
else
|
||||
state.remove( KEY_PREFIX + key );
|
||||
}
|
||||
} );
|
||||
|
||||
SwingUtilities.invokeLater( () -> {
|
||||
// install fonts for lazy loading
|
||||
FlatInterFont.installLazy();
|
||||
|
||||
Reference in New Issue
Block a user