Don't parse input id, leave it as it is
[jalview.git] / src / jalview / gui / TreePanel.java
index e38e03a..bd619a3 100755 (executable)
@@ -26,19 +26,14 @@ import jalview.io.*;
 \r
 import jalview.jbgui.*;\r
 \r
 \r
 import jalview.jbgui.*;\r
 \r
-import org.jibble.epsgraphics.*;\r
 \r
 import java.awt.*;\r
 import java.awt.event.*;\r
 \r
 import java.awt.*;\r
 import java.awt.event.*;\r
-import java.awt.image.*;\r
 \r
 import java.io.*;\r
 \r
 import java.util.*;\r
 \r
 \r
 import java.io.*;\r
 \r
 import java.util.*;\r
 \r
-import javax.imageio.*;\r
-\r
-import javax.swing.*;\r
 import java.beans.PropertyChangeEvent;\r
 \r
 \r
 import java.beans.PropertyChangeEvent;\r
 \r
 \r
@@ -75,7 +70,7 @@ public class TreePanel extends GTreePanel
       initTreePanel(av, seqVector, type, pwtype, s, e, null);\r
 \r
       // We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default\r
       initTreePanel(av, seqVector, type, pwtype, s, e, null);\r
 \r
       // We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default\r
-      treeCanvas.setShowDistances(true);\r
+      showDistances(true);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -94,6 +89,11 @@ public class TreePanel extends GTreePanel
       initTreePanel(av, seqVector, type, pwtype, 0, seqVector.size(), newtree);\r
     }\r
 \r
       initTreePanel(av, seqVector, type, pwtype, 0, seqVector.size(), newtree);\r
     }\r
 \r
+    public AlignmentI getAlignment()\r
+    {\r
+      return treeCanvas.av.getAlignment();\r
+    }\r
+\r
 \r
     void initTreePanel(AlignViewport av, Vector seqVector, String type,\r
                        String pwtype, int s, int e, NewickFile newTree)\r
 \r
     void initTreePanel(AlignViewport av, Vector seqVector, String type,\r
                        String pwtype, int s, int e, NewickFile newTree)\r
@@ -143,6 +143,14 @@ public class TreePanel extends GTreePanel
       public TreeLoader(NewickFile newtree)\r
       {\r
         this.newtree = newtree;\r
       public TreeLoader(NewickFile newtree)\r
       {\r
         this.newtree = newtree;\r
+        if (newtree != null)\r
+        {\r
+          // Must be outside run(), as Jalview2XML tries to\r
+          // update distance/bootstrap visibility at the same time\r
+          showBootstrap(newtree.HasBootstrap());\r
+          showDistances(newtree.HasDistances());\r
+          showPlaceholders(true);\r
+        }\r
       }\r
 \r
       public void run()\r
       }\r
 \r
       public void run()\r
@@ -155,56 +163,44 @@ public class TreePanel extends GTreePanel
         tree.reCount(tree.getTopNode());\r
         tree.findHeight(tree.getTopNode());\r
         treeCanvas.setTree(tree);\r
         tree.reCount(tree.getTopNode());\r
         tree.findHeight(tree.getTopNode());\r
         treeCanvas.setTree(tree);\r
-        if(newtree!=null)\r
-        {\r
-          treeCanvas.setShowBootstrap(newtree.HasBootstrap());\r
-          treeCanvas.setShowDistances(newtree.HasDistances());\r
-        }\r
-\r
-        setViewStateFromTreeCanvas(treeCanvas);\r
 \r
         treeCanvas.repaint();\r
 \r
         treeCanvas.repaint();\r
-\r
       }\r
       }\r
+\r
     }\r
 \r
     }\r
 \r
+    public void showDistances(boolean b)\r
+    {\r
+      treeCanvas.setShowDistances(b);\r
+      distanceMenu.setSelected(b);\r
+    }\r
 \r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @return DOCUMENT ME!\r
-     */\r
-    public NJTree getTree()\r
+    public void showBootstrap(boolean b)\r
     {\r
     {\r
-        return tree;\r
+      treeCanvas.setShowBootstrap(b);\r
+      bootstrapMenu.setSelected(b);\r
     }\r
 \r
     }\r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @param tree DOCUMENT ME!\r
-     */\r
-    private void setViewStateFromTreeCanvas(TreeCanvas tree)\r
+    public void showPlaceholders(boolean b)\r
     {\r
     {\r
-        // update view menu state from treeCanvas render state\r
-        distanceMenu.setSelected(tree.showDistances);\r
-        bootstrapMenu.setSelected(tree.showBootstrap);\r
-        placeholdersMenu.setSelected(tree.markPlaceholders);\r
+      placeholdersMenu.setState(b);\r
+      treeCanvas.setMarkPlaceholders(b);\r
     }\r
 \r
     }\r
 \r
+\r
+\r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
     /**\r
      * DOCUMENT ME!\r
      *\r
-     * @param tree DOCUMENT ME!\r
+     * @return DOCUMENT ME!\r
      */\r
      */\r
-    private void setTreeCanvasFromViewState(TreeCanvas tree)\r
+    public NJTree getTree()\r
     {\r
     {\r
-        // update view menu state from treeCanvas render state\r
-        tree.showDistances = distanceMenu.isSelected();\r
-        tree.showBootstrap = bootstrapMenu.isSelected();\r
-        tree.markPlaceholders = placeholdersMenu.isSelected();\r
+        return tree;\r
     }\r
 \r
     }\r
 \r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
     /**\r
      * DOCUMENT ME!\r
      *\r
@@ -304,33 +300,25 @@ public class TreePanel extends GTreePanel
      *\r
      * @param e DOCUMENT ME!\r
      */\r
      *\r
      * @param e DOCUMENT ME!\r
      */\r
-    public void fontSize_actionPerformed(ActionEvent e)\r
+    public void font_actionPerformed(ActionEvent e)\r
     {\r
         if (treeCanvas == null)\r
         {\r
             return;\r
         }\r
 \r
     {\r
         if (treeCanvas == null)\r
         {\r
             return;\r
         }\r
 \r
-        String size = fontSize.getText().substring(fontSize.getText().indexOf("-") +\r
-                1);\r
-\r
-        Object selection = JOptionPane.showInternalInputDialog(Desktop.desktop,\r
-                "Select font size", "Font size", JOptionPane.QUESTION_MESSAGE,\r
-                null,\r
-                new String[]\r
-                {\r
-                    "1", "2", "4", "6", "8", "10", "12", "14", "16", "18", "20"\r
-                }, "Font Size - " + size);\r
-\r
-        if (selection != null)\r
-        {\r
-            fontSize.setText("Font Size - " + selection);\r
+        new FontChooser(this);\r
+    }\r
 \r
 \r
-            int i = Integer.parseInt(selection.toString());\r
-            treeCanvas.setFontSize(i);\r
-        }\r
+    public Font getTreeFont()\r
+    {\r
+        return treeCanvas.font;\r
+    }\r
 \r
 \r
-        scrollPane.setViewportView(treeCanvas);\r
+    public void setTreeFont(Font font)\r
+    {\r
+      if(treeCanvas!=null)\r
+      treeCanvas.setFont(font);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -363,6 +351,7 @@ public class TreePanel extends GTreePanel
         treeCanvas.setMarkPlaceholders(placeholdersMenu.isSelected());\r
     }\r
 \r
         treeCanvas.setMarkPlaceholders(placeholdersMenu.isSelected());\r
     }\r
 \r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
     /**\r
      * DOCUMENT ME!\r
      *\r
@@ -370,70 +359,7 @@ public class TreePanel extends GTreePanel
      */\r
     public void epsTree_actionPerformed(ActionEvent e)\r
     {\r
      */\r
     public void epsTree_actionPerformed(ActionEvent e)\r
     {\r
-      boolean accurateText = true;\r
-\r
-      String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING",\r
-          "Prompt each time");\r
-\r
-    // If we need to prompt, and if the GUI is visible then\r
-    // Prompt for EPS rendering style\r
-      if (renderStyle.equalsIgnoreCase("Prompt each time")\r
-          && !\r
-          (System.getProperty("java.awt.headless") != null\r
-           && System.getProperty("java.awt.headless").equals("true")))\r
-      {\r
-        EPSOptions eps = new EPSOptions();\r
-        renderStyle = eps.getValue();\r
-\r
-        if (renderStyle==null || eps.cancelled)\r
-          return;\r
-\r
-\r
-      }\r
-\r
-      if (renderStyle.equalsIgnoreCase("text"))\r
-      {\r
-        accurateText = false;\r
-      }\r
-\r
-        int width = treeCanvas.getWidth();\r
-        int height = treeCanvas.getHeight();\r
-\r
-        try\r
-        {\r
-            jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(jalview.bin.Cache.getProperty(\r
-                        "LAST_DIRECTORY"), new String[] { "eps" },\r
-                    new String[] { "Encapsulated Postscript" },\r
-                    "Encapsulated Postscript");\r
-            chooser.setFileView(new jalview.io.JalviewFileView());\r
-            chooser.setDialogTitle("Create EPS file from tree");\r
-            chooser.setToolTipText("Save");\r
-\r
-            int value = chooser.showSaveDialog(this);\r
-\r
-            if (value != jalview.io.JalviewFileChooser.APPROVE_OPTION)\r
-            {\r
-                return;\r
-            }\r
-\r
-            jalview.bin.Cache.setProperty("LAST_DIRECTORY",\r
-                                          chooser.getSelectedFile().getParent());\r
-\r
-            FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
-            EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width,\r
-                                                 height);\r
-\r
-            pg.setAccurateTextMode(accurateText);\r
-\r
-            treeCanvas.draw(pg, width, height);\r
-\r
-            pg.flush();\r
-            pg.close();\r
-        }\r
-        catch (Exception ex)\r
-        {\r
-            ex.printStackTrace();\r
-        }\r
+      makeTreeImage(jalview.util.ImageMaker.EPS);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -443,44 +369,34 @@ public class TreePanel extends GTreePanel
      */\r
     public void pngTree_actionPerformed(ActionEvent e)\r
     {\r
      */\r
     public void pngTree_actionPerformed(ActionEvent e)\r
     {\r
-        int width = treeCanvas.getWidth();\r
-        int height = treeCanvas.getHeight();\r
-\r
-        try\r
-        {\r
-            jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(jalview.bin.Cache.getProperty(\r
-                        "LAST_DIRECTORY"), new String[] { "png" },\r
-                    new String[] { "Portable network graphics" },\r
-                    "Portable network graphics");\r
-\r
-            chooser.setFileView(new jalview.io.JalviewFileView());\r
-            chooser.setDialogTitle("Create PNG image from tree");\r
-            chooser.setToolTipText("Save");\r
-\r
-            int value = chooser.showSaveDialog(this);\r
-\r
-            if (value != jalview.io.JalviewFileChooser.APPROVE_OPTION)\r
-            {\r
-                return;\r
-            }\r
-\r
-            jalview.bin.Cache.setProperty("LAST_DIRECTORY",\r
-                chooser.getSelectedFile().getParent());\r
+       makeTreeImage(jalview.util.ImageMaker.PNG);\r
+    }\r
 \r
 \r
-            FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
+    void makeTreeImage(int type)\r
+    {\r
+      int width = treeCanvas.getWidth();\r
+      int height = treeCanvas.getHeight();\r
 \r
 \r
-            BufferedImage bi = new BufferedImage(width, height,\r
-                    BufferedImage.TYPE_INT_RGB);\r
-            Graphics png = bi.getGraphics();\r
+      jalview.util.ImageMaker im;\r
 \r
 \r
-            treeCanvas.draw(png, width, height);\r
+      if(type == jalview.util.ImageMaker.PNG)\r
+        im = new jalview.util.ImageMaker(this,\r
+                                         jalview.util.ImageMaker.PNG,\r
+                                         "Make PNG image from tree",\r
+                                         width, height,\r
+                                         null, null);\r
+        else\r
+          im = new jalview.util.ImageMaker(this,\r
+                                 jalview.util.ImageMaker.EPS,\r
+                                 "Make EPS file from tree",\r
+                                 width, height,\r
+                                 null, this.getTitle());\r
 \r
 \r
-            ImageIO.write(bi, "png", out);\r
-            out.close();\r
-        }\r
-        catch (Exception ex)\r
-        {\r
-            ex.printStackTrace();\r
-        }\r
+      if(im.getGraphics()!=null)\r
+      {\r
+        treeCanvas.draw(im.getGraphics(), width, height);\r
+        im.writeImage();\r
+      }\r
     }\r
     }\r
+\r
 }\r
 }\r