/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.fps;
import java.io.File;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openflexo.module.Module;
import org.openflexo.prefs.ModulePreferences;
import org.openflexo.toolbox.FileResource;
/**
* Contains preferences for this module
*
* @author yourname
*
*/
public final class FPSPreferences extends ModulePreferences {
private static final Logger logger = Logger.getLogger(FPSPreferences.class.getPackage().getName());
private static final Class FPS_PREFERENCES = FPSPreferences.class;
protected static final String LAST_OPENED_PROJECTS_1 = "FPSLastProjects_1";
protected static final String LAST_OPENED_PROJECTS_2 = "FPSLastProjects_2";
protected static final String LAST_OPENED_PROJECTS_3 = "FPSLastProjects_3";
protected static final String LAST_OPENED_PROJECTS_4 = "FPSLastProjects_4";
protected static final String LAST_OPENED_PROJECTS_5 = "FPSLastProjects_5";
protected static final String EXAMPLE_PREF_VALUE = "examplePrefValue";
protected static final String XMLMERGE_PREF_VALUE = "useXMLMerge";
public static void init() {
preferences(FPS_PREFERENCES);
CVSFile.xmlDiff3MergeEnabled = getUseXMLMerge();
}
public FPSPreferences() {
super(Module.FPS_MODULE);
}
@Override
public File getInspectorFile() {
return new FileResource("Config/Preferences/FPSPrefs.inspector");
}
public static Boolean getExamplePrefValue() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getExamplePrefValue");
}
Boolean value = preferences(FPS_PREFERENCES).getBooleanProperty(EXAMPLE_PREF_VALUE);
if (value == null) {
setExamplePrefValue(Boolean.FALSE);
return getExamplePrefValue();
}
return value;
}
public static void setExamplePrefValue(Boolean alignOnGrid) {
if (logger.isLoggable(Level.FINE)) {
logger.fine("setExamplePrefValue");
}
preferences(FPS_PREFERENCES).setBooleanProperty(EXAMPLE_PREF_VALUE, alignOnGrid);
}
public static Boolean getUseXMLMerge() {
Boolean value = preferences(FPS_PREFERENCES).getBooleanProperty(XMLMERGE_PREF_VALUE);
if (value == null) {
setUseXMLMerge(Boolean.FALSE);
return getUseXMLMerge();
}
return value;
}
public static void setUseXMLMerge(Boolean alignOnGrid) {
preferences(FPS_PREFERENCES).setBooleanProperty(XMLMERGE_PREF_VALUE, alignOnGrid);
CVSFile.xmlDiff3MergeEnabled = getUseXMLMerge();
}
public static String getLastOpenedProject1() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getLastOpenedProjects");
}
return preferences(FPS_PREFERENCES).getProperty(LAST_OPENED_PROJECTS_1);
}
public static void setLastOpenedProject1(String lastOpenedProjects) {
preferences(FPS_PREFERENCES).setProperty(LAST_OPENED_PROJECTS_1, lastOpenedProjects);
}
public static String getLastOpenedProject2() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getLastOpenedProjects");
}
return preferences(FPS_PREFERENCES).getProperty(LAST_OPENED_PROJECTS_2);
}
public static void setLastOpenedProject2(String lastOpenedProjects) {
preferences(FPS_PREFERENCES).setProperty(LAST_OPENED_PROJECTS_2, lastOpenedProjects);
}
public static String getLastOpenedProject3() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getLastOpenedProjects");
}
return preferences(FPS_PREFERENCES).getProperty(LAST_OPENED_PROJECTS_3);
}
public static void setLastOpenedProject3(String lastOpenedProjects) {
preferences(FPS_PREFERENCES).setProperty(LAST_OPENED_PROJECTS_3, lastOpenedProjects);
}
public static String getLastOpenedProject4() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getLastOpenedProjects");
}
return preferences(FPS_PREFERENCES).getProperty(LAST_OPENED_PROJECTS_4);
}
public static void setLastOpenedProject4(String lastOpenedProjects) {
preferences(FPS_PREFERENCES).setProperty(LAST_OPENED_PROJECTS_4, lastOpenedProjects);
}
public static String getLastOpenedProject5() {
if (logger.isLoggable(Level.FINE)) {
logger.fine("getLastOpenedProjects");
}
return preferences(FPS_PREFERENCES).getProperty(LAST_OPENED_PROJECTS_5);
}
public static void setLastOpenedProject5(String lastOpenedProjects) {
preferences(FPS_PREFERENCES).setProperty(LAST_OPENED_PROJECTS_5, lastOpenedProjects);
}
public static Vector<File> getLastOpenedProjects() {
Vector<File> files = new Vector<File>();
String s1 = getLastOpenedProject1();
String s2 = getLastOpenedProject2();
String s3 = getLastOpenedProject3();
String s4 = getLastOpenedProject4();
String s5 = getLastOpenedProject5();
File f1 = null;
File f2 = null;
File f3 = null;
File f4 = null;
File f5 = null;
if (s1 != null) {
f1 = new File(s1);
if (f1.exists()) {
files.add(f1);
}
}
if (s2 != null) {
f2 = new File(s2);
if (f2.exists()) {
files.add(f2);
}
}
if (s3 != null) {
f3 = new File(s3);
if (f3.exists()) {
files.add(f3);
}
}
if (s4 != null) {
f4 = new File(s4);
if (f4.exists()) {
files.add(f4);
}
}
if (s5 != null) {
f5 = new File(s5);
if (f5.exists()) {
files.add(f5);
}
}
return files;
}
/**
* @param files
*/
public static void setLastOpenedProjects(Vector<File> files) {
if (files.size() > 0) {
setLastOpenedProject1(files.get(0).getAbsolutePath());
}
if (files.size() > 1) {
setLastOpenedProject2(files.get(1).getAbsolutePath());
}
if (files.size() > 2) {
setLastOpenedProject3(files.get(2).getAbsolutePath());
}
if (files.size() > 3) {
setLastOpenedProject4(files.get(3).getAbsolutePath());
}
if (files.size() > 4) {
setLastOpenedProject5(files.get(4).getAbsolutePath());
}
}
public static void addToLastOpenedProjects(File project) {
Vector<File> files = getLastOpenedProjects();
Enumeration<File> en = ((Vector<File>) files.clone()).elements();
while (en.hasMoreElements()) {
File f = en.nextElement();
if (project.equals(f)) {
files.remove(f);
break;
}
}
files.insertElementAt(project, 0);
setLastOpenedProjects(files);
}
}