JAL-3048 refactored Desktop->File->Open to use jalview.utils.dialogrunner.DialogRunner
[jalview.git] / src / jalview / io / JalviewFileChooser.java
index ae6c9eb..65cb603 100755 (executable)
@@ -25,6 +25,8 @@ import jalview.bin.Cache;
 import jalview.gui.JvOptionPane;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
+import jalview.util.dialogrunner.DialogRunnerI;
+import jalview.util.dialogrunner.RunResponse;
 
 import java.awt.Component;
 import java.awt.Dimension;
@@ -58,8 +60,10 @@ import javax.swing.plaf.basic.BasicFileChooserUI;
  *
  */
 public class JalviewFileChooser extends JFileChooser
-        implements PropertyChangeListener
+        implements PropertyChangeListener, DialogRunnerI
 {
+  jalview.util.dialogrunner.DialogRunner<JalviewFileChooser> runner = new jalview.util.dialogrunner.DialogRunner<>(
+          this);
   /**
    * Factory method to return a file chooser that offers readable alignment file
    * formats
@@ -159,25 +163,14 @@ public class JalviewFileChooser extends JFileChooser
     }
   }
 
-  private Runnable theCallback;
-
-  public void setCallback(Runnable callback)
-  {
-    this.theCallback = callback;
-  }
-
-  public Runnable getCallback()
-  {
-    return theCallback;
-  }
-
   @Override
   public void propertyChange(PropertyChangeEvent evt)
   {
+    // TODO other properties need runners...
     switch (evt.getPropertyName())
     {
     case "SelectedFile": 
-      theCallback.run();
+      runner.run(APPROVE_OPTION);
       break;
     }
   }
@@ -197,6 +190,12 @@ public class JalviewFileChooser extends JFileChooser
     return f;
   }
 
+  public void openDialog(Component parent)
+  {
+    int value = showOpenDialog(this);
+    runner.run(value);
+  }
+
   /**
    * 
    * @param formats
@@ -436,4 +435,10 @@ public class JalviewFileChooser extends JFileChooser
 
   }
 
+  @Override
+  public JalviewFileChooser response(RunResponse action)
+  {
+    return runner.response(action);
+  }
+
 }