package eu.jucy.op.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.widgets.Composite; import uihelpers.ComplexListEditor; import eu.jucy.adlsearch.ADLSearchEntry; import eu.jucy.adlsearch.ui.ADLFieldEditor; import eu.jucy.op.OpADLEntry; /** * * Implementation of the advanced tableField Editor .. * as already used for normal ADL search. * * @author Quicksilver * */ public class OpADLFieldEditor extends ADLFieldEditor { public OpADLFieldEditor(String titleText, String prefID,Composite parent) { super (titleText,prefID, parent,new OpADLTranslator()); } @Override protected OpADLEntry getNewInputObject() { OpADLDialog diag = new OpADLDialog(getPage().getShell(),new OpADLEntry()); diag.setBlockOnOpen(true); if (diag.open() == Dialog.OK) { return diag.getAdlEntry(); } return null; } @Override protected void changeInputObject(ADLSearchEntry v) { OpADLEntry op = (OpADLEntry)v; OpADLDialog diag = new OpADLDialog(getPage().getShell(),op); diag.setBlockOnOpen(true); diag.open(); } /** * * @param s - string containing all OP ADL entry information * @return a list with all OpADL entries. */ public static List<OpADLEntry> LoadOPADLFromString(String s) { List<ADLSearchEntry> entries = ComplexListEditor.parseString(s, new OpADLTranslator()); List<OpADLEntry> opEntries = new ArrayList<OpADLEntry>(); for (ADLSearchEntry e: entries) { if (e instanceof OpADLEntry) { opEntries.add((OpADLEntry)e); } else { throw new IllegalStateException(); } } return opEntries; } /** * Translator between OpADLEntry and preferences */ public static class OpADLTranslator implements IPrefSerializer<ADLSearchEntry> { public String[] serialize(ADLSearchEntry t) { OpADLEntry ent = (OpADLEntry)t; return ent.toStringAR(); } public OpADLEntry unSerialize(String[] all) { return OpADLEntry.fromStringAR(all); } } }