1 package org.simantics.scl.ui.console;
\r
3 import java.util.Collection;
\r
4 import java.util.Deque;
\r
5 import java.util.Iterator;
\r
6 import java.util.LinkedList;
\r
7 import java.util.Set;
\r
8 import java.util.TreeSet;
\r
11 * @author Antti Villberg
\r
13 public final class Preferences {
\r
15 public static final String COMMAND_HISTORY = "COMMAND_HISTORY";
\r
17 private static final String DELIMITER = "¤¤¤¤";
\r
19 public static String join(Collection<String> s, String delimiter) {
\r
20 if (s == null || s.isEmpty()) return "";
\r
21 Iterator<String> iter = s.iterator();
\r
22 StringBuilder builder = new StringBuilder(iter.next());
\r
23 while( iter.hasNext() )
\r
25 builder.append(delimiter).append(iter.next());
\r
27 return builder.toString();
\r
30 public static Deque<String> decodePaths(String recentPathsPref) {
\r
31 Deque<String> result = new LinkedList<String>();
\r
32 for(String s : recentPathsPref.split(DELIMITER)) result.add(s);
\r
36 public static String encodePaths(Collection<String> recentPaths) {
\r
37 return join(recentPaths, DELIMITER);
\r
40 public static <T> void removeDuplicates(Iterable<String> iter) {
\r
41 // Remove duplicates
\r
42 Set<String> dups = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
\r
43 for (Iterator<String> it = iter.iterator(); it.hasNext();) {
\r
44 String path = it.next();
\r
45 if (!dups.add(path)) {
\r