package net.sharenav.osm.fBrowser; /* * ShareNav - Copyright (c) 2007 Harald Mueller james22 at users dot sourceforge dot net * See Copying */ import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.io.DataInputStream; import java.io.IOException; import java.util.Vector; import javax.swing.tree.TreeNode; import org.openstreetmap.gui.jmapviewer.JMapViewer; public class ContainerTile extends Tile { //#debug error Tile t1; Tile t2; private final int deep; private final String root; ContainerTile(DataInputStream dis,int deep,byte zl,String root) throws IOException{ this.deep = deep; this.root = root; minLat=dis.readFloat(); minLon=dis.readFloat(); maxLat=dis.readFloat(); maxLon=dis.readFloat(); t1=readTile(dis,deep+1,zl); t2=readTile(dis,deep+1,zl); } public Tile readTile(DataInputStream dis,int deep,byte zl) throws IOException{ byte t=dis.readByte(); switch (t) { case Tile.TYPE_MAP: return new SingleTile(dis,deep,zl,root); case Tile.TYPE_CONTAINER: return new ContainerTile(dis,deep,zl,root); case Tile.TYPE_EMPTY: return new Empty(); case Tile.TYPE_FILETILE: return new FileTile(dis,deep,zl,root); // case Tile.TYPE_ROUTEFILE: // return new RouteFileTile(dis,deep,zl); default: throw new IOException("wrong TileType"); } } /* (non-Javadoc) * @see javax.swing.tree.TreeNode#getChildCount() */ @Override public int getChildCount() { return 2; } /* (non-Javadoc) * @see javax.swing.tree.TreeNode#getChildAt(int) */ @Override public TreeNode getChildAt(int childIndex) { switch (childIndex){ case 0: return t1; case 1: return t2; default: return null; } } /* (non-Javadoc) * @see net.sharenav.osm.fBrowser.Tile#toString() */ @Override public String toString() { return deep+ " Container" + super.toString(); } public void paint(Graphics g, Point topLeft, Point bottomRight,int deep) { // System.out.println("paint Container " + deep + " " + topLeft + "/" + bottomRight); int s=255-(255/deep); g.setColor(new Color(s,s,s,80)); Point tl = map.getMapPosition(minLat * radToDeg, maxLon * radToDeg, false); Point br = map.getMapPosition(maxLat * radToDeg, minLon * radToDeg, false); g.setColor(Color.BLACK); g.drawRect(tl.x, tl.y, br.x - br.x, br.y - tl.y); if (t1 != null) {t1.paint(g, topLeft, bottomRight,deep+1);}; if (t2 != null) {t2.paint(g,topLeft, bottomRight,deep+1);}; } /* (non-Javadoc) * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#paint(java.awt.Graphics, java.awt.Point, java.awt.Point) */ @Override public void paint(Graphics g, Point topLeft, Point bottomRight) { paint(g,topLeft, bottomRight,1); } }