package com.baselet.control.config;
import java.awt.Font;
import java.awt.Point;
import java.io.File;
import javax.swing.UIManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baselet.control.basics.geom.Dimension;
import com.baselet.control.constants.SystemInfo;
import com.baselet.control.enums.Os;
import com.baselet.control.enums.Program;
import com.baselet.control.enums.RuntimeType;
public class Config {
private static Logger log = LoggerFactory.getLogger(Config.class);
private static Config instance = new Config();
public static Config getInstance() {
return instance;
}
private final String DEFAULT_FILE_HOME = System.getProperty("user.dir");
private String uiManager;
private String openFileHome = DEFAULT_FILE_HOME;
private String saveFileHome = DEFAULT_FILE_HOME;
private String programVersion;
private String lastUsedPalette = ""; // default is empty string not null because null cannot be stored as property
private String pdfExportFont = ""; // eg in Windows: "pdf_export_font = c:/windows/fonts/msgothic.ttc,1"
private String pdfExportFontBold = "";
private String pdfExportFontItalic = "";
private String pdfExportFontBoldItalic = "";
private boolean checkForUpdates = true;
private int printPadding = 20;
private Point program_location = new Point(5, 5);
private Dimension program_size = new Dimension(960, 750);
private int mail_split_position = 250;
private int right_split_position = 400;
private int main_split_position = 600;
private boolean enable_custom_elements = true;
private boolean show_grid = false;
private boolean start_maximized = false;
private String defaultFontFamily = Font.SANS_SERIF;
private Integer defaultFontsize = 14;
private Integer propertiesPanelFontsize = 11;
public Config() {
if (Program.getInstance().getRuntimeType() != RuntimeType.BATCH) { // batchmode shouldn't access UIManager.class
initUiManager();
}
}
private void initUiManager() {
// The default MacOS theme looks ugly, therefore we set metal
if (SystemInfo.OS == Os.MAC) {
uiManager = "javax.swing.plaf.metal.MetalLookAndFeel";
}
else if (Program.getInstance().getRuntimeType() == RuntimeType.ECLIPSE_PLUGIN && UIManager.getSystemLookAndFeelClassName().equals("com.sun.java.swing.plaf.gtk.GTKLookAndFeel")) {
uiManager = "javax.swing.plaf.metal.MetalLookAndFeel";
}
else {
uiManager = UIManager.getSystemLookAndFeelClassName();
}
}
public String getUiManager() {
return uiManager;
}
public void setUiManager(String uiManager) {
this.uiManager = uiManager;
}
public String getOpenFileHome() {
return getFileHelper(openFileHome, DEFAULT_FILE_HOME);
}
public void setOpenFileHome(String openFileHome) {
log.trace("setting openFileHome path to: " + openFileHome);
this.openFileHome = openFileHome;
}
public String getSaveFileHome() {
return getFileHelper(saveFileHome, DEFAULT_FILE_HOME);
}
private String getFileHelper(String fileLocToCheck, String defaultValue) {
try {
if (new File(fileLocToCheck).exists()) {
return fileLocToCheck;
}
} catch (Exception e) {/* nothing to do */}
// if stored location doesn't exist or there is an exception while accessing the location, return default value
return defaultValue;
}
public void setSaveFileHome(String saveFileHome) {
log.trace("setting saveFileHome path to: " + saveFileHome);
this.saveFileHome = saveFileHome;
}
public void setProgramVersion(String cfgVersion) {
programVersion = cfgVersion;
}
public String getProgramVersion() {
return programVersion;
}
public String getLastUsedPalette() {
return lastUsedPalette;
}
public void setLastUsedPalette(String lastUsedPalette) {
this.lastUsedPalette = lastUsedPalette;
}
public String getPdfExportFont() {
return pdfExportFont;
}
public void setPdfExportFont(String pdfExportFont) {
this.pdfExportFont = pdfExportFont;
}
public String getPdfExportFontBold() {
return pdfExportFontBold;
}
public void setPdfExportFontBold(String pdfExportFontBold) {
this.pdfExportFontBold = pdfExportFontBold;
}
public String getPdfExportFontItalic() {
return pdfExportFontItalic;
}
public void setPdfExportFontItalic(String pdfExportFontItalic) {
this.pdfExportFontItalic = pdfExportFontItalic;
}
public String getPdfExportFontBoldItalic() {
return pdfExportFontBoldItalic;
}
public void setPdfExportFontBoldItalic(String pdfExportFontBoldItalic) {
this.pdfExportFontBoldItalic = pdfExportFontBoldItalic;
}
public boolean isCheckForUpdates() {
return checkForUpdates;
}
public void setCheckForUpdates(boolean checkForUpdates) {
this.checkForUpdates = checkForUpdates;
}
public int getPrintPadding() {
return printPadding;
}
public void setPrintPadding(int printPadding) {
this.printPadding = printPadding;
}
public Point getProgram_location() {
return program_location;
}
public void setProgram_location(Point program_location) {
this.program_location = program_location;
}
public Dimension getProgram_size() {
return program_size;
}
public void setProgram_size(Dimension program_size) {
this.program_size = program_size;
}
public int getMail_split_position() {
return mail_split_position;
}
public void setMail_split_position(int mail_split_position) {
this.mail_split_position = mail_split_position;
}
public int getRight_split_position() {
return right_split_position;
}
public void setRight_split_position(int right_split_position) {
this.right_split_position = right_split_position;
}
public int getMain_split_position() {
return main_split_position;
}
public void setMain_split_position(int main_split_position) {
this.main_split_position = main_split_position;
}
public boolean isEnable_custom_elements() {
return enable_custom_elements;
}
public void setEnable_custom_elements(boolean enable_custom_elements) {
this.enable_custom_elements = enable_custom_elements;
}
public boolean isShow_grid() {
return show_grid;
}
public void setShow_grid(boolean show_grid) {
this.show_grid = show_grid;
}
public boolean isStart_maximized() {
return start_maximized;
}
public void setStart_maximized(boolean start_maximized) {
this.start_maximized = start_maximized;
}
public String getDefaultFontFamily() {
return defaultFontFamily;
}
public void setDefaultFontFamily(String defaultFontFamily) {
this.defaultFontFamily = defaultFontFamily;
}
public Integer getDefaultFontsize() {
return defaultFontsize;
}
public void setDefaultFontsize(Integer defaultFontsize) {
this.defaultFontsize = defaultFontsize;
}
public Integer getPropertiesPanelFontsize() {
return propertiesPanelFontsize;
}
public void setPropertiesPanelFontsize(Integer propertiesPanelFontsize) {
this.propertiesPanelFontsize = propertiesPanelFontsize;
}
}