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.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;
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;
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 TreePanelI aptxPanel;
+
+ private TreeControlsI aptxControls;
+
+
+ public AptxFrame(Phylogeny tree, Configuration aptxConfig,
+ String treeTitle)
+ {
+ this(Archaeopteryx.createApplication(tree,
+ aptxConfig,
+ treeTitle));
+
+ }
- private ExternalTreeControlsI aptxControls;
public AptxFrame(MainFrame aptx)
{
+
aptxFrame = aptx;
aptxPanel = new AptxTreePanel(
aptxFrame.getMainPanel().getCurrentTreePanel());
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;
@Override
public void actionPerformed(ActionEvent e)
{
- // TODO Auto-generated method stub
+ epsTree_actionPerformed(e);
}
"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(
+ TreeViewerUtils.getActiveTreeViews().get(this));
+ sortByTree.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
- // TODO Auto-generated method stub
+ TreeViewerUtils.getActiveTreeViews().get(AptxFrame.this)
+ .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();
}
}
@Override
- public ExternalTreeControlsI getTreeControls()
+ public TreeControlsI getTreeControls()
{
return aptxControls;
}