interims commit; preparing CompetitorSelectionModel to be used throughout components depending on competitor selection

This commit is contained in:
Axel Uhl committed 2012-01-17 16:28:16 +01:00
1 parent d9d7ab9f8c
commit 146f36cfce
3 files changed
+108 -5

No files matched your search

@@ -161,7 +161,7 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
});
ranksAndCheckboxAndTailLengthPanel.add(showOnlySelectedCompetitors);
quickRanksListBox = new QuickRanksListBoxComposite(true);
quickRanksListBox = new QuickRanksListBoxComposite(true, competitorSelectionProvider);
quickRanksListBox.addCompetitorSelectionChangeListener(raceMap);
quickRanksListBox.getListBox().setVisibleItemCount(20);
@@ -0,0 +1,99 @@
package com.sap.sailing.gwt.ui.client;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import com.sap.sailing.gwt.ui.shared.CompetitorDAO;
public class CompetitorSelectionModel implements CompetitorSelectionProvider {
private final Set<CompetitorDAO> allCompetitors;
private final Set<CompetitorDAO> selectedCompetitors;
private final Set<CompetitorSelectionChangeListener> listeners;
public CompetitorSelectionModel() {
super();
this.allCompetitors = new HashSet<CompetitorDAO>();
this.selectedCompetitors = new HashSet<CompetitorDAO>();
this.listeners = new HashSet<CompetitorSelectionChangeListener>();
}
/**
* Adds a competitor to the {@link #getAllCompetitors() set of all competitors}. If the competitor was not yet
* contained, it will be deselected.
*/
public void add(CompetitorDAO competitor) {
allCompetitors.add(competitor);
}
/**
* Removes all competitors. Afterwards, this model is empty. Deselection events are issued for all competitors that
* were selected so far.
*/
public void clear() {
Iterator<CompetitorDAO> selIter = getSelectedCompetitors().iterator();
while (selIter.hasNext()) {
CompetitorDAO selected = selIter.next();
setSelected(selected, false);
selIter = getSelectedCompetitors().iterator();
}
assert selectedCompetitors.isEmpty();
allCompetitors.clear();
}
public void addAll(Iterable<CompetitorDAO> competitors) {
for (CompetitorDAO competitor : competitors) {
add(competitor);
}
}
/**
* Removes the competitor from the {@link #getAllCompetitors() set of all competitor}. If the competitor was previously
* contained and selected, it is deselected first.
*/
public void removeCompetitor(CompetitorDAO competitor) {
if (isSelected(competitor)) {
setSelected(competitor, false);
}
allCompetitors.remove(competitor);
}
@Override
public Iterable<CompetitorDAO> getSelectedCompetitors() {
return Collections.unmodifiableCollection(selectedCompetitors);
}
@Override
public Iterable<CompetitorDAO> getAllCompetitors() {
return Collections.unmodifiableCollection(allCompetitors);
}
public void setSelected(CompetitorDAO competitor, boolean selected) {
if (selected) {
if (allCompetitors.contains(competitor)) {
selectedCompetitors.add(competitor);
}
} else {
selectedCompetitors.remove(competitor);
}
}
@Override
public boolean isSelected(CompetitorDAO competitor) {
return selectedCompetitors.contains(competitor);
}
@Override
public void addCompetitorSelectionChangeListener(CompetitorSelectionChangeListener listener) {
listeners.add(listener);
}
@Override
public void removeCompetitorSelectionChangeListener(CompetitorSelectionChangeListener listener) {
listeners.remove(listener);
}
}
@@ -1,15 +1,19 @@
package com.sap.sailing.gwt.ui.client;
import java.util.List;
import com.sap.sailing.gwt.ui.shared.CompetitorDAO;
public interface CompetitorSelectionProvider {
/**
* @return a non-<code>null</code> list which may be empty
* @return a non-<code>null</code> sequence of competitors which may be empty; order doesn't have to be stable; all
* competitors contained in the structure returned are also in the structure returned by
* {@link #getAllCompetitors()} at the time of the call.
*/
List<CompetitorDAO> getSelectedCompetitors();
Iterable<CompetitorDAO> getSelectedCompetitors();
Iterable<CompetitorDAO> getAllCompetitors();
boolean isSelected(CompetitorDAO competitor);
void addCompetitorSelectionChangeListener(CompetitorSelectionChangeListener listener);