/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller <joergmueller@bigfoot.com> *See COPYING for Details * *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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: ArrowLinkAdapter.java,v 1.4.18.5.12.1 2007/05/06 21:12:19 christianfoltin Exp $*/ package freemind.modes; import java.awt.Point; import freemind.main.FreeMindMain; import freemind.main.Tools; import freemind.main.XMLElement; public abstract class ArrowLinkAdapter extends LinkAdapter implements MindMapArrowLink { /** the zero is the start point of the line; */ protected Point startInclination; /** the zero is the end point of the line; */ protected Point endInclination; protected String startArrow; protected String endArrow; protected boolean showControlPointsFlag; public ArrowLinkAdapter(MindMapNode source, MindMapNode target, FreeMindMain frame) { super(source, target, frame); startArrow = "None"; endArrow = "Default"; } public Point getStartInclination() { if (startInclination == null) return null; return new Point(startInclination); } public Point getEndInclination() { if (endInclination == null) return null; return new Point(endInclination); } public String getStartArrow() { return startArrow; } public String getEndArrow() { return endArrow; } public void setStartInclination(Point startInclination) { this.startInclination = startInclination; } public void setEndInclination(Point endInclination) { this.endInclination = endInclination; } public void setStartArrow(String startArrow) { if (startArrow == null || startArrow.toUpperCase().equals("NONE")) { this.startArrow = "None"; return; } else if (startArrow.toUpperCase().equals("DEFAULT")) { this.startArrow = "Default"; return; } // dont change: System.err.println("Cannot set the start arrow type to " + startArrow); } public void setEndArrow(String endArrow) { if (endArrow == null || endArrow.toUpperCase().equals("NONE")) { this.endArrow = "None"; return; } else if (endArrow.toUpperCase().equals("DEFAULT")) { this.endArrow = "Default"; return; } // dont change: System.err.println("Cannot set the end arrow type to " + endArrow); } public Object clone() { ArrowLinkAdapter arrowLink = (ArrowLinkAdapter) super.clone(); // now replace the points: arrowLink.startInclination = (startInclination == null) ? null : new Point(startInclination.x, startInclination.y); arrowLink.endInclination = (endInclination == null) ? null : new Point( endInclination.x, endInclination.y); arrowLink.startArrow = (startArrow == null) ? null : new String( startArrow); arrowLink.endArrow = (endArrow == null) ? null : new String(endArrow); return arrowLink; } public void showControlPoints(boolean bShowControlPointsFlag) { showControlPointsFlag = bShowControlPointsFlag; } public boolean getShowControlPointsFlag() { return showControlPointsFlag; } public XMLElement save() { XMLElement arrowLink = new XMLElement(); arrowLink.setName("arrowlink"); if (style != null) { arrowLink.setAttribute("STYLE", style); } if (getUniqueId() != null) { arrowLink.setAttribute("ID", getUniqueId()); } if (color != null) { arrowLink.setAttribute("COLOR", Tools.colorToXml(color)); } if (getDestinationLabel() != null) { arrowLink.setAttribute("DESTINATION", getDestinationLabel()); } if (getReferenceText() != null) { arrowLink.setAttribute("REFERENCETEXT", getReferenceText()); } if (getStartInclination() != null) { arrowLink.setAttribute("STARTINCLINATION", Tools.PointToXml(getStartInclination())); } if (getEndInclination() != null) { arrowLink.setAttribute("ENDINCLINATION", Tools.PointToXml(getEndInclination())); } if (getStartArrow() != null) arrowLink.setAttribute("STARTARROW", (getStartArrow())); if (getEndArrow() != null) arrowLink.setAttribute("ENDARROW", (getEndArrow())); return arrowLink; } public ArrowLinkTarget createArrowLinkTarget(MindMapLinkRegistry pRegistry) { ArrowLinkTarget linkTarget = new ArrowLinkTarget(source, target, frame); linkTarget.setSourceLabel(pRegistry.getLabel(source)); copy(linkTarget); return linkTarget; } protected void copy(ArrowLinkAdapter linkTarget) { linkTarget.setUniqueId(getUniqueId()); linkTarget.setColor(getColor()); linkTarget.setDestinationLabel(getDestinationLabel()); linkTarget.setEndArrow(getEndArrow()); linkTarget.setEndInclination(getEndInclination()); linkTarget.setReferenceText(getReferenceText()); linkTarget.setStartArrow(getStartArrow()); linkTarget.setStartInclination(getStartInclination()); linkTarget.setStyle(getStyle()); linkTarget.setTarget(getTarget()); linkTarget.setWidth(getWidth()); linkTarget.setSource(getSource()); } }