rrenkert@46: package de.intevation.mxd.reader; rrenkert@46: rrenkert@46: import java.io.IOException; rrenkert@46: rrenkert@46: import java.awt.Color; rrenkert@46: rrenkert@46: import org.apache.log4j.Logger; rrenkert@46: rrenkert@46: import com.esri.arcgis.display.ISymbol; rrenkert@46: import com.esri.arcgis.display.IMarkerSymbol; rrenkert@46: import com.esri.arcgis.display.MultiLayerMarkerSymbol; rrenkert@46: import com.esri.arcgis.display.ArrowMarkerSymbol; rrenkert@46: import com.esri.arcgis.display.IColor; rrenkert@46: import com.esri.arcgis.display.RgbColor; rrenkert@46: rrenkert@46: import org.w3c.dom.Element; rrenkert@46: import de.intevation.mxd.utils.MapToXMLUtils; rrenkert@46: rrenkert@46: /** rrenkert@46: * Reads multi layer marker symbol information. rrenkert@46: * rrenkert@46: * @author Raimund Renkert rrenkert@46: */ rrenkert@46: public class MultiLayerMarkerSymbolReader implements ISymbolReader{ rrenkert@46: rrenkert@46: /** rrenkert@46: * The logger. rrenkert@46: */ rrenkert@46: private static final Logger logger = rrenkert@46: Logger.getLogger(MultiLayerMarkerSymbolReader.class); rrenkert@46: rrenkert@46: /** rrenkert@46: * Private member. rrenkert@46: */ rrenkert@46: private Element renderer; rrenkert@46: private MultiLayerMarkerSymbol symbol; rrenkert@46: private MapToXMLUtils util; rrenkert@46: rrenkert@46: rrenkert@46: public MultiLayerMarkerSymbolReader(ISymbol symbol) rrenkert@46: throws Exception { rrenkert@46: logger.debug("contructor()"); rrenkert@46: if(symbol instanceof MultiLayerMarkerSymbol) { rrenkert@46: this.symbol = (MultiLayerMarkerSymbol)symbol; rrenkert@46: } rrenkert@46: else { rrenkert@46: throw new Exception("Not a MultiLayerMarkerSymbol!"); rrenkert@46: } rrenkert@46: } rrenkert@46: rrenkert@46: /** rrenkert@46: * Setter for the parent XML element. rrenkert@46: * rrenkert@46: * @param parent The XML parent node. rrenkert@46: */ rrenkert@46: public void setParent(Element parent) { rrenkert@46: this.renderer = parent; rrenkert@46: } rrenkert@46: rrenkert@46: /** rrenkert@46: * Setter for XML document helper. rrenkert@46: * rrenkert@46: * @param util The helper class for storing map information. rrenkert@46: */ rrenkert@46: public void setUtil(MapToXMLUtils util) { rrenkert@46: this.util = util; rrenkert@46: } rrenkert@46: rrenkert@46: /** rrenkert@46: * Reads the symbol attributes. rrenkert@46: * rrenkert@46: * @return The XML node. rrenkert@46: */ rrenkert@46: public Element read() rrenkert@46: throws IOException { rrenkert@46: logger.debug("read()"); rrenkert@46: Element symbolElement; rrenkert@46: try { rrenkert@46: symbolElement = util.addSymbol(renderer); rrenkert@46: } rrenkert@46: catch(Exception e) { rrenkert@46: e.printStackTrace(); rrenkert@46: return null; rrenkert@46: } rrenkert@46: rrenkert@46: for(int i = 0; i < symbol.getLayerCount(); i++) { rrenkert@46: IMarkerSymbol sym = symbol.getLayer(i); rrenkert@46: if (sym instanceof ArrowMarkerSymbol) { rrenkert@46: ArrowMarkerSymbol arrow = (ArrowMarkerSymbol)sym; rrenkert@46: IColor c = arrow.getColor(); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "name", rrenkert@46: arrow.getNameString()); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "length", rrenkert@46: String.valueOf(arrow.getLength())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "width", rrenkert@46: String.valueOf(arrow.getWidth())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "angle", rrenkert@46: String.valueOf(arrow.getAngle())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "size", rrenkert@46: String.valueOf(arrow.getSize())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "x_offset", rrenkert@46: String.valueOf(arrow.getXOffset())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "y_offset", rrenkert@46: String.valueOf(arrow.getYOffset())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "color", rrenkert@46: String.valueOf(c.getRGB())); rrenkert@46: symbolElement.setAttribute( rrenkert@46: "tranparency", rrenkert@46: String.valueOf(c.getTransparency())); rrenkert@46: symbolElement.setAttribute("style", "arrow"); rrenkert@46: } rrenkert@46: } rrenkert@46: return symbolElement; rrenkert@46: } rrenkert@46: } rrenkert@46: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :