JAL-3048 refactored export settings to bean+dialog with callbacks - basically works...
[jalview.git] / src / jalview / io / HTMLOutput.java
index bf8c431..3a7b441 100644 (file)
 package jalview.io;
 
 import jalview.api.AlignExportSettingI;
+import jalview.datamodel.AlignExportSettingBeanI;
 import jalview.datamodel.AlignmentExportData;
 import jalview.exceptions.NoFileSelectedException;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.IProgressIndicator;
 import jalview.util.MessageManager;
 
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -53,20 +56,24 @@ public abstract class HTMLOutput implements Runnable
     }
   }
 
+  String _bioJson=null;
   public String getBioJSONData()
   {
-    return getBioJSONData(null);
+    if (_bioJson==null) {
+      getBioJSONData(null);
+    }
+    return _bioJson;
   }
 
-  public String getBioJSONData(AlignExportSettingI exportSettings)
+  public void getBioJSONData(AlignExportSettingBeanI exportSettings)
   {
     if (!isEmbedData())
     {
-      return null;
+      return;
     }
     if (exportSettings == null)
     {
-      exportSettings = new AlignExportSettingI()
+      exportSettings = new AlignExportSettingBeanI()
       {
         @Override
         public boolean isExportHiddenSequences()
@@ -103,17 +110,30 @@ public abstract class HTMLOutput implements Runnable
         {
           return false;
         }
+        
       };
     }
-    AlignmentExportData exportData = jalview.gui.AlignFrame
-            .getAlignmentForExport(FileFormat.Json, ap.getAlignViewport(),
+    AlignExportSettingI exportDataSettings = jalview.gui.AlignFrame
+            .getAlignmentForExport(FileFormat.Json, ap,
                     exportSettings);
-    String bioJSON = new FormatAdapter(ap, exportData.getSettings())
-            .formatSequences(FileFormat.Json, exportData.getAlignment(),
-                    exportData.getOmitHidden(),
-                    exportData.getStartEndPostions(), ap.getAlignViewport()
-                            .getAlignment().getHiddenColumns());
-    return bioJSON;
+    exportDataSettings.addActionListener(new ActionListener()
+    {
+      
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        AlignmentExportData exportData = exportDataSettings.getAlignExportData();
+        _bioJson = new FormatAdapter(ap, exportData.getSettings())
+                .formatSequences(FileFormat.Json, exportData.getAlignment(),
+                        exportData.getOmitHidden(),
+                        exportData.getStartEndPostions(), ap.getAlignViewport()
+                                .getAlignment().getHiddenColumns());
+        
+      }
+    
+      
+    });
+    exportDataSettings.doShowSettings();
   }
 
   /**