blob: be823bdcff1303d378b37dacc826715a83782bdd [file] [log] [blame]
package org.eclipse.epf.export.wizards;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.epf.common.preferences.CommonPreferences;
import org.eclipse.epf.common.utils.FileUtil;
import org.eclipse.epf.common.utils.StrUtil;
import org.eclipse.epf.export.ExportPlugin;
import org.eclipse.epf.library.ui.preferences.LibraryUIPreferences;
import com.ibm.icu.util.StringTokenizer;
/**
* Manages the export UI preferences.
*
* @author hopeshared
* @since 1.2
*/
public class ExportUIPreferences {
/**
* The recently opened dir preference delimiter.
*/
public static final String PREFERENCE_DELIMITER = ";"; //$NON-NLS-1$
/**
* The Export Plugin preference key.
*/
public static final String LAST_EXPORT_PLUGIN_PATH = "lastExportPluginPath"; //$NON-NLS-1$
/**
* The Export Configuration preference key.
*/
public static final String LAST_EXPORT_CONFIG_PATH = "lastExportConfigPath"; //$NON-NLS-1$
/**
* Returns the default export path.
*
* @return The default export path.
*/
public static String getDefaultExportPath() {
String defExportPPath = System.getProperty("user.home") + //$NON-NLS-1$
FileUtil.FILE_SEP
+ LibraryUIPreferences.getApplicationShortName()
+ FileUtil.FILE_SEP + "Export"; //$NON-NLS-1$
return defExportPPath;
}
/**
* Gets the recently opened method plugin dir preference.
*
* @return a collection of String
*/
public static List getRecentlyExportedPluginDirs() {
List dirs = getPropertyList(LAST_EXPORT_PLUGIN_PATH);
List result = new ArrayList();
if (dirs.size() > 0) {
for (Iterator it = dirs.iterator(); it.hasNext();) {
String dir = (String) it.next();
result.add(dir);
}
}
return result;
}
/**
* Sets the recently opened method plugin preference.
*
* @param dir
* export plugin dir
*/
public static void addRecentlyExportPluginDir(String dir) {
if (dir == null || dir.length() == 0) {
return;
}
List dirs = getRecentlyExportedPluginDirs();
addProperty(dirs, dir, LAST_EXPORT_PLUGIN_PATH);
}
/**
* Gets the recently export config dirs preference.
*
* @return a collection of String
*/
public static List getRecentlyExportedConfigDirs() {
// TODO
List dirs = getPropertyList(LAST_EXPORT_CONFIG_PATH);
List result = new ArrayList();
if (dirs.size() > 0) {
for (Iterator it = dirs.iterator(); it.hasNext();) {
String dir = (String) it.next();
result.add(dir);
}
}
return result;
}
/**
* Sets the recently opened method config dir preference.
*
* @param dir
* export config dir
*/
public static void addRecentlyExportConfigDir(String dir) {
if (dir == null || dir.length() == 0) {
return;
}
List dirs = getRecentlyExportedConfigDirs();
addProperty(dirs, dir, LAST_EXPORT_CONFIG_PATH);
}
/**
* Add the property to the first position.
*
* @param oldPropertyList
* old property list
* @param newProperty
* new property value
* @param propertyKey
* target property key
*/
private static void addProperty(List oldPropertyList, String newProperty,
String propertyKey) {
List dirsResult = new ArrayList();
if (oldPropertyList.contains(newProperty))
oldPropertyList.remove(newProperty);
dirsResult.add(0, newProperty);
for (int i = 0; i < oldPropertyList.size(); i++) {
String path = (String) oldPropertyList.get(i);
dirsResult.add(i + 1, path);
}
if (dirsResult.size() > getListLength())
dirsResult = dirsResult.subList(0, getListLength());
setPropertyList(propertyKey, StrUtil.convertListToStrArray(dirsResult));
}
/**
* Returns the string values associated with the named preference as a
* <ocde>List</code>.
*/
private static List getPropertyList(String name) {
List list = convertToList(ExportPlugin.getDefault()
.getPreferenceStore().getString(name));
int length = getListLength();
if (list.size() > length) {
list = list.subList(0, length);
}
return list;
}
/**
* Saves the given string values associated with the named preference.
*/
private static void setPropertyList(String name, String[] items) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < items.length; i++) {
buffer.append(items[i]);
buffer.append(PREFERENCE_DELIMITER);
}
ExportPlugin.getDefault().getPreferenceStore().setValue(name,
buffer.toString());
}
/**
* Converts the supplied PREFERENCE_DELIMITER delimited string into a
* <code>List</code> object.
*/
private static ArrayList convertToList(String preferenceValue) {
ArrayList topics = new ArrayList();
StringTokenizer tokenizer = new StringTokenizer(preferenceValue,
PREFERENCE_DELIMITER);
int tokenCount = tokenizer.countTokens();
for (int i = 0; i < tokenCount; i++) {
topics.add(tokenizer.nextToken());
}
return topics;
}
/**
* @return the length of list
*/
public static int getListLength() {
int preferenceHistorySize = CommonPreferences
.getPreferenceHistorySize();
return preferenceHistorySize > 0 ? preferenceHistorySize
: CommonPreferences.getDefaultPreferenceHistorySize();
}
}