/*****************************************************************************
* Copyright (c) 2010 CEA LIST.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tatiana Fesenko (CEA LIST) - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.jface.dialogs.IDialogSettings;
/**
* The Class SettingsUtils allows the Wizard to remember last selected diagram kinds and categories.
*/
public class SettingsHelper {
/** The Constant DIAGRAM_KIND_SEPARATOR. */
private static final String DIAGRAM_KIND_SEPARATOR = ","; //$NON-NLS-1$
/** The Constant TEMPLATE_SEPARATOR. */
private static final String TEMPLATE_SEPARATOR = ","; //$NON-NLS-1$
/** The Constant SETTINGS_KEY_REMEMBER_CURRENT_SELECTION. */
private static final String SETTINGS_KEY_REMEMBER_CURRENT_SELECTION = "RememberCurrentSelection"; //$NON-NLS-1$
/** The Constant SETTINGS_KEY_DIAGRAM_KINDS. */
private static final String SETTINGS_KEY_DIAGRAM_KINDS = "DiagramKindsFor_"; //$NON-NLS-1$
/** The Constant SETTINGS_KEY_DIAGRAM_TEMPLATES. */
private static final String SETTINGS_KEY_DIAGRAM_TEMPLATES = "DiagramTemplatesFor_"; //$NON-NLS-1$
/** The Constant LAST_SELECTED_CATEGORY. */
private static final String LAST_SELECTED_CATEGORY = "diagramCategory"; //$NON-NLS-1$
/** The my settings. */
private final IDialogSettings mySettings;
/**
* Instantiates a new settings utils.
*
* @param settings
* the settings
*/
public SettingsHelper(IDialogSettings settings) {
mySettings = settings;
}
/**
* Gets the default diagram category.
*
* @return the default diagram category
*/
public String[] getDefaultDiagramCategories() {
return mySettings.getArray(LAST_SELECTED_CATEGORY);
}
/**
* Save default diagram category.
*
* @param categories the categories
*/
public void saveDefaultDiagramCategory(String[] categories) {
mySettings.put(LAST_SELECTED_CATEGORY, categories);
}
/**
* Gets the default diagram kinds.
*
* @param category
* the category
* @return the default diagram kinds
*/
public List<String> getDefaultDiagramKinds(String category) {
String csl = mySettings.get(getKeyForDiagramKind(category));
if(csl == null || csl == "") { //$NON-NLS-1$
return Collections.emptyList();
}
List<String> result = new ArrayList<String>();
StringTokenizer tokenizer = new StringTokenizer(csl, DIAGRAM_KIND_SEPARATOR);
while(tokenizer.hasMoreTokens()) {
result.add(tokenizer.nextToken().trim());
}
return result;
}
/**
* Save default diagram kinds.
*
* @param category
* the category
* @param kinds
* the kinds
*/
public void saveDefaultDiagramKinds(String category, List<String> kinds) {
String value = ""; //$NON-NLS-1$
for(String kind : kinds) {
value += kind;
value += DIAGRAM_KIND_SEPARATOR;
}
mySettings.put(getKeyForDiagramKind(category), value);
}
/**
* Gets the default templates.
*
* @param category
* the category
* @return the default templates
*/
public List<String> getDefaultTemplates(String category) {
String csl = mySettings.get(getKeyForTemplate(category));
if(csl == null || csl == "") { //$NON-NLS-1$
return Collections.emptyList();
}
List<String> result = new ArrayList<String>();
StringTokenizer tokenizer = new StringTokenizer(csl, TEMPLATE_SEPARATOR);
while(tokenizer.hasMoreTokens()) {
result.add(tokenizer.nextToken().trim());
}
return result;
}
/**
* Save default templates.
*
* @param category
* the category
* @param templates
* the templates
*/
public void saveDefaultTemplates(String category, List<String> templates) {
String value = ""; //$NON-NLS-1$
for(String template : templates) {
value += template;
value += TEMPLATE_SEPARATOR;
}
mySettings.put(getKeyForTemplate(category), value);
}
/**
* Save remember current selection.
*
* @param remember
* the remember
*/
public void saveRememberCurrentSelection(boolean remember) {
mySettings.put(SETTINGS_KEY_REMEMBER_CURRENT_SELECTION, remember);
}
/**
* Remember current selection.
*
* @param settings
* the settings
* @return true, if successful
*/
public boolean rememberCurrentSelection(IDialogSettings settings) {
return mySettings.getBoolean(SETTINGS_KEY_REMEMBER_CURRENT_SELECTION);
}
/**
* Gets the key for diagram kind.
*
* @param category the category
* @return the key for diagram kind
*/
private String getKeyForDiagramKind(String category) {
return SETTINGS_KEY_DIAGRAM_KINDS + category;
}
/**
* Gets the key for template.
*
* @param category the category
* @return the key for template
*/
private String getKeyForTemplate(String category) {
return SETTINGS_KEY_DIAGRAM_TEMPLATES + category;
}
}