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