package other;
 
/**
 * PathHelp Klasse
 * Klasse mit mehreren statischen Methoden
 * zum komfortablen Umgang mit absoluten Pfaden
 */
public class PathHelp {

	// Verzeichnisse
	private static String IMAGE_FOLDER = "images";
	private static String CONFIG_FOLDER = "config";
	private static String ICON_FOLDER = "icons";
	private static String HELP_FOLDER = "help";
	private static String TOOLTIP_FOLDER = "tooltip";
	
	// Dateien
	private static String CONFIG_FILE = "config.dat";
	private static String STD_OBS_FILE = "img_obs.bmp";
	private static String BLANK_OBJ_FILE = "blank.obj";
	private static String STD_CAM_FILE = "img_cam.jpg";
	
	
	/* ##########################################################################
	 * 						Allgemeine Methoden
	 * ##########################################################################*/
	
	/**
	 * Liefert den Pfad der Applikation ohne abschließenden Separator
	 * @return Pfad der Applikation
	 */
	public static String userDir(){
		return System.getProperty("user.dir");
	}
	
	/**
	 * Liefert den Pfad der Applikation mit abschließendem Separator
	 * @return Pfad der Applikation mit abschließendem Seperator
	 */
	public static String userDirSep(){
		return userDir() + pathSep();
	}
	
	/**
	 * Liefert nur den Separator (Windows: '\', Unix: '/')
	 * @return den Seperator
	 */
	public static String pathSep(){
		return System.getProperty("file.separator");
	}
	
	/* ##########################################################################
	 * 						Spezifische Verzeichnis-Methoden
	 * ##########################################################################*/
	
	/**
	 * Liefert den Image-Pfad mit Separator
	 * @return den Imagepfad mit abschließendem Seperator
	 */
	public static String specDirImageSep(){
		return userDirSep() + IMAGE_FOLDER + pathSep();
	}
	
	/**
	 * Liefert den Config-Pfad mit Separator
	 * @return den Config-Pfad mit abschließendem Seperator
	 */
	public static String specDirConfigSep(){
		return userDirSep() + CONFIG_FOLDER + pathSep();
	}
	
	/**
	 * Liefert den Icon-Pfad mit Separator
	 * @return den Icon-Pfad mit abschließendem Seperator
	 */
	public static String specDirIconSep(){
		// Hier muss immer '/' stehen (auch unter Windows)
		// siehe Javadoc zu getResourceAsStream()
		return "/" + ICON_FOLDER + pathSep();
	}
	
	/**
	 * Liefert den Help-Pfad mit Separator
	 * @return den Help-Pfad mit abschließendem Seperator
	 */
	public static String specDirHelpSep(){
		return userDirSep() + HELP_FOLDER + pathSep();
	}
	
	/**
	 * Liefert den Tooltip-Pfad mit Separator
	 * @return den Tooltip-Pfad mit abschließendem Seperator
	 */
	public static String specDirTooltipSep(){
		return specDirHelpSep() + TOOLTIP_FOLDER + pathSep();
	}
	
	/* ##########################################################################
	 * 						Spezifische Datei-Methoden
	 * ##########################################################################*/
	
	/**
	 * Liefert den Pfad der Config-Datei
	 * @return den Pfad der Config-Datei
	 */
	public static String specFileConfig(){
		return specDirConfigSep() + CONFIG_FILE;
	}
	
	/**
	 * Liefert den Pfad des Obstacle-Bitmaps
	 * @return den Pfad des Obstacle-Bitmaps
	 */
	public static String specFileObsImg(){
		return specDirConfigSep() + STD_OBS_FILE;
	}
	
	/**
	 * Liefert den Pfad der leeren TransObj-Datei
	 * @return den Pfad der leeren TransObj-Datei
	 */
	public static String specFileBlankObj(){
		return specDirConfigSep() + BLANK_OBJ_FILE;
	}
	
	/**
	 * Liefert den Pfad des Kamerabildes
	 * @return den Pfad des Kamerabildes
	 */
	public static String specFileStdCam(){
		return specDirConfigSep() + STD_CAM_FILE;
	}
	
}
