package eu.jucy.op.ui; import java.util.Arrays; import java.util.List; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import eu.jucy.op.CounterFactory; import uihelpers.ComplexListEditor; import uihelpers.TableViewerAdministrator.ColumnDescriptor; public class CounterFieldEditor extends ComplexListEditor<CounterFactory> { protected CounterFieldEditor(String titleText, String prefID,Composite parent) { super(titleText, prefID, Arrays.asList(new CounterName(),new CounterPriority(),new CounterPerFile()), parent, true, new CounterFactoryTranslator()); } @Override protected void changeInputObject(CounterFactory v) { CounterDialog diag = new CounterDialog(getPage().getShell(),v); diag.setBlockOnOpen(true); diag.open(); } @Override protected CounterFactory getNewInputObject() { CounterDialog diag = new CounterDialog(getPage().getShell(),new CounterFactory()); diag.setBlockOnOpen(true); if (diag.open() == Dialog.OK) { return diag.getCounter(); } return null; } public static List<CounterFactory> loadCFFromString(String s) { return ComplexListEditor.parseString(s, new CounterFactoryTranslator()); } public static class CounterFactoryTranslator implements IPrefSerializer< CounterFactory > { public String[] serialize(CounterFactory t) { return t.toStringAR(); } public CounterFactory unSerialize(String[] all) { return CounterFactory.fromStrinngAR(all); } } public static abstract class CounterColumn extends ColumnDescriptor<CounterFactory> { public CounterColumn(int defaultColumnSize, String columnName, int style) { super(defaultColumnSize, columnName, style); } @Override public Image getImage(CounterFactory x) { return null; } } public static class CounterName extends CounterColumn { public CounterName() { super(120, "Name", SWT.LEAD); } @Override public String getText(CounterFactory x) { return x.getName(); } } public static class CounterPriority extends CounterColumn { public CounterPriority() { super(60, "Priotrity", SWT.LEAD); } @Override public String getText(CounterFactory x) { return ""+x.getPriority(); } } public static class CounterPerFile extends CounterColumn { public CounterPerFile() { super(60, "Per File", SWT.LEAD); } @Override public String getText(CounterFactory x) { return x.isPerFile()? "YES" : "NO"; } } }