package polly.rx.httpv2; import java.util.Date; import java.util.List; import polly.rx.MSG; import polly.rx.MyPlugin; import polly.rx.core.ScoreBoardManager; import polly.rx.entities.ScoreBoardEntry; import de.skuzzle.polly.http.api.HttpEvent; import de.skuzzle.polly.sdk.Types; import de.skuzzle.polly.sdk.httpv2.html.AbstractHTMLTableModel; import de.skuzzle.polly.sdk.httpv2.html.HTMLElement; import de.skuzzle.polly.sdk.httpv2.html.HTMLElementGroup; import de.skuzzle.polly.sdk.time.Milliseconds; public class ScoreboardTableModel extends AbstractHTMLTableModel<ScoreBoardEntry> { private final static String[] COLUMNS = MSG.scoreboardModelColumns.split(","); //$NON-NLS-1$ private final static String ADD_PNG = "/polly/rx/httpv2/view/chart_curve_add.png"; //$NON-NLS-1$ private final static String CHART_CURVE_PNG = "/polly/rx/httpv2/view/chart_curve.png"; //$NON-NLS-1$ protected final ScoreBoardManager sbManager; public ScoreboardTableModel(ScoreBoardManager sbManager) { this.sbManager = sbManager; this.requirePermission(MyPlugin.SBE_PERMISSION); } @Override public boolean isFilterable(int column) { return column < 8; } @Override public boolean isSortable(int column) { return column < 8; } @Override public String getHeader(int column) { return COLUMNS[column]; } @Override public int getColumnCount() { return COLUMNS.length; } @Override public Object getCellValue(int column, ScoreBoardEntry element) { switch (column) { case 0: return element.getRank(); case 1: return element.getVenadName(); case 2: return element.getClan(); case 3: return element.getPoints(); case 4: return element.getPointsPerDay(); case 5: return new Types.TimespanType(Milliseconds.toSeconds(element.getSpan())); case 6: return element.getEntries(); case 7: return element.getDate(); case 8: final String v = element.getVenadName(); return new HTMLElementGroup().add( new HTMLElement("a").href("#").content( //$NON-NLS-1$ //$NON-NLS-2$ new HTMLElement("img").src(ADD_PNG) //$NON-NLS-1$ .attr("width", "20").attr("height", "20")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ .title(MSG.scoreboardModelCompareTitle) .attr("onclick", "addToCompare('" + v.hashCode() + "', '" + v + "')") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ ).add( new HTMLElement("a").href(RXController.PAGE_SCORE_DETAILS + "?venadName=" + v).content( //$NON-NLS-1$ //$NON-NLS-2$ new HTMLElement("img").src(CHART_CURVE_PNG) //$NON-NLS-1$ .attr("width", "20").attr("height", "20")).title(MSG.scoreboardModelDetailsTitle) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ ); default: return ""; //$NON-NLS-1$ } } @Override public Class<?> getColumnClass(int column) { switch (column) { case 0: case 6: case 3: return Integer.class; case 4: return Double.class; case 5: return Types.class; case 7: return Date.class; default: return super.getColumnClass(column); } } @Override public List<ScoreBoardEntry> getData(HttpEvent e) { List<ScoreBoardEntry> entries = this.sbManager.getEntries(); entries = ScoreBoardEntry.postFilter(entries); return entries; } }