mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 14:00:55 +03:00
System File Chooser: support "approve" callback and system message dialog on Windows and Linux (not yet used in SystemFileChooser
This commit is contained in:
@@ -124,10 +124,20 @@ public class FlatSystemFileChooserLinuxTest
|
||||
}
|
||||
int fileTypeIndex = fileTypeIndexSlider.getValue();
|
||||
|
||||
FlatNativeLinuxLibrary.FileChooserCallback callback = (files, hwndFileDialog) -> {
|
||||
System.out.println( " -- callback " + hwndFileDialog + " " + Arrays.toString( files ) );
|
||||
if( showMessageDialogOnOKCheckBox.isSelected() ) {
|
||||
System.out.println( FlatNativeLinuxLibrary.showMessageDialog( hwndFileDialog,
|
||||
JOptionPane.INFORMATION_MESSAGE,
|
||||
"primary text", "secondary text", 1, "Yes", "No" ) );
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
if( direct ) {
|
||||
String[] files = FlatNativeLinuxLibrary.showFileChooser( owner, open,
|
||||
title, okButtonLabel, currentName, currentFolder,
|
||||
optionsSet.get(), optionsClear.get(), fileTypeIndex, fileTypes );
|
||||
optionsSet.get(), optionsClear.get(), callback, fileTypeIndex, fileTypes );
|
||||
|
||||
filesField.setText( (files != null) ? Arrays.toString( files ).replace( ',', '\n' ) : "null" );
|
||||
} else {
|
||||
@@ -137,7 +147,7 @@ public class FlatSystemFileChooserLinuxTest
|
||||
new Thread( () -> {
|
||||
String[] files = FlatNativeLinuxLibrary.showFileChooser( owner, open,
|
||||
title, okButtonLabel, currentName, currentFolder,
|
||||
optionsSet.get(), optionsClear.get(), fileTypeIndex, fileTypes2 );
|
||||
optionsSet.get(), optionsClear.get(), callback, fileTypeIndex, fileTypes2 );
|
||||
|
||||
System.out.println( " secondaryLoop.exit() returned " + secondaryLoop.exit() );
|
||||
|
||||
@@ -248,6 +258,7 @@ public class FlatSystemFileChooserLinuxTest
|
||||
saveButton = new JButton();
|
||||
openDirectButton = new JButton();
|
||||
saveDirectButton = new JButton();
|
||||
showMessageDialogOnOKCheckBox = new JCheckBox();
|
||||
filesScrollPane = new JScrollPane();
|
||||
filesField = new JTextArea();
|
||||
|
||||
@@ -397,6 +408,10 @@ public class FlatSystemFileChooserLinuxTest
|
||||
saveDirectButton.addActionListener(e -> saveDirect());
|
||||
add(saveDirectButton, "cell 0 7 3 1");
|
||||
|
||||
//---- showMessageDialogOnOKCheckBox ----
|
||||
showMessageDialogOnOKCheckBox.setText("show message dialog on OK");
|
||||
add(showMessageDialogOnOKCheckBox, "cell 0 7 3 1");
|
||||
|
||||
//======== filesScrollPane ========
|
||||
{
|
||||
|
||||
@@ -443,6 +458,7 @@ public class FlatSystemFileChooserLinuxTest
|
||||
private JButton saveButton;
|
||||
private JButton openDirectButton;
|
||||
private JButton saveDirectButton;
|
||||
private JCheckBox showMessageDialogOnOKCheckBox;
|
||||
private JScrollPane filesScrollPane;
|
||||
private JTextArea filesField;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
JFDML JFormDesigner: "8.3" encoding: "UTF-8"
|
||||
JFDML JFormDesigner: "8.2.2.0.9999" Java: "21.0.1" encoding: "UTF-8"
|
||||
|
||||
new FormModel {
|
||||
contentType: "form/swing"
|
||||
@@ -198,6 +198,12 @@ new FormModel {
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 7 3 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||
name: "showMessageDialogOnOKCheckBox"
|
||||
"text": "show message dialog on OK"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 7 3 1"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
||||
name: "filesScrollPane"
|
||||
add( new FormComponent( "javax.swing.JTextArea" ) {
|
||||
|
||||
@@ -139,11 +139,21 @@ public class FlatSystemFileChooserWindowsTest
|
||||
fileTypes = fileTypesStr.trim().split( "[,]+" );
|
||||
int fileTypeIndex = fileTypeIndexSlider.getValue();
|
||||
|
||||
FlatNativeWindowsLibrary.FileChooserCallback callback = (files, hwndFileDialog) -> {
|
||||
System.out.println( " -- callback " + hwndFileDialog + " " + Arrays.toString( files ) );
|
||||
if( showMessageDialogOnOKCheckBox.isSelected() ) {
|
||||
System.out.println( FlatNativeWindowsLibrary.showMessageDialog( hwndFileDialog,
|
||||
"some text", "title",
|
||||
/* MB_ICONINFORMATION */ 0x00000040 | /* MB_YESNO */ 0x00000004 ) );
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
if( direct ) {
|
||||
String[] files = FlatNativeWindowsLibrary.showFileChooser( owner, open,
|
||||
title, okButtonLabel, fileNameLabel, fileName,
|
||||
folder, saveAsItem, defaultFolder, defaultExtension,
|
||||
optionsSet.get(), optionsClear.get(), fileTypeIndex, fileTypes );
|
||||
optionsSet.get(), optionsClear.get(), callback, fileTypeIndex, fileTypes );
|
||||
|
||||
filesField.setText( (files != null) ? Arrays.toString( files ).replace( ',', '\n' ) : "null" );
|
||||
} else {
|
||||
@@ -154,7 +164,7 @@ public class FlatSystemFileChooserWindowsTest
|
||||
String[] files = FlatNativeWindowsLibrary.showFileChooser( owner, open,
|
||||
title, okButtonLabel, fileNameLabel, fileName,
|
||||
folder, saveAsItem, defaultFolder, defaultExtension,
|
||||
optionsSet.get(), optionsClear.get(), fileTypeIndex, fileTypes2 );
|
||||
optionsSet.get(), optionsClear.get(), callback, fileTypeIndex, fileTypes2 );
|
||||
|
||||
System.out.println( " secondaryLoop.exit() returned " + secondaryLoop.exit() );
|
||||
|
||||
@@ -290,6 +300,7 @@ public class FlatSystemFileChooserWindowsTest
|
||||
saveButton = new JButton();
|
||||
openDirectButton = new JButton();
|
||||
saveDirectButton = new JButton();
|
||||
showMessageDialogOnOKCheckBox = new JCheckBox();
|
||||
filesScrollPane = new JScrollPane();
|
||||
filesField = new JTextArea();
|
||||
|
||||
@@ -534,6 +545,10 @@ public class FlatSystemFileChooserWindowsTest
|
||||
saveDirectButton.addActionListener(e -> saveDirect());
|
||||
add(saveDirectButton, "cell 0 11 3 1");
|
||||
|
||||
//---- showMessageDialogOnOKCheckBox ----
|
||||
showMessageDialogOnOKCheckBox.setText("show message dialog on OK");
|
||||
add(showMessageDialogOnOKCheckBox, "cell 0 11 3 1");
|
||||
|
||||
//======== filesScrollPane ========
|
||||
{
|
||||
|
||||
@@ -605,6 +620,7 @@ public class FlatSystemFileChooserWindowsTest
|
||||
private JButton saveButton;
|
||||
private JButton openDirectButton;
|
||||
private JButton saveDirectButton;
|
||||
private JCheckBox showMessageDialogOnOKCheckBox;
|
||||
private JScrollPane filesScrollPane;
|
||||
private JTextArea filesField;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
|
||||
@@ -343,6 +343,12 @@ new FormModel {
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 11 3 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JCheckBox" ) {
|
||||
name: "showMessageDialogsOnOKCheckBox"
|
||||
"text": "show message dialog on OK"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 11 3 1"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
||||
name: "filesScrollPane"
|
||||
add( new FormComponent( "javax.swing.JTextArea" ) {
|
||||
|
||||
Reference in New Issue
Block a user