// **********************************************************************
//
// <copyright>
//
// BBN Technologies
// 10 Moulton Street
// Cambridge, MA 02138
// (617) 873-8000
//
// Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source:
// /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/link/LinkGraphic.java,v
// $
// $RCSfile: LinkGraphic.java,v $
// $Revision: 1.5 $
// $Date: 2006/10/10 22:05:17 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.layer.link;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Paint;
import java.io.IOException;
import java.util.Iterator;
import com.bbn.openmap.omGraphics.OMBitmap;
import com.bbn.openmap.omGraphics.OMCircle;
import com.bbn.openmap.omGraphics.OMEllipse;
import com.bbn.openmap.omGraphics.OMGraphic;
import com.bbn.openmap.omGraphics.OMGraphicList;
import com.bbn.openmap.omGraphics.OMGrid;
import com.bbn.openmap.omGraphics.OMLine;
import com.bbn.openmap.omGraphics.OMPoint;
import com.bbn.openmap.omGraphics.OMPoly;
import com.bbn.openmap.omGraphics.OMRaster;
import com.bbn.openmap.omGraphics.OMRect;
import com.bbn.openmap.omGraphics.OMText;
import com.bbn.openmap.util.ColorFactory;
import com.bbn.openmap.util.Debug;
public class LinkGraphic implements LinkConstants, LinkPropertiesConstants {
public static void write(OMGraphic omGraphic, Link link) throws IOException {
write(omGraphic, link, null);
}
public static void write(OMGraphic omGraphic, Link link,
LinkProperties props) throws IOException {
// This is so not object-oriented. I know, I know.
if (props == null) {
Object obj = omGraphic.getAttribute(OMGraphic.APP_OBJECT);
if (obj instanceof LinkProperties) {
props = (LinkProperties) obj;
} else {
props = new LinkProperties();
}
}
if (omGraphic instanceof OMGraphicList) {
Iterator iterator = ((OMGraphicList) omGraphic).getTargets()
.iterator();
while (iterator.hasNext()) {
write((OMGraphic) iterator.next(), link);
}
return;
}
props.setProperty(LPC_LINEWIDTH,
Integer.toString((int) ((BasicStroke) omGraphic.getStroke()).getLineWidth()));
Paint paint = omGraphic.getLinePaint();
if (paint instanceof Color) {
props.setProperty(LPC_LINECOLOR,
ColorFactory.getHexColorString((Color) paint));
}
paint = omGraphic.getFillPaint();
if (paint instanceof Color) {
props.setProperty(LPC_FILLCOLOR,
ColorFactory.getHexColorString((Color) paint));
}
paint = omGraphic.getSelectPaint();
if (paint instanceof Color) {
props.setProperty(LPC_HIGHLIGHTCOLOR,
ColorFactory.getHexColorString((Color) paint));
}
if (omGraphic instanceof OMBitmap) {
LinkBitmap.write((OMBitmap) omGraphic, link, props);
} else if (omGraphic instanceof OMCircle) {
LinkCircle.write((OMCircle) omGraphic, link, props);
} else if (omGraphic instanceof OMEllipse) {
LinkEllipse.write((OMEllipse) omGraphic, link, props);
} else if (omGraphic instanceof OMGrid) {
LinkGrid.write((OMGrid) omGraphic, link, props);
} else if (omGraphic instanceof OMLine) {
LinkLine.write((OMLine) omGraphic, link, props);
} else if (omGraphic instanceof OMPoint) {
LinkPoint.write((OMPoint) omGraphic, link, props);
} else if (omGraphic instanceof OMRect) {
LinkRectangle.write((OMRect) omGraphic, link, props);
} else if (omGraphic instanceof OMRaster) {
LinkRaster.write((OMRaster) omGraphic, link, props);
} else if (omGraphic instanceof OMText) {
LinkText.write((OMText) omGraphic, link, props);
} else if (omGraphic instanceof OMPoly) {
LinkPoly.write((OMPoly) omGraphic, link, props);
} else {
Debug.error("LinkGraphic.write: OMGraphic Type not handled by LinkProtocol");
}
}
}