package eu.jucy.gui.settings;
import helpers.GH;
import java.io.File;
import java.util.Arrays;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import eu.jucy.gui.Lang;
import uc.FavFolders.FavDir;
import uc.FavFolders.FavDirTranslater;
import uihelpers.ComplexListEditor;
import uihelpers.TableViewerAdministrator.ColumnDescriptor;
public class FavoriteDirsFieldEditor extends ComplexListEditor<FavDir> {
public FavoriteDirsFieldEditor(String titleText, String prefID, Composite parent) {
super(titleText, prefID, Arrays.asList(new FavDirNameColumn(),new FavDirsPathColumn()),parent, new FavDirTranslater());
}
@Override
protected FavDir getNewInputObject() {
DirectoryDialog dd = new DirectoryDialog(getPage().getShell());
dd.setText(Lang.ChooseFolder);
dd.setMessage(Lang.ChooseFolder);
String folder = dd.open();
if (folder == null) {
return null;
}
File f = new File(folder);
InputDialog input = new InputDialog(getPage().getShell(),
Lang.VirtualName,
Lang.VirtualName,
f.getName(),new IInputValidator() {
public String isValid(String newText) {
if (GH.isEmpty(newText)) {
return "";
} else {
return null;
}
}
});
input.setBlockOnOpen(true);
String vname = null;
if (input.open() == InputDialog.OK) {
vname = input.getValue();
if (vname != null && !GH.isEmpty(vname)) {
return new FavDir(vname,f);
}
}
return null;
}
public static class FavDirNameColumn extends ColumnDescriptor<FavDir> {
public FavDirNameColumn() {
super(100, Lang.VirtualName);
}
@Override
public Image getImage(FavDir x) {
return null;
}
@Override
public String getText(FavDir x) {
return x.getName();
}
}
public static class FavDirsPathColumn extends ColumnDescriptor<FavDir> {
public FavDirsPathColumn() {
super(300, Lang.Directory);
}
@Override
public Image getImage(FavDir x) {
return null;
}
@Override
public String getText(FavDir x) {
return x.getDirectory().getPath();
}
}
}