package org.expeditee.setting; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.expeditee.gui.DisplayController; import org.expeditee.gui.FrameIO; import org.expeditee.gui.FrameUtils; import org.expeditee.items.Text; public class DirectoryListSetting extends ListSetting { /* public DirectoryListSetting(String tooltip, String name, List value) { super(tooltip, name, value); }*/ public DirectoryListSetting(String tooltip, String name) { super(tooltip, name, new LinkedList()); } @Override public boolean setSetting(Text text) { List dirs = FrameUtils.getDirs(text); if (!dirs.isEmpty()) { _value.clear(); _value.addAll(dirs); } return true; } public List getAbsoluteDirs() { String parent_folder = FrameIO.PARENT_FOLDER; boolean need_file_sep_replace = (!File.separator.equals("/")); List value_absolute_dir = new ArrayList(); for (String rel : _value) { if (need_file_sep_replace) { rel = rel.replace("/",File.separator); } String abs = null; File rel_file = new File(rel); if (rel_file.isAbsolute()) { // The directory being stored somehow wasn't relative to expeditee.home // => use it 'as is' abs = rel; } else { abs = parent_folder + rel; } value_absolute_dir.add(abs); } return value_absolute_dir; } public void addAbsoluteDir(String absolute_dir) { boolean need_file_sep_replace = (!File.separator.equals("/")); String rel = null; if (absolute_dir.startsWith(FrameIO.PARENT_FOLDER)) { // only remove parent_folder if it matches rel = absolute_dir.substring(FrameIO.PARENT_FOLDER.length()); } else { rel = absolute_dir; } if (need_file_sep_replace) { rel = rel.replace(File.separator,"/"); } _value.add(rel); } }