-
Notifications
You must be signed in to change notification settings - Fork 6.2k
4834298: JFileChooser.getSelectedFiles() failed with multi-selection and double-click #9996
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
288c597
2403494
92823e0
347af6e
98cf2b7
8788395
a6d536c
c36d137
5a80d75
a7788e4
b0c4ead
7129054
71c936a
1d7f271
c437cdf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,91 @@ | ||
| /* | ||
| * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. | ||
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
| * | ||
| * This code is free software; you can redistribute it and/or modify it | ||
| * under the terms of the GNU General Public License version 2 only, as | ||
| * published by the Free Software Foundation. | ||
| * | ||
| * This code is distributed in the hope that it will be useful, but WITHOUT | ||
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
| * version 2 for more details (a copy is included in the LICENSE file that | ||
| * accompanied this code). | ||
| * | ||
| * You should have received a copy of the GNU General Public License version | ||
| * 2 along with this work; if not, write to the Free Software Foundation, | ||
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
| * | ||
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | ||
| * or visit www.oracle.com if you need additional information or have any | ||
| * questions. | ||
| */ | ||
|
|
||
| import java.awt.Color; | ||
| import java.io.File; | ||
| import javax.swing.JFileChooser; | ||
| import javax.swing.JFrame; | ||
| import javax.swing.JTextArea; | ||
| import javax.swing.SwingUtilities; | ||
|
|
||
| /* | ||
| * @test | ||
| * @bug 4834298 | ||
| * @key headful | ||
| * @requires (os.family == "windows" | os.family == "linux") | ||
| * @summary Test to check if the getSelectedFiles of JFilesChooser | ||
| * returns selectedFiles when Multi-Selection is enabled. | ||
| * @run main/manual MultiSelectionEnabledSelectedFilesTest | ||
| */ | ||
| public class MultiSelectionEnabledSelectedFilesTest { | ||
| private static JFrame frame; | ||
| public static void main(String[] args) throws Exception { | ||
| SwingUtilities.invokeAndWait(new Runnable() { | ||
| public void run() { | ||
| try { | ||
| runTest(); | ||
| } finally { | ||
| frame.dispose(); | ||
| } | ||
| } | ||
| }); | ||
| System.out.println("Test Pass!"); | ||
| } | ||
|
|
||
| static void runTest() { | ||
| //Initialize the components | ||
| String INSTRUCTIONS | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instruction should be updated to specify that we need to use double-click.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated. |
||
| = "Instructions to Test:"+ | ||
| "\n1. Select a valid file using mouse double-click on first "+ | ||
| "dialog."+ | ||
| "\n2. After Selection, first dialog will close and second " + | ||
| "dialog opens with multi-Selection enabled."+ | ||
| "\n3. Select the same file using mouse double-click without " + | ||
| "moving mouse position or selection."+ | ||
| "\n4. If the selected file is updated then getSelectedFiles "+ | ||
| "returns the file selected and test will PASS otherwise test "+ | ||
| "will FAIL"; | ||
|
|
||
| JFileChooser chooser = new JFileChooser(); | ||
| JTextArea textArea = new JTextArea(); | ||
| frame = new JFrame("Test Instructions"); | ||
|
|
||
| textArea.setText(INSTRUCTIONS); | ||
| textArea.setEnabled(false); | ||
| textArea.setDisabledTextColor(Color.black); | ||
| textArea.setBackground(Color.white); | ||
|
|
||
| frame.add(textArea); | ||
| frame.pack(); | ||
| frame.setVisible(true); | ||
|
|
||
| chooser.showOpenDialog(null); | ||
| chooser.setMultiSelectionEnabled(true); | ||
| chooser.showOpenDialog(null); | ||
| File[] files = chooser.getSelectedFiles(); | ||
|
|
||
| if (files.length == 0) { | ||
| throw new RuntimeException("Test Failed since selected files are empty!!"); | ||
| } | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this bug specific to any platform?
Because the test is created to run on all platforms and it doesnt fail in my Mac.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, it doesn't fail in mac. It does fail in windows and linux, so didn't make any os specific. Still I have tested in all platforms and it works fine. The bug was raised as linux specific.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the test doesnt fail in Mac(In my case second dialog doesnt exit and it stays on the screen, which will result in timeout and jtreg error on Mac)?
It looks like fix is not some platform specific change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fix handles Windows and linux platforms, since FilePane.class is involved on mode selection. In Mac its doesn't come thought this path, I guess it handles some other way. The issue doesn't occur on key press also (All platforms), since the path of setting selected files are different for each scenario.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess the dialogue is not not been removed when exception is thrown. Will take a look into it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the product fix that is being done will touch only Linux and Windows(And in Mac it looks like it not exiting properly), we can make this regression test to run only on Linux and Windows using jtreg tag:
@requires (os.family == "windows" | os.family == "linux")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated.