package de.skuzzle.polly.core.internal.httpv2;
import java.util.Date;
import java.util.List;
import de.skuzzle.polly.http.api.HttpEvent;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.UserManager;
import de.skuzzle.polly.sdk.httpv2.html.AbstractHTMLTableModel;
import de.skuzzle.polly.sdk.httpv2.html.HTMLElement;
import de.skuzzle.polly.sdk.httpv2.html.HTMLElementGroup;
public class UserTableModel extends AbstractHTMLTableModel<User> {
private final static String[] COLUMNS = {
MSG.userTableColId,
MSG.userTableColName,
MSG.userTableColNick,
MSG.userTableColIdle,
MSG.userTableColLastAction,
MSG.userTableColLogin,
MSG.userTableColAction
};
private final UserManager um;
public UserTableModel(UserManager um) {
this.um = um;
}
@Override
public String getHeader(int column) {
return COLUMNS[column];
}
@Override
public int getColumnCount() {
return COLUMNS.length;
}
@Override
public Object getCellValue(int column, User element) {
switch (column) {
case 0: return element.getId();
case 1: return element.getName();
case 2: return element.getCurrentNickName();
case 3: return element.isIdle();
case 4: return new Date(element.getLastMessageTime());
case 5: return new Date(element.getLoginTime());
case 6: return new HTMLElementGroup().add(
new HTMLElement("a") //$NON-NLS-1$
.attr("href", UserController.PAGE_EDIT_USER + "?userId="+element.getId()) //$NON-NLS-1$ //$NON-NLS-2$
.content( new HTMLElement("img") //$NON-NLS-1$
.attr("src", "/files/imgv2/user_edit.png") //$NON-NLS-1$ //$NON-NLS-2$
.attr("width", "20") //$NON-NLS-1$ //$NON-NLS-2$
.attr("height", "20").toString() //$NON-NLS-1$ //$NON-NLS-2$
).attr("title", MSG.bind(MSG.userTableEditTitle, element.getName()))) //$NON-NLS-1$
.add(
new HTMLElement("a") //$NON-NLS-1$
.attr("href", "#") //$NON-NLS-1$ //$NON-NLS-2$
.attr("onclick", "deleteUser(" + element.getId() + ", '" + element.getName() + "')") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
.content( new HTMLElement("img") //$NON-NLS-1$
.attr("src", "/files/imgv2/user_delete.png") //$NON-NLS-1$ //$NON-NLS-2$
.attr("width", "20") //$NON-NLS-1$ //$NON-NLS-2$
.attr("height", "20").toString() //$NON-NLS-1$ //$NON-NLS-2$
).attr("title", MSG.bind(MSG.userTableDeleteTitle, element.getName())) //$NON-NLS-1$
);
default: return ""; //$NON-NLS-1$
}
}
@Override
public List<User> getData(HttpEvent e) {
return this.um.getRegisteredUsers();
}
@Override
public boolean isFilterable(int column) {
return column < 6;
}
@Override
public boolean isSortable(int column) {
return column < 6;
}
@Override
public boolean isEditable(int column) {
return false;
}
@Override
public Class<?> getColumnClass(int column) {
switch (column) {
case 0:
case 1:
case 2: return String.class;
case 3: return Boolean.class;
case 4:
case 5: return Date.class;
default: return Object.class;
}
}
}