System File Chooser: macOS:

- use `optionsSet` and `optionsClear` (as on Windows)
- delete local reference after getting Java array item
- added "or null" to javadoc
This commit is contained in:
Karl Tauber
2024-12-31 18:36:29 +01:00
parent 49a0a83eca
commit 63272a03cf
5 changed files with 109 additions and 110 deletions

View File

@@ -75,18 +75,16 @@ public class FlatNativeMacLibrary
// NSOpenPanel // NSOpenPanel
FC_canChooseFiles = 1 << 0, // default FC_canChooseFiles = 1 << 0, // default
FC_canChooseDirectories = 1 << 1, FC_canChooseDirectories = 1 << 1,
FC_resolvesAliases_NO = 1 << 2, // default FC_resolvesAliases = 1 << 2, // default
FC_allowsMultipleSelection = 1 << 3, FC_allowsMultipleSelection = 1 << 3,
// NSSavePanel // NSSavePanel
FC_showsTagField_YES = 1 << 8, // default for Save FC_showsTagField = 1 << 8, // default for Save
FC_showsTagField_NO = 1 << 9, // default for Open FC_canCreateDirectories = 1 << 9, // default for Save
FC_canCreateDirectories_YES = 1 << 10, // default for Save FC_canSelectHiddenExtension = 1 << 10,
FC_canCreateDirectories_NO = 1 << 11, // default for Open FC_showsHiddenFiles = 1 << 11,
FC_canSelectHiddenExtension = 1 << 12, FC_extensionHidden = 1 << 12,
FC_showsHiddenFiles = 1 << 14, FC_allowsOtherFileTypes = 1 << 13,
FC_extensionHidden = 1 << 16, FC_treatsFilePackagesAsDirectories = 1 << 14;
FC_allowsOtherFileTypes = 1 << 18,
FC_treatsFilePackagesAsDirectories = 1 << 20;
/** /**
* Shows the macOS system file dialogs * Shows the macOS system file dialogs
@@ -98,13 +96,14 @@ public class FlatNativeMacLibrary
* to avoid blocking the AWT event dispatching thread. * to avoid blocking the AWT event dispatching thread.
* *
* @param open if {@code true}, shows the open dialog; if {@code false}, shows the save dialog * @param open if {@code true}, shows the open dialog; if {@code false}, shows the save dialog
* @param title text displayed at top of save dialog (not used in open dialog) * @param title text displayed at top of save dialog (not used in open dialog); or {@code null}
* @param prompt text displayed in default button * @param prompt text displayed in default button; or {@code null}
* @param message text displayed at top of open/save dialogs * @param message text displayed at top of open/save dialogs; or {@code null}
* @param nameFieldLabel text displayed in front of the filename text field in save dialog (not used in open dialog) * @param nameFieldLabel text displayed in front of the filename text field in save dialog (not used in open dialog); or {@code null}
* @param nameFieldStringValue user-editable filename currently shown in the name field in save dialog (not used in open dialog) * @param nameFieldStringValue user-editable filename currently shown in the name field in save dialog (not used in open dialog); or {@code null}
* @param directoryURL current directory shown in the dialog * @param directoryURL current directory shown in the dialog; or {@code null}
* @param options see {@code FC_*} constants * @param optionsSet options to set; see {@code FC_*} constants
* @param optionsClear options to clear; see {@code FC_*} constants
* @param allowedFileTypes allowed filename extensions (e.g. "txt") * @param allowedFileTypes allowed filename extensions (e.g. "txt")
* @return file path(s) that the user selected, or {@code null} if canceled * @return file path(s) that the user selected, or {@code null} if canceled
* *
@@ -112,6 +111,6 @@ public class FlatNativeMacLibrary
*/ */
public native static String[] showFileChooser( boolean open, public native static String[] showFileChooser( boolean open,
String title, String prompt, String message, String nameFieldLabel, String title, String prompt, String message, String nameFieldLabel,
String nameFieldStringValue, String directoryURL, int options, String nameFieldStringValue, String directoryURL,
String... allowedFileTypes ); int optionsSet, int optionsClear, String... allowedFileTypes );
} }

View File

