X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=67f111571b4f3aba707d07dc3e478fb70383b56e;hb=3ca62ac09227ae36e2197050e8910382ea30f3fe;hp=81cb51028f4a50e43ff05ae7799b122a4a4986f1;hpb=1d01c9f62d4a2d2070d1296abe79a1e0dc7a3d7d;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 81cb510..67f1115 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -22,13 +22,10 @@ package jalview.io; import jalview.bin.Cache; -import jalview.bin.Jalview; import jalview.gui.JvOptionPane; import jalview.util.MessageManager; import jalview.util.Platform; -import jalview.util.dialogrunner.DialogRunner; import jalview.util.dialogrunner.DialogRunnerI; -import jalview.util.dialogrunner.RunResponse; import java.awt.Component; import java.awt.Dimension; @@ -40,7 +37,9 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; import java.util.Vector; @@ -66,7 +65,7 @@ public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, { private static final long serialVersionUID = 1L; - private DialogRunnerI runner = new DialogRunner(); + private Map callbacks = new HashMap<>(); File selectedFile = null; @@ -192,11 +191,15 @@ public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, @Override public int showOpenDialog(Component parent) { - // runner.resetResponses(); int value = super.showOpenDialog(this); - if (!Jalview.isJS()) + + if (!Platform.isJS()) { - runner.handleResponse(value); + /* + * code here is not run in JalviewJS, instead + * propertyChange() is called for dialog action + */ + handleResponse(value); } return value; } @@ -466,7 +469,7 @@ public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, layout.putConstraint(SpringLayout.NORTH, scroller, 5, SpringLayout.NORTH, this); - if (Platform.isAMac()) + if (Platform.isAMacAndNotJS()) { scroller.setPreferredSize(new Dimension(500, 100)); } @@ -492,9 +495,27 @@ public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, } @Override - public DialogRunnerI addResponse(Object response, RunResponse action) + public DialogRunnerI setResponseHandler(Object response, Runnable action) { - return runner.addResponse(response, action); + callbacks.put(response, action); + return this; + } + + @Override + public void handleResponse(Object response) + { + /* + * this test is for NaN in Chrome + */ + if (response != null && !response.equals(response)) + { + return; + } + Runnable action = callbacks.get(response); + if (action != null) + { + action.run(); + } } /** @@ -510,8 +531,11 @@ public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, // TODO other properties need runners... switch (evt.getPropertyName()) { + /* + * property name here matches that used in JFileChooser.js + */ case "SelectedFile": - runner.handleResponse(APPROVE_OPTION); + handleResponse(APPROVE_OPTION); break; } }