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;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;
{
private static final long serialVersionUID = 1L;
- private DialogRunnerI runner = new DialogRunner();
+ private Map<Object, Runnable> callbacks;
File selectedFile = null;
@Override
public int showOpenDialog(Component parent)
{
- // runner.resetResponses();
int value = super.showOpenDialog(this);
- if (!Jalview.isJS())
- {
- runner.handleResponse(value);
- }
+
+ /*
+ * code below here is not reached in JalviewJS, instead
+ * propertyChange() is called for dialog action
+ */
+ handleResponse(value);
return value;
}
}
@Override
- public DialogRunnerI addResponse(Object response, RunResponse action)
+ public DialogRunnerI setResponseHandler(Object response, Runnable action)
+ {
+ callbacks.put(response, action);
+ return this;
+ }
+
+ @Override
+ public void handleResponse(Object response)
{
- return runner.addResponse(response, action);
+ /*
+ * this test is for NaN in Chrome
+ */
+ if (response != null && !response.equals(response))
+ {
+ return;
+ }
+ Runnable action = callbacks.get(response);
+ if (action != null)
+ {
+ action.run();
+ }
}
/**
// 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;
}
}