package eu.jucy.gui.favuser; import java.util.Comparator; import logger.LoggerFactory; import org.apache.log4j.Logger; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.swt.graphics.Image; import eu.jucy.gui.Lang; import uc.IUser; import uc.user.User; import uihelpers.SUIJob; import uihelpers.TableViewerAdministrator.ColumnDescriptor; public abstract class FavUsersColumns extends ColumnDescriptor<IUser> { private static Logger logger = LoggerFactory.make(); protected FavUsersColumns(int defaultColumnSize, String columnName, int style) { super(defaultColumnSize, columnName, style); } protected FavUsersColumns(int defaultColumnSize, String columnName) { super(defaultColumnSize, columnName); } @Override public Comparator<IUser> getComparator() { return new Comparator<IUser>() { public int compare(IUser o1, IUser o2) { int i = Boolean.valueOf(o1.isFavUser()).compareTo(o2.isFavUser()); if (i != 0) { return -i; } else { return getText(o1).compareTo(getText(o2)); } } }; } @Override public Image getImage(IUser usr) { return null; } public static class FUNick extends FavUsersColumns { private final CheckboxTableViewer table; public FUNick(CheckboxTableViewer tab) { super(100,Lang.AutoGrantSlot +" / "+Lang.Nick ); this.table = tab; table.addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent e) { User usr = (User)e.getElement(); logger.debug("changed AutograntSlot: "+usr.getNick()); usr.setAutoGrantSlot(e.getChecked()); table.refresh(usr); } }); } @Override public String getText(IUser usr) { return usr.getNick(); } @Override public Image getImage(final IUser usr) { new SUIJob(table.getControl()) { @Override public void run() { table.setChecked(usr, usr.isAutograntSlot()); } }.schedule(); return null; } } }