/*
* This file is part of the OSMembrane project.
* More informations under www.osmembrane.de
*
* The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0.
* for more details about the license see http://www.osmembrane.de/license/
*
* Source: $HeadURL$ ($Revision$)
* Last changed: $Date$
*/
package de.osmembrane.resources;
import java.awt.Color;
import java.io.File;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
import java.util.Properties;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import de.osmembrane.Application;
import de.osmembrane.model.pipeline.Pipeline;
import de.osmembrane.model.settings.SettingsTypeUpdateInterval;
import de.osmembrane.tools.Tools;
/**
* Constants for OSMembrane.
*
* @author jakob_jarosch
*/
public class Constants {
/**
* The exact revision, generated by the version control system.
*/
public static final String REVISION_ID;
/**
* The given human-readable version.
*/
public static final String VERSION;
private static final String REVISION_ID_PROPERTY = "de.osmembrane.version.revisionId";
private static final String VERSION_PROPERTY = "de.osmembrane.version";
static {
String revisionId = "UNKNOWN";
String version = "UNKNOWN";
InputStream vpStream = Constants.class
.getResourceAsStream("version.properties");
// if the resource doesn't exist, we're most probably in an uncontrolled
// development build, so we let it at zero.
if (vpStream != null) {
try {
Properties vp = new Properties();
vp.load(vpStream);
revisionId = vp.getProperty(REVISION_ID_PROPERTY);
version = vp.getProperty(VERSION_PROPERTY);
} catch (Exception e) {
// Something went wrong while parsing the embedded build number,
// resort to zero.
revisionId = "UNKNOWN";
version = "UNKNOWN";
}
}
VERSION = version;
REVISION_ID = revisionId;
}
/**
* Path to the language files.
*/
public static final String RESOURCE_BUNDLE_PATH = "de.osmembrane.resources.language.Locale";
/**
* Is used by I18N for a default translation of the XMLHasDescription
* objects.
*/
public static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
/**
* All available Locales.
*/
public static final Locale[] AVAILABLE_LOCALES = new Locale[] {
Locale.ENGLISH, Locale.GERMAN };
/**
* Default OSMembrane-user directory.
*/
public static final URL DEFAULT_USER_FOLDER;
/**
* Default Backup filename (for {@link Pipeline}.
*/
public static final URL DEFAULT_BACKUP_FILE;
/**
* The default path to the settings file
*/
public static final URL DEFAULT_SETTINGS_FILE;
/**
* The default color for a function-group with a non parsable color.
*/
public static final Color DEFAULT_FUNCTIONGROUP_COLOR = new Color(0.8f,
0.8f, 0.8f);
/**
* Color definitions for the various stream types
*/
public static final Color ENTITY_STREAM_TYPE_COLOR = new Color(0.5f, 0.5f,
1.0f);
/**
* Color definitions for the various stream types
*/
public static final Color CHANGE_STREAM_TYPE_COLOR = new Color(1.0f, 0.5f,
0.5f);
/**
* Color definitions for the various stream types
*/
public static final Color DATASET_STREAM_TYPE_COLOR = new Color(0.5f, 1.0f,
0.5f);
/**
* Maximum count of undo steps until the first one is removed from the
* undoStack.
*/
public static final int MAXIMUM_UNDO_STEPS = 100;
/**
* The default path to the osmosis binaries.
*/
public static final String DEFAULT_OSMOSIS_PATH = "osmosis";
/**
* The default path to the JOSM binaries.
*/
public static final String DEFAULT_JOSM_PATH = "josm";
/**
* Seperator char of the bbox parameter
*/
public static final String BBOX_SEPERATOR = ";";
/**
* The default zoom-size of the view.
*/
public static final double DEFAULT_ZOOM_SIZE = 1.0;
/**
* The default raster size of the pipeline.
*/
public static final int DEFAULT_PIPELINE_RASTER_SIZE = 30;
/**
* Maximum amount of entries in the statusbar before the oldest one is being
* removed.
*/
public static final int MAXIMUM_STATUSBAR_ENTRIES = 10;
/**
* Minimal x distance between two functions in the pipeline view, needed for
* graph planarization.
*/
public static final double PIPELINE_FUNCTION_MINIMAL_X_DISTANCE = 175.0;
/**
* Minimal y distance between two functions in the pipeline view, needed for
* graph planarization.
*/
public static final double PIPELINE_FUNCTION_MINIMAL_Y_DISTANCE = 75.0;
/**
* The default working directory.
*/
public static final String DEFAULT_WORKING_DIRECTORY = System
.getProperty("user.home");
/**
* Show the startup screen or not.
*/
public static final Boolean DEFAULT_SHOW_STARTUP_SCREEN = true;
/**
* The default path to the helpfile pdf.
*/
public static final File HELP_FILE_PATH = new File(
"resources/pdf/manual.pdf");
/**
* Default JOSM Heap size.
*/
public static final int JOSM_HEAP_SIZE = 256;
/**
* All view components will have their size modified by this factor. This
* automatically affects standard zoom and drag & drop size.
*/
public static final double DEFAULT_SIZE_FACTOR = 0.64;
/**
* Default update interval.
*/
public static final SettingsTypeUpdateInterval DEFAULT_UPDATE_INTERVAL = SettingsTypeUpdateInterval.ONCE_A_DAY;
/**
* The website where updates can be checked.
*/
public static final URL UPDATE_WEBSITE;
/**
* The default LnF of OSMembrane, called Nimbus.
*/
public static final String DEFAULT_PLAF_NAME = getNimbusPlafName();
/**
* Figure out the default URLs
*/
static {
URL urlBackup = null;
URL urlSettings = null;
URL urlUserFolder = null;
URL updateWebsite = null;
try {
urlUserFolder = new File(System.getProperty("user.home") + "/"
+ ".osmembrane/").toURI().toURL();
urlBackup = new File(Tools.urlToFile(urlUserFolder) + "/"
+ "pipeline_backup.osmembrane").toURI().toURL();
urlSettings = new File(Tools.urlToFile(urlUserFolder) + "/"
+ "osmembrane.settings").toURI().toURL();
updateWebsite = new URL("http://update.osmembrane.de/latest_build");
} catch (MalformedURLException e) {
/* no that shouldn't be so! */
Application.handleException(e);
} finally {
DEFAULT_USER_FOLDER = urlUserFolder;
DEFAULT_BACKUP_FILE = urlBackup;
DEFAULT_SETTINGS_FILE = urlSettings;
UPDATE_WEBSITE = updateWebsite;
}
}
/**
* Determines the PLaF name for the Nimbus PLaF.
*
* @return the name of the Nimbus plaf, or any arbitrary one, if Nimbus
* isn't found.
*/
private static String getNimbusPlafName() {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getName().toLowerCase().contains("nimbus")) {
return info.getName();
}
}
return UIManager.getInstalledLookAndFeels()[0].getName();
}
}