/*
* TreeViewer.java
*
* Copyright (C) 2006-2014 Andrew Rambaut
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package figtree.treeviewer;
import figtree.treeviewer.painters.*;
import jebl.evolution.graphs.Node;
import jebl.evolution.trees.*;
import figtree.treeviewer.decorators.Decorator;
import figtree.treeviewer.treelayouts.TreeLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.print.Printable;
import java.util.Collection;
import java.util.Set;
import jam.panels.StatusProvider;
/**
* @author Andrew Rambaut
* @version $Id$
*
* $HeadURL$
*
* $LastChangedBy$
* $LastChangedDate$
* $LastChangedRevision$
*/
public abstract class TreeViewer extends JPanel implements Printable {
public abstract void setTrees(Collection<? extends Tree> trees);
public abstract java.util.List<Tree> getTrees();
public abstract Tree getCurrentTree();
public abstract int getCurrentTreeIndex();
public abstract int getTreeCount();
public abstract StatusProvider getStatusProvider();
public abstract void showTree(int index);
public abstract void setTreeLayout(TreeLayout treeLayout);
public abstract void setZoom(double zoom);
public abstract void setVerticalExpansion(double verticalExpansion);
public abstract boolean verticalExpansionAllowed();
public abstract void setTimeScale(TimeScale timeScale);
public abstract boolean hasSelection();
public abstract Set<Node> getSelectedNodes();
public abstract Set<Node> getSelectedTips();
public abstract void selectTaxa(String attributeName, TextSearchType searchType, String searchString, boolean caseSensitive);
public abstract void selectNodes(String attributeName, TextSearchType searchType, String searchString, boolean caseSensitive);
public abstract void selectTaxa(String attributeName, NumberSearchType searchType, Number searchValue);
public abstract void selectNodes(String attributeName, NumberSearchType searchType, Number searchValue);
public abstract void selectTaxa(Collection<String> taxonNames);
public abstract void collapseSelectedNodes();
public abstract void annotateSelectedNodes(String name, Object value);
public abstract void annotateSelectedTips(String name, Object value);
public abstract void selectAll();
public abstract void clearSelectedTaxa();
public abstract void addTreeSelectionListener(TreeSelectionListener treeSelectionListener);
public abstract void removeTreeSelectionListener(TreeSelectionListener treeSelectionListener);
public abstract void setSelectionMode(TreePaneSelector.SelectionMode selectionMode);
public abstract void setDragMode(TreePaneSelector.DragMode dragMode);
public abstract void setTipLabelPainter(LabelPainter<Node> tipLabelPainter);
public abstract void setNodeLabelPainter(LabelPainter<Node> nodeLabelPainter);
public abstract void setNodeBarPainter(NodeBarPainter nodeBarPainter);
public abstract void setNodeShapePainter(NodeShapePainter nodeShapePainter);
public abstract void setBranchLabelPainter(LabelPainter<Node> branchLabelPainter);
public abstract void addScalePainter(ScalePainter scalePainter);
public abstract void removeScalePainter(ScalePainter scalePainter);
public abstract void setScaleGridPainter(ScaleGridPainter scaleGridPainter);
public abstract void setLegendPainter(LegendPainter legendPainter);
public abstract void setBranchDecorator(Decorator branchDecorator, boolean isGradient);
public abstract void setBranchColouringDecorator(String branchColouringAttribute, Decorator branchColouringDecorator);
public abstract void setNodeBackgroundDecorator(Decorator nodeBackgroundDecorator);
public abstract void setHilightingGradient(boolean hilightingGradient);
public abstract void setSelectionColor(Color selectionColor);
public abstract Paint getSelectionPaint();
public abstract void setBranchStroke(BasicStroke branchStroke);
public abstract boolean isTransformBranchesOn();
public abstract TransformedRootedTree.Transform getBranchTransform();
public abstract void setTransformBranchesOn(boolean transformBranchesOn);
public abstract void setBranchTransform(TransformedRootedTree.Transform transform);
public abstract boolean isOrderBranchesOn();
public abstract SortedRootedTree.BranchOrdering getBranchOrdering();
public abstract void setOrderBranchesOn(boolean orderBranchesOn);
public abstract void setBranchOrdering(SortedRootedTree.BranchOrdering branchOrdering);
public abstract boolean isRootingOn();
public abstract TreePane.RootingType getRootingType();
public abstract void setRootingOn(boolean rootingOn);
public abstract void setRootingType(TreePane.RootingType rootingType);
public abstract JComponent getContentPane();
public abstract void addTreeViewerListener(TreeViewerListener listener);
public abstract void removeTreeViewerListener(TreeViewerListener listener);
public enum TextSearchType {
CONTAINS("contains"),
STARTS_WITH("starts with"),
ENDS_WITH("ends with"),
MATCHES("matches"),
REG_EX("regular expression");
TextSearchType(String name) {
this.name = name;
}
public String toString() {
return name;
}
private final String name;
}
public enum NumberSearchType {
EQUALS("equals"),
NOT_EQUALS("doesn't equals"),
GREATER_THAN("greater than"),
EQUALS_OR_GREATER_THAN("equals or greater than"),
LESS_THAN("less than"),
EQUALS_OR_LESS_THAN("equals or less than");
NumberSearchType(String name) {
this.name = name;
}
public String toString() {
return name;
}
private final String name;
}
}