@@ -17,28 +17,24 @@ extern "C" {
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseFiles 1L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseFiles 1L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseDirectories #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseDirectories
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseDirectories 2L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canChooseDirectories 2L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_resolvesAliases_NO #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_resolvesAliases
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_resolvesAliases_NO 4L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_resolvesAliases 4L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsMultipleSelection #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsMultipleSelection
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsMultipleSelection 8L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsMultipleSelection 8L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField_YES #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField_YES 256L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField 256L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField_NO #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsTagField_NO 512L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories 512L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories_YES
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories_YES 1024L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories_NO
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canCreateDirectories_NO 2048L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canSelectHiddenExtension #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canSelectHiddenExtension
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canSelectHiddenExtension 4096L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_canSelectHiddenExtension 1024L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsHiddenFiles #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsHiddenFiles
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsHiddenFiles 16384L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_showsHiddenFiles 2048L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_extensionHidden #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_extensionHidden
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_extensionHidden 65536L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_extensionHidden 4096L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsOtherFileTypes #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsOtherFileTypes
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsOtherFileTypes 262144L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_allowsOtherFileTypes 8192L
#undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_treatsFilePackagesAsDirectories #undef com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_treatsFilePackagesAsDirectories
#define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_treatsFilePackagesAsDirectories 1048576L #define com_formdev_flatlaf_ui_FlatNativeMacLibrary_FC_treatsFilePackagesAsDirectories 16384L
/* /*
* Class: com_formdev_flatlaf_ui_FlatNativeMacLibrary * Class: com_formdev_flatlaf_ui_FlatNativeMacLibrary
* Method: setWindowRoundedBorder * Method: setWindowRoundedBorder
@@ -82,10 +78,10 @@ JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_togg
/* /*
* Class: com_formdev_flatlaf_ui_FlatNativeMacLibrary * Class: com_formdev_flatlaf_ui_FlatNativeMacLibrary
* Method: showFileChooser * Method: showFileChooser
* Signature: (ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;)[Ljava/lang/String; * Signature: (ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)[Ljava/lang/String;
*/ */
JNIEXPORT jobjectArray JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_showFileChooser JNIEXPORT jobjectArray JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_showFileChooser
(JNIEnv *, jclass, jboolean, jstring, jstring, jstring, jstring, jstring, jstring, jint, jobjectArray); (JNIEnv *, jclass, jboolean, jstring, jstring, jstring, jstring, jstring, jstring, jint, jint, jobjectArray);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -25,8 +25,9 @@
* @author Karl Tauber * @author Karl Tauber
*/ */
#define isOptionSet( option ) ((options & com_formdev_flatlaf_ui_FlatNativeMacLibrary_ ## option) != 0) #define isOptionSet( option ) ((optionsSet & com_formdev_flatlaf_ui_FlatNativeMacLibrary_ ## option) != 0)
#define isYesOrNoOptionSet( option ) isOptionSet( option ## _YES ) || isOptionSet( option ## _NO ) #define isOptionClear( option ) ((optionsClear & com_formdev_flatlaf_ui_FlatNativeMacLibrary_ ## option) != 0)
#define isOptionSetOrClear( option ) isOptionSet( option ) || isOptionClear( option )
// declare internal methods // declare internal methods
NSWindow* getNSWindow( JNIEnv* env, jclass cls, jobject window ); NSWindow* getNSWindow( JNIEnv* env, jclass cls, jobject window );
@@ -38,7 +39,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_
( JNIEnv* env, jclass cls, jboolean open, ( JNIEnv* env, jclass cls, jboolean open,
jstring title, jstring prompt, jstring message, jstring nameFieldLabel, jstring title, jstring prompt, jstring message, jstring nameFieldLabel,
jstring nameFieldStringValue, jstring directoryURL, jstring nameFieldStringValue, jstring directoryURL,
jint options, jobjectArray allowedFileTypes ) jint optionsSet, jint optionsClear, jobjectArray allowedFileTypes )
{ {
JNI_COCOA_ENTER() JNI_COCOA_ENTER()
@@ -56,8 +57,8 @@ JNIEXPORT jobjectArray JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_
NSMutableArray* nsArray = [NSMutableArray arrayWithCapacity:len]; NSMutableArray* nsArray = [NSMutableArray arrayWithCapacity:len];
for( int i = 0; i < len; i++ ) { for( int i = 0; i < len; i++ ) {
jstring str = (jstring) env->GetObjectArrayElement( allowedFileTypes, i ); jstring str = (jstring) env->GetObjectArrayElement( allowedFileTypes, i );
NSString* nsStr = JavaToNSString( env, str ); nsArray[i] = JavaToNSString( env, str );
nsArray[i] = nsStr; env->DeleteLocalRef( str );
} }
nsAllowedFileTypes = nsArray; nsAllowedFileTypes = nsArray;
} }
@@ -93,26 +94,27 @@ JNIEXPORT jobjectArray JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_
canChooseFiles = true; canChooseFiles = true;
openDialog.canChooseFiles = canChooseFiles; openDialog.canChooseFiles = canChooseFiles;
openDialog.canChooseDirectories = canChooseDirectories; openDialog.canChooseDirectories = canChooseDirectories;
if( isOptionSet( FC_resolvesAliases_NO ) )
openDialog.resolvesAliases = NO; if( isOptionSetOrClear( FC_resolvesAliases ) )
if( isOptionSet( FC_allowsMultipleSelection ) ) openDialog.resolvesAliases = isOptionSet( FC_resolvesAliases );
openDialog.allowsMultipleSelection = YES; if( isOptionSetOrClear( FC_allowsMultipleSelection ) )
openDialog.allowsMultipleSelection = isOptionSet( FC_allowsMultipleSelection );
} }
if( isYesOrNoOptionSet( FC_showsTagField ) ) if( isOptionSetOrClear( FC_showsTagField ) )
dialog.showsTagField = isOptionSet( FC_showsTagField_YES ); dialog.showsTagField = isOptionSet( FC_showsTagField );
if( isYesOrNoOptionSet( FC_canCreateDirectories ) ) if( isOptionSetOrClear( FC_canCreateDirectories ) )
dialog.canCreateDirectories = isOptionSet( FC_canCreateDirectories_YES ); dialog.canCreateDirectories = isOptionSet( FC_canCreateDirectories );
if( isOptionSet( FC_canSelectHiddenExtension ) ) if( isOptionSetOrClear( FC_canSelectHiddenExtension ) )
dialog.canSelectHiddenExtension = YES; dialog.canSelectHiddenExtension = isOptionSet( FC_canSelectHiddenExtension );
if( isOptionSet( FC_showsHiddenFiles) ) if( isOptionSetOrClear( FC_showsHiddenFiles) )
dialog.showsHiddenFiles = YES; dialog.showsHiddenFiles = isOptionSet( FC_showsHiddenFiles);
if( isOptionSet( FC_extensionHidden ) ) if( isOptionSetOrClear( FC_extensionHidden ) )
dialog.extensionHidden = YES; dialog.extensionHidden = isOptionSet( FC_extensionHidden );
if( isOptionSet( FC_allowsOtherFileTypes ) ) if( isOptionSetOrClear( FC_allowsOtherFileTypes ) )
dialog.allowsOtherFileTypes = YES; dialog.allowsOtherFileTypes = isOptionSet( FC_allowsOtherFileTypes );
if( isOptionSet( FC_treatsFilePackagesAsDirectories ) ) if( isOptionSetOrClear( FC_treatsFilePackagesAsDirectories ) )
dialog.treatsFilePackagesAsDirectories = YES; dialog.treatsFilePackagesAsDirectories = isOptionSet( FC_treatsFilePackagesAsDirectories );
// use deprecated allowedFileTypes instead of newer allowedContentTypes (since macOS 11+) // use deprecated allowedFileTypes instead of newer allowedContentTypes (since macOS 11+)
// to support older macOS versions 10.14+ and because of some problems with allowedContentTypes: // to support older macOS versions 10.14+ and because of some problems with allowedContentTypes:

