package eu.jucy.adlsearch.ui;
import java.util.Arrays;
import java.util.List;
import helpers.IPrefSerializer;
import helpers.PrefConverter;
import helpers.SizeEnum;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import eu.jucy.adlsearch.ADLSearchEntry;
import eu.jucy.adlsearch.Lang;
import uihelpers.ComplexListEditor;
import uihelpers.TableViewerAdministrator.ColumnDescriptor;
public class ADLFieldEditor extends ComplexListEditor<ADLSearchEntry> {
public ADLFieldEditor(String titleText, String prefID,Composite parent) {
this(titleText, prefID, parent, new ADLTranslator());
}
protected ADLFieldEditor(String titleText, String prefID,Composite parent,IPrefSerializer<ADLSearchEntry> entry) {
super(titleText, prefID,
Arrays.asList(new SearchString(),new SearchTypeCol(),
new TargetFolder(),new MinSize(),new MaxSize()),
parent, true, entry);
}
/*
@Override
protected ADLSearchEntry createItemFromString(String item) {
return ItemFromString(item);
}
@Override
protected String createStringFromItem(ADLSearchEntry v) {
return asString(v.toStringAR());
} */
/*
public static ADLSearchEntry ItemFromString(String item) {
String[] ar = asArray(item);
return ADLSearchEntry.fromString(ar);
} */
public static List<ADLSearchEntry> loadFromString(String s) {
return PrefConverter.parseString(s, new ADLTranslator());
/*
List<ADLSearchEntry> ret = new ArrayList<ADLSearchEntry>();
for (String item:loadList(s)) {
ret.add(ItemFromString(item));
}
return ret; */
}
@Override
protected ADLSearchEntry getNewInputObject() {
ADLSearchDialog adld = new ADLSearchDialog(getPage().getShell(),new ADLSearchEntry());
adld.setBlockOnOpen(true);
if (adld.open() == Dialog.OK) {
return adld.getAdlEntry();
}
return null;
}
@Override
protected void changeInputObject(ADLSearchEntry v) {
ADLSearchDialog adld = new ADLSearchDialog(getPage().getShell(),v);
adld.setBlockOnOpen(true);
adld.open();
}
public static class ADLTranslator implements IPrefSerializer<ADLSearchEntry> {
public String[] serialize(ADLSearchEntry t) {
return t.toStringAR();
}
public ADLSearchEntry unSerialize(String[] all) {
return ADLSearchEntry.fromString(all);
}
}
public static abstract class ADLColumn extends ColumnDescriptor<ADLSearchEntry> {
public ADLColumn(int defaultColumnSize, String columnName, int style) {
super(defaultColumnSize, columnName, style);
}
@Override
public Image getImage(ADLSearchEntry x) {
return null;
}
@Override
public Color getForeground(ADLSearchEntry x) {
if (x.isActive()) {
return super.getForeground(x);
} else {
return Display.getCurrent().getSystemColor(SWT.COLOR_GRAY);
}
}
}
public static class SearchString extends ADLColumn {
public SearchString() {
super(120, Lang.ADL_SearchString, SWT.LEAD);
}
@Override
public String getText(ADLSearchEntry x) {
return x.getSearchString();
}
}
public static class SearchTypeCol extends ADLColumn {
public SearchTypeCol() {
super(80, Lang.ADL_SearchType, SWT.LEAD);
}
@Override
public String getText(ADLSearchEntry x) {
return x.getSearchType().toString();
}
}
public static class TargetFolder extends ADLColumn {
public TargetFolder() {
super(80, Lang.ADL_TargetFolder, SWT.LEAD);
}
@Override
public String getText(ADLSearchEntry x) {
return x.getTargetFolder();
}
}
public static class MinSize extends ADLColumn {
public MinSize() {
super(60, Lang.ADL_MinSize, SWT.LEAD);
}
@Override
public String getText(ADLSearchEntry x) {
if (x.getMinSize() == -1) {
return "";
} else {
return SizeEnum.getReadableSize(x.getMinSize());
}
}
}
public static class MaxSize extends ADLColumn {
public MaxSize() {
super(60, Lang.ADL_MaxSize, SWT.LEAD);
}
@Override
public String getText(ADLSearchEntry x) {
if (x.getMaxSize() == -1) {
return "";
} else {
return SizeEnum.getReadableSize(x.getMaxSize());
}
}
}
}