package org.simantics.team.ui; import java.util.Deque; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; import java.util.TreeSet; import org.eclipse.ui.IMemento; import org.simantics.utils.ui.workbench.StringMemento; public final class Preferences { public static final String CURRENT_TEAM_FOLDER = "CURRENT_TEAM_FOLDER"; public static final String RECENT_TEAM_FOLDERS = "RECENT_TEAM_FOLDERS"; private static final String TAG_PATH = "path"; private static final String ATTR_NAME = "name"; public static Deque decodePaths(String recentPathsPref) { Deque result = new LinkedList(); try { StringMemento sm = new StringMemento(recentPathsPref); for (IMemento m : sm.getChildren(TAG_PATH)) { String name = m.getString(ATTR_NAME); if (name != null && !name.isEmpty()) result.add(name); } } catch (IllegalArgumentException e) { } return result; } public static String encodePaths(Deque recentPaths) { StringMemento sm = new StringMemento(); for (String path : recentPaths) { IMemento m = sm.createChild(TAG_PATH); m.putString(ATTR_NAME, path); } return sm.toString(); } public static void removeDuplicates(Iterable iter) { // Remove duplicates Set dups = new TreeSet(String.CASE_INSENSITIVE_ORDER); for (Iterator it = iter.iterator(); it.hasNext();) { String path = it.next(); if (!dups.add(path)) { it.remove(); } } } }