package com.dawg6.web.dhcalc.client;
import java.util.Comparator;
import java.util.List;
import java.util.Vector;
import com.dawg6.gwt.client.widgets.SimpleCaptionPanel;
import com.dawg6.gwt.client.widgets.SortableTable;
import com.dawg6.gwt.client.widgets.SortableTable.Column;
import com.dawg6.web.dhcalc.shared.calculator.MaxHit;
import com.dawg6.web.dhcalc.shared.calculator.Util;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Label;
public class MaxHitTable extends SimpleCaptionPanel {
private SortableTable<MaxHit> table;
public MaxHitTable() {
super("Maximum Hit Values");
List<Column<MaxHit>> list = new Vector<Column<MaxHit>>();
list.add(new Column<MaxHit>("Shooter", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return o1.shooter.compareToIgnoreCase(o2.shooter);
}}));
list.add(new Column<MaxHit>("Skill", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return o1.source.skill.getLongName().compareToIgnoreCase(o2.source.skill.getLongName());
}}));
list.add(new Column<MaxHit>("Rune", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return o1.source.rune.getLongName().compareToIgnoreCase(o2.source.rune.getLongName());
}}));
list.add(new Column<MaxHit>("Type", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return o1.type.getLongName().compareToIgnoreCase(o2.type.getLongName());
}}));
list.add(new Column<MaxHit>("No Crit", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return Double.compare(o1.noCrit, o2.noCrit);
}}));
list.add(new Column<MaxHit>("Max Crit", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return Double.compare(o1.maxCrit, o2.maxCrit);
}}));
list.add(new Column<MaxHit>("Notes", "dpsCol", new Comparator<MaxHit>(){
@Override
public int compare(MaxHit o1, MaxHit o2) {
return o1.notes.compareToIgnoreCase(o2.notes);
}}));
list.add(new Column<MaxHit>("Calculations", "notes", null));
table = new SortableTable<MaxHit>(new SortableTable.DefaultRenderer<MaxHit>(list) {
@Override
public void renderRow(SortableTable<MaxHit> table, int row,
MaxHit item) {
if ((row % 2) == 0)
table.getRowFormatter().addStyleName(row, "evenRow");
else
table.getRowFormatter().addStyleName(row, "oddRow");
int col = 0;
Label label = new Label(item.shooter, false);
label.addStyleName("notes");
table.setWidget(row, col++, label);
Anchor anchor = new Anchor();
anchor.setTarget("_blank");
anchor.addStyleName("notes");
anchor.setHref(item.source.skill.getUrl());
anchor.setText(item.source.skill.getLongName());
anchor.setWordWrap(false);
table.setWidget(row, col++, anchor);
Anchor anchor2 = new Anchor();
anchor2.setTarget("_blank");
anchor2.addStyleName("notes");
anchor2.setHref(item.source.skill.getUrl(item.source.rune));
anchor2.setText(item.source.rune.getLongName());
anchor2.setWordWrap(false);
table.setWidget(row, col++, anchor2);
Label label1 = new Label(String.valueOf(item.type.getLongName()), false);
label1.addStyleName("notes");
table.setWidget(row, col++, label1);
Label label2 = new Label(Util.format(item.noCrit), false);
label2.addStyleName("dpsCol");
table.setWidget(row, col++, label2);
Label label3 = new Label(Util.format(item.maxCrit), false);
label3.addStyleName("dpsCol");
table.setWidget(row, col++, label3);
Label label4 = new Label(item.notes, false);
label4.addStyleName("notes");
table.setWidget(row, col++, label4);
Label label5 = new Label(item.log, false);
label5.addStyleName("notes");
table.setWidget(row, col++, label5);
row++;
}
@Override
public void renderHeader(SortableTable<MaxHit> table) {
super.renderHeader(table);
table.getRowFormatter().addStyleName(0, "headerRow");
}
});
table.setCellPadding(5);
table.setBorderWidth(1);
table.setStyleName("outputTable");
this.setContentWidget(table);
}
public void setData(List<MaxHit> list) {
table.setData(list);
table.fillTable();
}
}