/*
* CapitalsMode.java
*
* Created on Feb 23, 2008, 11:15:31 PM
*/
package editor.mapmode;
import editor.MapPanel;
import editor.ProvinceData.Province;
import editor.Text;
import java.awt.Color;
import java.awt.Graphics2D;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <code>MapMode</code> that highlights all provinces that are capitals.
* @author Michael
*/
public final class CapitalsMode extends ProvincePaintingMode {
protected Color foundColor = Color.GREEN;
protected Color notFoundColor = new Color(100, 100, 100); // darker than GRAY, lighter than DARK_GRAY
private final Map<Integer, String> capitals =
new HashMap<Integer, String>(100);
public CapitalsMode() {
super();
}
public CapitalsMode(MapPanel panel) {
super(panel);
}
@Override
protected void paintingStarted(final Graphics2D g) {
capitals.clear();
final List<String> tags = mapPanel.getModel().getTags();
for (String tag : tags) {
String cap = mapPanel.getModel().getHistString(tag, "capital");
if (cap.length() != 0)
capitals.put(Integer.parseInt(cap), Text.getText(tag));
}
}
@Override
protected void paintProvince(final Graphics2D g, int provId) {
if (capitals.containsKey(provId))
mapPanel.paintProvince(g, provId, foundColor);
else
mapPanel.paintProvince(g, provId, notFoundColor);
}
@Override
protected void paintSeaZone(final Graphics2D g, int id) {
// do nothing
}
@Override
public String getTooltipExtraText(final Province current) {
if (capitals.containsKey(current.getId()))
return "Capital of " + capitals.get(current.getId());
return "";
}
}