package eu.jucy.gui.favhub;
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.SWT;
import org.eclipse.swt.graphics.Image;
import eu.jucy.gui.Lang;
import uc.FavHub;
import uihelpers.SUIJob;
import uihelpers.TableViewerAdministrator.ColumnDescriptor;
public abstract class FavHubColumns extends ColumnDescriptor<FavHub> {
private static final Logger logger = LoggerFactory.make();
protected FavHubColumns(int defaultWidth,String columnName) {
this(defaultWidth,columnName,SWT.LEAD);
}
protected FavHubColumns(int defaultWidth,String columnName, int style) {
super(defaultWidth,columnName,style);
}
/**
* no comparator either.. as FavHubs sorting has the meaning of priority..
*/
@Override
public Comparator<FavHub> getComparator() {
return null;
}
/**
* no image for FavHubs
*/
@Override
public Image getImage(FavHub x) {
return null;
}
/**
* first column .. contains code for handling the Checkbox
*
*/
public static class FavHubName extends FavHubColumns {
private final CheckboxTableViewer table;
public FavHubName(CheckboxTableViewer table) {
super(120,Lang.AutoConnect+" / "+Lang.Name);
this.table = table;
table.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent e) {
FavHub fh = (FavHub)e.getElement();
fh.setAutoconnect(e.getChecked());
logger.debug("checked state changed: "+fh.isAutoconnect());
}
});
}
/**
* we don't need a image .. but we use this
* as a hack to set the selection in the table...
* ugly ugly..
*/
@Override
public Image getImage(final FavHub hub) {
new SUIJob(table.getControl()) {
@Override
public void run() {
table.setChecked(hub, hub.isAutoconnect());
}
}.schedule();
logger.debug("checked state set: "+hub.isAutoconnect());
return null;
}
@Override
public String getText(FavHub hub) {
return hub.getHubname();
}
}
public static class Description extends FavHubColumns {
public Description() {
super(200,Lang.Description);
}
@Override
public String getText(FavHub hub) {
return hub.getDescription();
}
}
public static class Nick extends FavHubColumns {
public Nick() {
super(100,Lang.Nick);
}
@Override
public String getText(FavHub hub) {
return hub.getNick();
}
}
public static class Password extends FavHubColumns {
public Password() {
super(80,Lang.Password);
}
@Override
public String getText(FavHub hub) {
return hub.getPassword().replaceAll(".", "*");
}
}
public static class Address extends FavHubColumns {
public Address() {
super(130,Lang.Address);
}
@Override
public String getText(FavHub hub) {
return hub.getHubaddy();
}
}
public static class UserDescription extends FavHubColumns {
public UserDescription() {
super(130,Lang.UserDescription);
}
@Override
public String getText(FavHub hub) {
return hub.getUserDescription();
}
}
public static class Email extends FavHubColumns {
public Email() {
super(100, Lang.EMail);
}
@Override
public String getText(FavHub hub) {
return hub.getEmail();
}
}
public static class ChatOnly extends FavHubColumns {
public ChatOnly() {
super(40,Lang.ChatOnly);
}
@Override
public String getText(FavHub hub) {
return (hub.isChatOnly()? Lang.Yes: Lang.No);
}
}
}