package edu.colostate.vchill.gui;
import edu.colostate.vchill.ConfigUtil;
import edu.colostate.vchill.map.MapTextParser;
import java.awt.*;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
/**
* This class provides configuration settings specific to the GUI.
* All exceptions/errors encountered while processing data are simply
* ignored.
*
* @author Justin Carlson
* @author Jochen Deyke
* @author jpont
* @version 2009-02-06
*/
public class Config {
private static final Config me = new Config();
private static final int inset = 50;
private final int screenX;
private final int screenY;
private final Set<String> mapFileNames;
/**
* Private default constructor prevents instantiation
*/
private Config() {
this.mapFileNames = new HashSet<String>();
int screenX, screenY;
try {
Dimension desktop = Toolkit.getDefaultToolkit().getScreenSize();
screenX = desktop.width - Config.inset * 2;
screenY = desktop.height - Config.inset * 2;
} catch (Throwable t) {
screenX = 1280;
screenY = 1024;
}
this.screenX = screenX;
this.screenY = screenY;
String[] tmp = ConfigUtil.getStringArray("Map", new String[]{MapTextParser.getListOfFiles().get(0)});
for (String name : tmp) this.mapFileNames.add(name);
}
public static Config getInstance() {
return me;
}
public int getInset() {
return Config.inset;
}
public int getDefaultWidth() {
return this.screenX;
}
public int getDefaultHeight() {
return this.screenY;
}
public synchronized void removeMapFileNames(final Collection<String> mapFileNames) {
this.mapFileNames.removeAll(mapFileNames);
ConfigUtil.put("Map", this.mapFileNames.toArray(new String[this.mapFileNames.size()]));
}
public synchronized void toggleMapFileName(final String mapFileName) {
if (this.mapFileNames.contains(mapFileName)) this.mapFileNames.remove(mapFileName);
else this.mapFileNames.add(mapFileName);
ConfigUtil.put("Map", this.mapFileNames.toArray(new String[this.mapFileNames.size()]));
}
public synchronized void clearMapFileNames() {
this.mapFileNames.clear();
ConfigUtil.put("Map", new String[0]);
}
public synchronized Set<String> getMapFileNames() {
return Collections.unmodifiableSet(this.mapFileNames);
}
public synchronized boolean isMapActive(final String mapFileName) {
return this.mapFileNames.contains(mapFileName);
}
}