/* * LabelPainter.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.painters; import com.sun.tools.corba.se.idl.InterfaceEntry; import jebl.evolution.trees.Tree; import jebl.util.Attributable; import java.awt.*; import java.text.NumberFormat; import java.util.Collection; import java.util.Set; import figtree.treeviewer.decorators.Decorator; /** * @author Andrew Rambaut * @version $Id$ * * $HeadURL$ * * $LastChangedBy$ * $LastChangedDate$ * $LastChangedRevision$ */ public abstract class LabelPainter<T> extends AbstractPainter<T> { public static final String NAMES = "Names"; public static final String NODE_AGES = "Node ages"; public static final String NODE_HEIGHTS = "Node heights (raw)"; public static final String BRANCH_TIMES = "Branch times"; public static final String BRANCH_LENGTHS = "Branch lengths (raw)"; public enum PainterIntent { NODE, BRANCH, TIP, RANGE }; protected LabelPainter(PainterIntent intent) { this.intent = intent; } // Abstract public abstract String getDisplayAttribute(); public abstract void setDisplayAttribute(String displayAttribute); public abstract void setTextDecorator(Decorator textDecorator); // Getters public Paint getForeground() { return foreground; } public Paint getBackground() { return background; } public Paint getBorderPaint() { return borderPaint; } public Stroke getBorderStroke() { return borderStroke; } public Font getFont() { return font; } public NumberFormat getNumberFormat() { return numberFormat; } public boolean isVisible() { return visible; } // Setters public void setBackground(Paint background) { this.background = background; firePainterChanged(); } public void setBorder(Paint borderPaint, Stroke borderStroke) { this.borderPaint = borderPaint; this.borderStroke = borderStroke; firePainterChanged(); } public void setFont(Font font) { this.font = font; firePainterChanged(); } public void setForeground(Paint foreground) { this.foreground = foreground; firePainterChanged(); } public void setNumberFormat(NumberFormat numberFormat) { this.numberFormat = numberFormat; firePainterChanged(); } public void setVisible(boolean visible) { this.visible = visible; firePainterChanged(); } public PainterIntent getIntent() { return intent; } private Paint foreground = Color.BLACK; private Paint background = null; private Paint borderPaint = null; private Stroke borderStroke = null; private Font font; private boolean visible = true; private NumberFormat numberFormat = null; private final PainterIntent intent; }