leaningtech / cheerpj-meta

Run Java 8 applications, libraries, applets, Java Web Start, and Oracle Forms on the web without legacy plugins.
https://labs.leaningtech.com/cheerpj
459 stars 21 forks source link

Unable to select file with java.awt.FileDialog #105

Open oeway opened 4 years ago

oeway commented 4 years ago

I am wondering how should we use java.awtFileDialog, considering the following example (copy and paste to https://javafiddle.leaningtech.com/ to test):

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Button;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JavaFiddle extends Frame {
     FileDialog fc;
     JavaFiddle() {
        super("MainClass");
        setSize(200, 100);

        fc = new FileDialog(this, "Choose a file", FileDialog.LOAD);

        Button b;
        add(b = new Button("Browse...")); // Create and add a Button
        b.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            fc.setVisible(true);
            String fn = fc.getFile();
            if (fn == null)
              System.out.println("You cancelled the choice");
            else
              System.out.println("You chose " + fn);
          }
        });
      }

  public static void main(String[] args) {
      new JavaFiddle().setVisible(true);
  }
}

We can get the following interface:

Screenshot 2020-09-27 at 18 00 49

However, I am not sure how to proceed further since when I select a file, the only option I have is to close the file dialog. What's the correct way to use it?

Ideally, I would like be able to render a hidden dialog with an <input type="file"> element, when setVisible(true) is called, trigger the file dialog by fileInput.click() method. After selection, the file should mounted e.g. under /str (even better if this can be addressed with https://github.com/leaningtech/cheerpj-meta/issues/98 ).

rudosch commented 2 years ago

I'm stuck with the same problem. Are there any news on this issue ?

alexp-sssup commented 2 years ago

Unfortunately no. AWT based application are currently not a priority for us, due to no commercial demand.

If you need support for this for an enterprise environment please get in touch: info@leaningtech.com

rudosch commented 2 years ago

So if I use JFileChooser all will work fine?

alexp-sssup commented 2 years ago

With JFileChooser you will get a proper dialog, but remember that the filesystem is virtualized. You will not see the files on the disk as (of course) the browser does not allow arbitrary access to user's files.

We currently offer workarounds for this browser limitation to commercial users. We plan to eventually provide some form of integrated access to the disk, using modern HTML5 APIs.

rudosch commented 2 years ago

OK, I see. So I could provide some files on the virtual filesystem that could be chosen by JFileChooser? Are there API methods to add files to the virtual file system without doing this in the Java classes?

alexp-sssup commented 2 years ago

Please reads our docs here: https://docs.leaningtech.com/cheerpj/File-System-support

In particular the /str/ section.

rudosch commented 2 years ago

Thanks for you help!