package org.visico.neighborhoodpss.gwt.client;
import java.util.ArrayList;
import org.visico.neighborhoodpss.gwt.shared.patterns.ObserverInterface;
import org.visico.neighborhoodpss.gwt.shared.patterns.ScenarioEditMediator;
import org.visico.neighborhoodpss.gwt.shared.patterns.Subject;
import org.visico.neighborhoodpss.domain.project.GeoNetworkDTO;
import org.visico.neighborhoodpss.domain.project.NetworkDTO;
import org.visico.neighborhoodpss.domain.project.ScenarioDTO;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
public class NetworkTable extends Composite
{
//private ScenarioDTO scenario;
private CellTable<NetworkDTO> table = new CellTable<NetworkDTO>();
final SingleSelectionModel<NetworkDTO> selectionModel = new SingleSelectionModel<NetworkDTO>();
ScenarioEditMediator mediator;
public NetworkTable( ScenarioEditMediator med)
{
this.mediator = med;
med.registerNetworkTable(this);
TextColumn<NetworkDTO> nameColumn = new TextColumn<NetworkDTO>() {
@Override
public String getValue(NetworkDTO object) {
return object.getName();
}
};
final SafeHtmlCell coloredCell = new SafeHtmlCell();
Column<NetworkDTO, SafeHtml> colorColumn = new Column<NetworkDTO, SafeHtml>(coloredCell)
{
//this is still quite some fix. But it works to color the cell in the
// respective color of the network
@Override
public SafeHtml getValue(NetworkDTO object) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.appendHtmlConstant("<div style='color: #" + object.getColor()
+ "; background-color: #"
+ object.getColor()
+ ";'>");
sb.appendEscaped("Color");
sb.appendHtmlConstant("</div>");
return sb.toSafeHtml();
}
};
final CheckboxCell showNetworkCell = new CheckboxCell();
Column<NetworkDTO, Boolean> checkBoxColumn = new Column<NetworkDTO, Boolean>(showNetworkCell)
{
@Override
public Boolean getValue(NetworkDTO object) {
return Boolean.TRUE;
//return selectionModel.isSelected(object);
}
};
table.addColumn(nameColumn);
table.addColumn(colorColumn, "Color");
table.addColumn(checkBoxColumn, "Visible");
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
NetworkDTO selected = selectionModel.getSelectedObject();
if (selected != null) {
mediator.setSelectedNetwork(selected);
}
}
});
table.setSelectionModel(selectionModel);
initWidget(table);
}
public void fillTable(ArrayList<GeoNetworkDTO> scenarios)
{
table.setRowCount(scenarios.size());
table.setRowData(0, scenarios);
}
public NetworkDTO getSelectedNetwork() {
return selectionModel.getSelectedObject();
}
}