001// License: GPL. For details, see Readme.txt file. 002package org.openstreetmap.gui.jmapviewer; 003 004import java.awt.Color; 005import java.awt.Font; 006import java.awt.Graphics; 007import java.awt.Point; 008import java.awt.Stroke; 009 010import javax.swing.UIManager; 011 012public abstract class MapObjectImpl { 013 private Layer layer; 014 private String name; 015 private Style style; 016 private Boolean visible; 017 018 public MapObjectImpl(String name) { 019 this(null, name, null); 020 } 021 public MapObjectImpl(Layer layer) { 022 this(layer, null, null); 023 } 024 public MapObjectImpl(Layer layer, String name, Style style) { 025 super(); 026 this.layer = layer; 027 this.name = name; 028 this.style = style; 029 } 030 public Layer getLayer() { 031 return layer; 032 } 033 public void setLayer(Layer layer) { 034 this.layer = layer; 035 } 036 public Style getStyle(){ 037 return style; 038 } 039 public Style getStyleAssigned(){ 040 return style == null ? (layer == null ? null : layer.getStyle()) : style; 041 } 042 public void setStyle(Style style){ 043 this.style = style; 044 } 045 public Color getColor() { 046 Style styleAssigned = getStyleAssigned(); 047 return styleAssigned == null ? null : getStyleAssigned().getColor(); 048 } 049 public void setColor(Color color) { 050 if(style==null&&color!=null) style=new Style(); 051 if(style!=null) style.setColor(color); 052 } 053 054 public Color getBackColor() { 055 Style styleAssigned = getStyleAssigned(); 056 return styleAssigned == null ? null : getStyleAssigned().getBackColor(); 057 } 058 public void setBackColor(Color backColor) { 059 if(style==null&&backColor!=null) style=new Style(); 060 if(style!=null) style.setBackColor(backColor); 061 } 062 063 public Stroke getStroke() { 064 Style styleAssigned = getStyleAssigned(); 065 return styleAssigned == null ? null : getStyleAssigned().getStroke(); 066 } 067 public void setStroke(Stroke stroke) { 068 if(style==null&&stroke!=null) style=new Style(); 069 if(style!=null) style.setStroke(stroke); 070 } 071 072 public Font getFont() { 073 Style styleAssigned = getStyleAssigned(); 074 return styleAssigned == null ? null : getStyleAssigned().getFont(); 075 } 076 public void setFont(Font font) { 077 if(style==null&&font!=null) style=new Style(); 078 if(style!=null) style.setFont(font); 079 } 080 private boolean isVisibleLayer(){ 081 return layer==null||layer.isVisible()==null?true:layer.isVisible(); 082 } 083 public boolean isVisible() { 084 return visible==null?isVisibleLayer():visible.booleanValue(); 085 } 086 public void setVisible(Boolean visible) { 087 this.visible = visible; 088 } 089 public String getName() { 090 return name; 091 } 092 public void setName(String txt) { 093 this.name = txt; 094 } 095 public static Font getDefaultFont(){ 096 Font f = UIManager.getDefaults().getFont("TextField.font"); 097 return new Font(f.getName(), Font.BOLD, f.getSize()); 098 } 099 public void paintText(Graphics g, Point position) { 100 if(name!=null && g!=null && position!=null){ 101 if(getFont()==null){ 102 Font f = getDefaultFont(); 103 setFont(new Font(f.getName(), Font.BOLD, f.getSize())); 104 } 105 g.setColor(Color.DARK_GRAY); 106 g.setFont(getFont()); 107 g.drawString(name, position.x+MapMarkerDot.DOT_RADIUS+2, position.y+MapMarkerDot.DOT_RADIUS); 108 } 109 } 110}