JAL-1953 2.11.2 with Archeopteryx!
[jalview.git] / src / jalview / ext / archaeopteryx / AptxFrame.java
index e050425..fca6e49 100644 (file)
@@ -5,12 +5,16 @@ import jalview.ext.treeviewer.TreeControlsI;
 import jalview.ext.treeviewer.TreeFrameI;
 import jalview.ext.treeviewer.TreeI;
 import jalview.ext.treeviewer.TreePanelI;
+import jalview.ext.treeviewer.TreeViewerBindingI;
+import jalview.ext.treeviewer.TreeViewerUtils;
 import jalview.gui.Desktop;
-import jalview.gui.EPSOptions;
+import jalview.gui.LineartOptions;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.util.ImageMaker;
 import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.util.ImageMaker.TYPE;
 
 import java.awt.Component;
 import java.awt.Container;
@@ -22,6 +26,7 @@ import java.awt.MenuComponent;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.FileOutputStream;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.accessibility.AccessibleContext;
 import javax.swing.JLayeredPane;
@@ -42,6 +47,8 @@ public class AptxFrame implements TreeFrameI
 {
   private final MainFrame aptxFrame;
 
+  private TreeViewerBindingI viewBinding;
+
   private TreePanelI aptxPanel;
 
   private TreeControlsI aptxControls;
@@ -141,18 +148,58 @@ public class AptxFrame implements TreeFrameI
       else if (menu.getText().contains("View"))
       {
         menu.addSeparator();
+
         JMenuItem sortByTree = new JMenuItem("Sort alignment by tree");
         JMenuItem refreshJalview = new JMenuItem(
                 "Filter alignment to show only currently visible sequences");
+        JMenuItem hideCollapsed = new JMenuItem(
+                "Hide sequences of collapsed nodes");
 
         refreshJalview.setFont(menu.getFont());
+        refreshJalview.addActionListener(new ActionListener() {
+          
+          @Override
+          public void actionPerformed(ActionEvent e) {
+            TreeViewerBindingI bindingManager = TreeViewerUtils
+                    .getActiveTreeViews().get(AptxFrame.this);
+            bindingManager.actionPerformed(e);
+          }
+        });
+                
+        sortByTree.addActionListener(new ActionListener()
+        {
+
+          @Override
+          public void actionPerformed(ActionEvent e)
+          {
+            TreeViewerBindingI bindingManager = TreeViewerUtils
+                    .getActiveTreeViews().get(AptxFrame.this);
+            bindingManager.sortByTree_actionPerformed();
+
+          }
+
+        });
+
+        hideCollapsed.addActionListener(new ActionListener()
+        {
+
+          @Override
+          public void actionPerformed(ActionEvent e)
+          {
+            TreeViewerBindingI bindingManager = TreeViewerUtils
+                    .getActiveTreeViews().get(AptxFrame.this);
+            bindingManager.hideCollapsedSequences_actionPerformed();
+            
+          }
+
+        });
 
         menu.add(sortByTree);
         menu.add(refreshJalview);
+        menu.add(hideCollapsed);
 
         sortByTree.setFont(menu.getFont());
-        refreshJalview
-                .addActionListener(AptxInit.getAllAptxFrames().get(this));
+
 
 
       }
@@ -164,31 +211,72 @@ public class AptxFrame implements TreeFrameI
   public void epsTree_actionPerformed(ActionEvent e)
   {
     boolean accurateText = true;
+    final long messageId = System.currentTimeMillis();
 
     String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING",
             "Prompt each time");
+    if (Platform.isJS())
+    {
+      renderStyle = "Text";
+    }
+
+    AtomicBoolean textSelected = new AtomicBoolean(
+            !"Lineart".equals(renderStyle));
 
     // If we need to prompt, and if the GUI is visible then
     // Prompt for EPS rendering style
     if (renderStyle.equalsIgnoreCase("Prompt each time")
-            && !(System.getProperty("java.awt.headless") != null && System
-                    .getProperty("java.awt.headless").equals("true")))
+            && !Platform.isHeadless())
+    // && !(System.getProperty("java.awt.headless") != null && System
+    // .getProperty("java.awt.headless").equals("true")))
     {
-      EPSOptions eps = new EPSOptions();
-      renderStyle = eps.getValue();
-
-      if (renderStyle == null || eps.cancelled)
+      LineartOptions epsOption = new LineartOptions(TYPE.EPS.getName(),
+              textSelected);
+      epsOption.setResponseAction(1, new Runnable()
       {
-        return;
-      }
+        @Override
+        public void run()
+        {
+          // report canceled
+          // setStatus(MessageManager.formatMessage(
+          // "status.cancelled_image_export_operation",
+          // TYPE.EPS.getName()), messageId);
+        }
+      });
+      epsOption.setResponseAction(0, new Runnable()
+      {
+        @Override
+        public void run()
+        {
+          // TODO Auto-generated method stub
 
-    }
+          String renderStyle = epsOption.getValue();
+
+          if (renderStyle == null)
+          {
+            return;
+          }
+
+          boolean accurateText = true;
+          if (renderStyle.equalsIgnoreCase("text"))
+          {
+            accurateText = false;
+          }
+          doExport(accurateText);
+
+        }
 
-    if (renderStyle.equalsIgnoreCase("text"))
+      });
+      epsOption.showDialog();
+    }
+    else
     {
-      accurateText = false;
+      doExport(accurateText);
     }
+  }
 
+  protected void doExport(boolean accurateText)
+  {
     int width = getTreePanel().getWidth();
     int height = getTreePanel().getHeight();
 
@@ -240,7 +328,7 @@ public class AptxFrame implements TreeFrameI
   }
 
   @Override
-  public void checkMultipleTrees()
+  public void enableMultipleTrees()
   {
     aptxFrame.activateSaveAllIfNeeded();
 
@@ -392,4 +480,31 @@ public class AptxFrame implements TreeFrameI
 
   }
 
+  @Override
+  public TreeViewerBindingI getViewBinding()
+  {
+    return viewBinding;
+  }
+
+  @Override
+  public void setViewBinding(TreeViewerBindingI alignmentBinding)
+  {
+    viewBinding = alignmentBinding;
+  }
+
+
+  @Override
+  public void setMaximumSize(Dimension maximumSize)
+  {
+    aptxFrame.setMaximumSize(maximumSize);
+
+  }
+
+  @Override
+  public void setPreferredSize(Dimension preferredSize)
+  {
+    aptxFrame.setPreferredSize(preferredSize);
+
+  }
+
 }
\ No newline at end of file