mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 11:23:50 +00:00
interims commit; preparing CompetitorSelectionModel to be used throughout components depending on competitor selection
This commit is contained in:
1 parent
d9d7ab9f8c
commit
146f36cfce
3 files changed
+108
-5
No files matched your search
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+99
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+8
-4
@@ -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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user