View File

@@ -26,6 +26,7 @@ import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener; import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener; import java.awt.event.WindowStateListener;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import javax.swing.*; import javax.swing.*;
import com.formdev.flatlaf.extras.components.*; import com.formdev.flatlaf.extras.components.*;
import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox.State; import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox.State;
@@ -52,6 +53,11 @@ public class FlatMacOSFileChooserTest
} }
SwingUtilities.invokeLater( () -> { SwingUtilities.invokeLater( () -> {
if( !FlatNativeMacLibrary.isLoaded() ) {
JOptionPane.showMessageDialog( null, "FlatLaf native library not loaded" );
return;
}
FlatTestFrame frame = FlatTestFrame.create( args, "FlatMacOSFileChooserTest" ); FlatTestFrame frame = FlatTestFrame.create( args, "FlatMacOSFileChooserTest" );
addListeners( frame ); addListeners( frame );
frame.showFrame( FlatMacOSFileChooserTest::new ); frame.showFrame( FlatMacOSFileChooserTest::new );
@@ -85,37 +91,25 @@ public class FlatMacOSFileChooserTest
String nameFieldLabel = n( nameFieldLabelField.getText() ); String nameFieldLabel = n( nameFieldLabelField.getText() );
String nameFieldStringValue = n( nameFieldStringValueField.getText() ); String nameFieldStringValue = n( nameFieldStringValueField.getText() );
String directoryURL = n( directoryURLField.getText() ); String directoryURL = n( directoryURLField.getText() );
int options = 0; AtomicInteger optionsSet = new AtomicInteger();
AtomicInteger optionsClear = new AtomicInteger();
// NSOpenPanel // NSOpenPanel
if( canChooseFilesCheckBox.isSelected() ) if( canChooseFilesCheckBox.isSelected() )
options |= FC_canChooseFiles; optionsSet.set( optionsSet.get() | FC_canChooseFiles );
if( canChooseDirectoriesCheckBox.isSelected() ) if( canChooseDirectoriesCheckBox.isSelected() )
options |= FC_canChooseDirectories; optionsSet.set( optionsSet.get() | FC_canChooseDirectories );
if( !resolvesAliasesCheckBox.isSelected() ) o( FC_resolvesAliases, resolvesAliasesCheckBox, optionsSet, optionsClear );
options |= FC_resolvesAliases_NO; o( FC_allowsMultipleSelection, allowsMultipleSelectionCheckBox, optionsSet, optionsClear );
if( allowsMultipleSelectionCheckBox.isSelected() )
options |= FC_allowsMultipleSelection;
// NSSavePanel // NSSavePanel
if( showsTagFieldCheckBox.getState() == State.SELECTED ) o( FC_showsTagField, showsTagFieldCheckBox, optionsSet, optionsClear );
options |= FC_showsTagField_YES; o( FC_canCreateDirectories, canCreateDirectoriesCheckBox, optionsSet, optionsClear );
else if( showsTagFieldCheckBox.getState() == State.UNSELECTED ) o( FC_canSelectHiddenExtension, canSelectHiddenExtensionCheckBox, optionsSet, optionsClear );
options |= FC_showsTagField_NO; o( FC_showsHiddenFiles, showsHiddenFilesCheckBox, optionsSet, optionsClear );
if( canCreateDirectoriesCheckBox.getState() == State.SELECTED ) o( FC_extensionHidden, extensionHiddenCheckBox, optionsSet, optionsClear );
options |= FC_canCreateDirectories_YES; o( FC_allowsOtherFileTypes, allowsOtherFileTypesCheckBox, optionsSet, optionsClear );
else if( canCreateDirectoriesCheckBox.getState() == State.UNSELECTED ) o( FC_treatsFilePackagesAsDirectories, treatsFilePackagesAsDirectoriesCheckBox, optionsSet, optionsClear );
options |= FC_canCreateDirectories_NO;
if( canSelectHiddenExtensionCheckBox.isSelected() )
options |= FC_canSelectHiddenExtension;
if( showsHiddenFilesCheckBox.isSelected() )
options |= FC_showsHiddenFiles;
if( extensionHiddenCheckBox.isSelected() )
options |= FC_extensionHidden;
if( allowsOtherFileTypesCheckBox.isSelected() )
options |= FC_allowsOtherFileTypes;
if( treatsFilePackagesAsDirectoriesCheckBox.isSelected() )
options |= FC_treatsFilePackagesAsDirectories;
String allowedFileTypesStr = n( allowedFileTypesField.getText() ); String allowedFileTypesStr = n( allowedFileTypesField.getText() );
String[] allowedFileTypes = {}; String[] allowedFileTypes = {};
@@ -124,17 +118,18 @@ public class FlatMacOSFileChooserTest
if( direct ) { if( direct ) {
String[] files = FlatNativeMacLibrary.showFileChooser( open, title, prompt, message, String[] files = FlatNativeMacLibrary.showFileChooser( open, title, prompt, message,
nameFieldLabel, nameFieldStringValue, directoryURL, options, allowedFileTypes ); nameFieldLabel, nameFieldStringValue, directoryURL,
optionsSet.get(), optionsClear.get(), allowedFileTypes );
filesField.setText( (files != null) ? Arrays.toString( files ).replace( ',', '\n' ) : "null" ); filesField.setText( (files != null) ? Arrays.toString( files ).replace( ',', '\n' ) : "null" );
} else { } else {
SecondaryLoop secondaryLoop = Toolkit.getDefaultToolkit().getSystemEventQueue().createSecondaryLoop(); SecondaryLoop secondaryLoop = Toolkit.getDefaultToolkit().getSystemEventQueue().createSecondaryLoop();
int options2 = options;
String[] allowedFileTypes2 = allowedFileTypes; String[] allowedFileTypes2 = allowedFileTypes;
new Thread( () -> { new Thread( () -> {
String[] files = FlatNativeMacLibrary.showFileChooser( open, title, prompt, message, String[] files = FlatNativeMacLibrary.showFileChooser( open, title, prompt, message,
nameFieldLabel, nameFieldStringValue, directoryURL, options2, allowedFileTypes2 ); nameFieldLabel, nameFieldStringValue, directoryURL,
optionsSet.get(), optionsClear.get(), allowedFileTypes2 );
System.out.println( " secondaryLoop.exit() returned " + secondaryLoop.exit() ); System.out.println( " secondaryLoop.exit() returned " + secondaryLoop.exit() );
@@ -152,6 +147,13 @@ public class FlatMacOSFileChooserTest
return !s.isEmpty() ? s : null; return !s.isEmpty() ? s : null;
} }
private static void o( int option, FlatTriStateCheckBox checkBox, AtomicInteger optionsSet, AtomicInteger optionsClear ) {
if( checkBox.getState() == State.SELECTED )
optionsSet.set( optionsSet.get() | option );
else if( checkBox.getState() == State.UNSELECTED )
optionsClear.set( optionsClear.get() | option );
}
private static void addListeners( Window w ) { private static void addListeners( Window w ) {
w.addWindowListener( new WindowListener() { w.addWindowListener( new WindowListener() {
@Override @Override
@@ -216,16 +218,16 @@ public class FlatMacOSFileChooserTest
options1Label = new JLabel(); options1Label = new JLabel();
canChooseFilesCheckBox = new JCheckBox(); canChooseFilesCheckBox = new JCheckBox();
canChooseDirectoriesCheckBox = new JCheckBox(); canChooseDirectoriesCheckBox = new JCheckBox();
resolvesAliasesCheckBox = new JCheckBox(); resolvesAliasesCheckBox = new FlatTriStateCheckBox();
allowsMultipleSelectionCheckBox = new JCheckBox(); allowsMultipleSelectionCheckBox = new FlatTriStateCheckBox();
options2Label = new JLabel(); options2Label = new JLabel();
showsTagFieldCheckBox = new FlatTriStateCheckBox(); showsTagFieldCheckBox = new FlatTriStateCheckBox();
canCreateDirectoriesCheckBox = new FlatTriStateCheckBox(); canCreateDirectoriesCheckBox = new FlatTriStateCheckBox();
canSelectHiddenExtensionCheckBox = new JCheckBox(); canSelectHiddenExtensionCheckBox = new FlatTriStateCheckBox();
showsHiddenFilesCheckBox = new JCheckBox(); showsHiddenFilesCheckBox = new FlatTriStateCheckBox();
extensionHiddenCheckBox = new JCheckBox(); extensionHiddenCheckBox = new FlatTriStateCheckBox();
allowsOtherFileTypesCheckBox = new JCheckBox(); allowsOtherFileTypesCheckBox = new FlatTriStateCheckBox();
treatsFilePackagesAsDirectoriesCheckBox = new JCheckBox(); treatsFilePackagesAsDirectoriesCheckBox = new FlatTriStateCheckBox();
promptLabel = new JLabel(); promptLabel = new JLabel();
promptField = new JTextField(); promptField = new JTextField();
messageLabel = new JLabel(); messageLabel = new JLabel();
@@ -305,7 +307,7 @@ public class FlatMacOSFileChooserTest
//---- resolvesAliasesCheckBox ---- //---- resolvesAliasesCheckBox ----
resolvesAliasesCheckBox.setText("resolvesAliases"); resolvesAliasesCheckBox.setText("resolvesAliases");
resolvesAliasesCheckBox.setSelected(true); resolvesAliasesCheckBox.setState(FlatTriStateCheckBox.State.SELECTED);
panel1.add(resolvesAliasesCheckBox, "cell 0 3"); panel1.add(resolvesAliasesCheckBox, "cell 0 3");
//---- allowsMultipleSelectionCheckBox ---- //---- allowsMultipleSelectionCheckBox ----
@@ -414,16 +416,16 @@ public class FlatMacOSFileChooserTest
private JLabel options1Label; private JLabel options1Label;
private JCheckBox canChooseFilesCheckBox; private JCheckBox canChooseFilesCheckBox;
private JCheckBox canChooseDirectoriesCheckBox; private JCheckBox canChooseDirectoriesCheckBox;
private JCheckBox resolvesAliasesCheckBox; private FlatTriStateCheckBox resolvesAliasesCheckBox;
private JCheckBox allowsMultipleSelectionCheckBox; private FlatTriStateCheckBox allowsMultipleSelectionCheckBox;
private JLabel options2Label; private JLabel options2Label;
private FlatTriStateCheckBox showsTagFieldCheckBox; private FlatTriStateCheckBox showsTagFieldCheckBox;
private FlatTriStateCheckBox canCreateDirectoriesCheckBox; private FlatTriStateCheckBox canCreateDirectoriesCheckBox;
private JCheckBox canSelectHiddenExtensionCheckBox; private FlatTriStateCheckBox canSelectHiddenExtensionCheckBox;
private JCheckBox showsHiddenFilesCheckBox; private FlatTriStateCheckBox showsHiddenFilesCheckBox;
private JCheckBox extensionHiddenCheckBox; private FlatTriStateCheckBox extensionHiddenCheckBox;
private JCheckBox allowsOtherFileTypesCheckBox; private FlatTriStateCheckBox allowsOtherFileTypesCheckBox;
private JCheckBox treatsFilePackagesAsDirectoriesCheckBox; private FlatTriStateCheckBox treatsFilePackagesAsDirectoriesCheckBox;
private JLabel promptLabel; private JLabel promptLabel;
private JTextField promptField; private JTextField promptField;
private JLabel messageLabel; private JLabel messageLabel;

View File

@@ -45,14 +45,14 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2" "value": "cell 0 2"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "resolvesAliasesCheckBox" name: "resolvesAliasesCheckBox"
"text": "resolvesAliases" "text": "resolvesAliases"
"selected": true "state": enum com.formdev.flatlaf.extras.components.FlatTriStateCheckBox$State SELECTED
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3" "value": "cell 0 3"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "allowsMultipleSelectionCheckBox" name: "allowsMultipleSelectionCheckBox"
"text": "allowsMultipleSelection" "text": "allowsMultipleSelection"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -76,31 +76,31 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 7" "value": "cell 0 7"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "canSelectHiddenExtensionCheckBox" name: "canSelectHiddenExtensionCheckBox"
"text": "canSelectHiddenExtension" "text": "canSelectHiddenExtension"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 8" "value": "cell 0 8"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "showsHiddenFilesCheckBox" name: "showsHiddenFilesCheckBox"
"text": "showsHiddenFiles" "text": "showsHiddenFiles"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 9" "value": "cell 0 9"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "extensionHiddenCheckBox" name: "extensionHiddenCheckBox"
"text": "extensionHidden" "text": "extensionHidden"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 10" "value": "cell 0 10"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "allowsOtherFileTypesCheckBox" name: "allowsOtherFileTypesCheckBox"
"text": "allowsOtherFileTypes" "text": "allowsOtherFileTypes"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 11" "value": "cell 0 11"
} ) } )
add( new FormComponent( "javax.swing.JCheckBox" ) { add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "treatsFilePackagesAsDirectoriesCheckBox" name: "treatsFilePackagesAsDirectoriesCheckBox"
"text": "treatsFilePackagesAsDirectories" "text": "treatsFilePackagesAsDirectories"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {