X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fext%2Farchaeopteryx%2FAptxFrame.java;h=92d2da236d4d202ca217ad01f6347d4a198b9642;hb=2c3b0597cfb782c08f8ec3686412fc4975a1dbd3;hp=c105c25a0a84d9b7a1384196592fda4f30d29d70;hpb=4b3a91d41752dd07a70daa0e21c28564453dd8b7;p=jalview.git diff --git a/src/jalview/ext/archaeopteryx/AptxFrame.java b/src/jalview/ext/archaeopteryx/AptxFrame.java index c105c25..92d2da2 100644 --- a/src/jalview/ext/archaeopteryx/AptxFrame.java +++ b/src/jalview/ext/archaeopteryx/AptxFrame.java @@ -1,10 +1,18 @@ package jalview.ext.archaeopteryx; -import jalview.ext.treeviewer.ExternalTreeControlsI; -import jalview.ext.treeviewer.ExternalTreeFrame; -import jalview.ext.treeviewer.ExternalTreeI; -import jalview.ext.treeviewer.ExternalTreePanel; +import jalview.bin.Cache; +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.io.JalviewFileChooser; +import jalview.io.JalviewFileView; +import jalview.util.ImageMaker; +import jalview.util.MessageManager; import java.awt.Component; import java.awt.Container; @@ -15,6 +23,7 @@ import java.awt.Image; import java.awt.MenuComponent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.FileOutputStream; import javax.accessibility.AccessibleContext; import javax.swing.JLayeredPane; @@ -25,18 +34,36 @@ import javax.swing.JRootPane; import javax.swing.JSeparator; import javax.swing.event.InternalFrameListener; +import org.forester.archaeopteryx.Archaeopteryx; +import org.forester.archaeopteryx.Configuration; import org.forester.archaeopteryx.MainFrame; +import org.forester.phylogeny.Phylogeny; +import org.jibble.epsgraphics.EpsGraphics2D; -public class AptxFrame implements ExternalTreeFrame +public class AptxFrame implements TreeFrameI { private final MainFrame aptxFrame; - private ExternalTreePanel aptxPanel; - private ExternalTreeControlsI aptxControls; + + private TreePanelI aptxPanel; + + private TreeControlsI aptxControls; + + + public AptxFrame(Phylogeny tree, Configuration aptxConfig, + String treeTitle) + { + this(Archaeopteryx.createApplication(tree, + aptxConfig, + treeTitle)); + + } + public AptxFrame(MainFrame aptx) { + aptxFrame = aptx; aptxPanel = new AptxTreePanel( aptxFrame.getMainPanel().getCurrentTreePanel()); @@ -45,15 +72,16 @@ public class AptxFrame implements ExternalTreeFrame adaptAptxGui(aptxFrame); } + /** * Hides certain redundant Archaeopteryx GUI elements such as the menu items * for reading in trees and adds extra items related to Jalview such as the - * tree sorting item. + * tree sorting menu item. * * * @param aptxFrame */ - private void adaptAptxGui(MainFrame aptxFrame) + protected void adaptAptxGui(MainFrame aptxFrame) { JMenuBar frameBar = aptxFrame.getJMenuBar(); boolean epsAdded = false; @@ -98,7 +126,7 @@ public class AptxFrame implements ExternalTreeFrame @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + epsTree_actionPerformed(e); } @@ -122,38 +150,117 @@ public class AptxFrame implements ExternalTreeFrame "Filter alignment to show only currently visible sequences"); refreshJalview.setFont(menu.getFont()); - - menu.add(sortByTree); - menu.add(refreshJalview); - - sortByTree.setFont(menu.getFont()); - refreshJalview.addActionListener(new ActionListener() + 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) { - // TODO Auto-generated method stub + TreeViewerBindingI bindingManager = TreeViewerUtils + .getActiveTreeViews().get(AptxFrame.this); + bindingManager.sortByTree_actionPerformed(); } }); + menu.add(sortByTree); + menu.add(refreshJalview); + + sortByTree.setFont(menu.getFont()); + + } } - aptxFrame.validate(); + // aptxFrame.validate(); } + public void epsTree_actionPerformed(ActionEvent e) + { + boolean accurateText = true; + + String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING", + "Prompt each time"); + + // 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"))) + { + EPSOptions eps = new EPSOptions(); + renderStyle = eps.getValue(); + + if (renderStyle == null || eps.cancelled) + { + return; + } + + } + + if (renderStyle.equalsIgnoreCase("text")) + { + accurateText = false; + } + + int width = getTreePanel().getWidth(); + int height = getTreePanel().getHeight(); + + try + { + JalviewFileChooser chooser = new JalviewFileChooser( + ImageMaker.EPS_EXTENSION, ImageMaker.EPS_EXTENSION); + chooser.setFileView(new JalviewFileView()); + chooser.setDialogTitle( + MessageManager.getString("label.create_eps_from_tree")); + chooser.setToolTipText(MessageManager.getString("action.save")); + + int value = chooser.showSaveDialog(aptxFrame); + + if (value != JalviewFileChooser.APPROVE_OPTION) + { + return; + } + + Cache.setProperty("LAST_DIRECTORY", + chooser.getSelectedFile().getParent()); + + FileOutputStream out = new FileOutputStream( + chooser.getSelectedFile()); + EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width, + height); + + pg.setAccurateTextMode(accurateText); + + getTreePanel().paintToFile(pg, width, height); + + pg.flush(); + pg.close(); + } catch (Exception ex) + { + ex.printStackTrace(); + } + } @Override - public ExternalTreePanel getTreePanel() + public TreePanelI getTreePanel() { return aptxPanel; } @Override - public ExternalTreeI getTree() + public TreeI getTree() { return aptxPanel.getTree(); } @@ -172,7 +279,7 @@ public class AptxFrame implements ExternalTreeFrame } @Override - public ExternalTreeControlsI getTreeControls() + public TreeControlsI getTreeControls() { return aptxControls; }