mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-11 06:40:53 +00:00
tree model and selection model for tree visualization of currently tracked events/regattas/races
This commit is contained in:
1 parent
4446a60bec
commit
a62004a307
4 files changed
+103
-8
No files matched your search
+10
-3
@@ -17,6 +17,7 @@ import com.google.gwt.event.dom.client.KeyUpHandler;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.CellList;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.CellTree;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
@@ -75,7 +76,7 @@ public class EventManagementPanel extends FormPanel {
|
||||
this.setWidget(verticalPanel);
|
||||
verticalPanel.setSize("100%", "100%");
|
||||
|
||||
Grid grid = new Grid(9, 2);
|
||||
Grid grid = new Grid(10, 2);
|
||||
verticalPanel.add(grid);
|
||||
verticalPanel.setCellWidth(grid, "100%");
|
||||
|
||||
@@ -244,13 +245,19 @@ public class EventManagementPanel extends FormPanel {
|
||||
sb.appendEscaped(value.name);
|
||||
}
|
||||
};
|
||||
|
||||
eventsList = new ListDataProvider<EventDAO>();
|
||||
|
||||
TrackedEventsTreeModel trackedEventsModel = new TrackedEventsTreeModel(eventsList);
|
||||
final CellTree eventsCellTree = new CellTree(trackedEventsModel, trackedEventsModel.getRoot());
|
||||
grid.setWidget(8, 0, eventsCellTree);
|
||||
|
||||
final CellList<EventDAO> eventsCellList = new CellList<EventDAO>(eventCell);
|
||||
grid.setWidget(8, 0, eventsCellList);
|
||||
grid.setWidget(9, 0, eventsCellList);
|
||||
grid.getCellFormatter().setHeight(6, 0, "100%");
|
||||
eventsCellList.setWidth("100%");
|
||||
eventsCellList.setVisibleRange(0, 5);
|
||||
eventsCellList.setSelectionModel(new MultiSelectionModel<EventDAO>() {});
|
||||
eventsList = new ListDataProvider<EventDAO>();
|
||||
eventsList.addDataDisplay(eventsCellList);
|
||||
|
||||
Button btnRemove = new Button("Remove");
|
||||
|
||||
Executable
+84
@@ -0,0 +1,84 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.cell.client.AbstractCell;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.TreeViewModel;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceDAO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDAO;
|
||||
|
||||
public class TrackedEventsTreeModel implements TreeViewModel {
|
||||
private final String root = "Events";
|
||||
|
||||
private MultiSelectionModel<?> selectionModel;
|
||||
|
||||
private final ListDataProvider<EventDAO> events;
|
||||
|
||||
public TrackedEventsTreeModel(ListDataProvider<EventDAO> eventsList) {
|
||||
this.events = eventsList;
|
||||
selectionModel = new MultiSelectionModel<Object>();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> MultiSelectionModel<T> getSelectionModel() {
|
||||
return (MultiSelectionModel<T>) selectionModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> NodeInfo<?> getNodeInfo(T value) {
|
||||
if (value == root) {
|
||||
return new DefaultNodeInfo<EventDAO>(events, new EventCell(),
|
||||
getSelectionModel(), /* valueUpdater */ null);
|
||||
} else if (value instanceof EventDAO) {
|
||||
return new DefaultNodeInfo<RegattaDAO>(new ListDataProvider<RegattaDAO>(((EventDAO) value).regattas), new RegattaCell(),
|
||||
getSelectionModel(), /* valueUpdater */ null);
|
||||
} else if (value instanceof RegattaDAO) {
|
||||
return new DefaultNodeInfo<RaceDAO>(new ListDataProvider<RaceDAO>(((RegattaDAO) value).races), new RaceCell(),
|
||||
getSelectionModel(), /* valueUpdater */ null);
|
||||
} else if (value instanceof RaceDAO) {
|
||||
return null; // TODO do we need to return something more "useful" here?
|
||||
} else {
|
||||
throw new RuntimeException("Unknown object type in event tree: "+value+" ("+value.getClass().getName()+")");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeaf(Object value) {
|
||||
if (value == root) {
|
||||
return false;
|
||||
} else if (value instanceof EventDAO) {
|
||||
return false;
|
||||
} else if (value instanceof RegattaDAO) {
|
||||
return ((RegattaDAO) value).races.isEmpty();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public Object getRoot() {
|
||||
return root;
|
||||
}
|
||||
|
||||
private class EventCell extends AbstractCell<EventDAO> {
|
||||
@Override
|
||||
public void render(com.google.gwt.cell.client.Cell.Context context, EventDAO value, SafeHtmlBuilder sb) {
|
||||
sb.appendEscaped(value.name);
|
||||
}
|
||||
}
|
||||
|
||||
private class RegattaCell extends AbstractCell<RegattaDAO> {
|
||||
@Override
|
||||
public void render(com.google.gwt.cell.client.Cell.Context context, RegattaDAO value, SafeHtmlBuilder sb) {
|
||||
sb.appendEscaped(value.boatClass.name);
|
||||
}
|
||||
}
|
||||
|
||||
private class RaceCell extends AbstractCell<RaceDAO> {
|
||||
@Override
|
||||
public void render(com.google.gwt.cell.client.Cell.Context context, RaceDAO value, SafeHtmlBuilder sb) {
|
||||
sb.appendEscaped(value.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,17 @@
|
||||
package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class EventDAO implements IsSerializable {
|
||||
public String name;
|
||||
public Iterable<RegattaDAO> regattas;
|
||||
public Iterable<CompetitorDAO> competitors;
|
||||
public List<RegattaDAO> regattas;
|
||||
public List<CompetitorDAO> competitors;
|
||||
|
||||
public EventDAO() {}
|
||||
|
||||
public EventDAO(String name, Iterable<RegattaDAO> regattas, Iterable<CompetitorDAO> competitors) {
|
||||
public EventDAO(String name, List<RegattaDAO> regattas, List<CompetitorDAO> competitors) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.regattas = regattas;
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class RegattaDAO implements IsSerializable {
|
||||
public BoatClassDAO boatClass;
|
||||
public Iterable<RaceDAO> races;
|
||||
public List<RaceDAO> races;
|
||||
|
||||
public RegattaDAO() {}
|
||||
|
||||
public RegattaDAO(BoatClassDAO boatClass, Iterable<RaceDAO> races) {
|
||||
public RegattaDAO(BoatClassDAO boatClass, List<RaceDAO> races) {
|
||||
super();
|
||||
this.boatClass = boatClass;
|
||||
this.races = races;
|
||||
|
||||
Reference in new issue
Block a user