Refactored the RaceMapSettingsDialog (No Auto-Zoom-OFF checkbox anymore)

This commit is contained in:
Lennart Hensler committed 2012-02-13 11:50:25 +01:00
1 parent 884a655c4c
commit 33c00a4c97
4 files changed
+32 -47

No files matched your search

@@ -34,7 +34,6 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
private final RaceMapSettings initialSettings;
private ArrayList<CheckBox> disableOnlySelectedWhenAreFalse;
private CheckBox autoZoomOffBox;
public RaceMapSettingsDialogComponent(RaceMapSettings settings, StringMessages stringMessages) {
this.stringMessages = stringMessages;
@@ -50,7 +49,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
labelAndTailLengthBoxPanel.add(tailLengthBox);
vp.add(labelAndTailLengthBoxPanel);
zoomOnlyToSelectedCompetitors = new CheckBox(stringMessages.autoZoomSelectedCompetitors());
zoomOnlyToSelectedCompetitors = dialog.createCheckbox(stringMessages.autoZoomSelectedCompetitors());//new CheckBox(stringMessages.autoZoomSelectedCompetitors());
zoomOnlyToSelectedCompetitors.setValue(initialSettings.getZoomSettings().isZoomToSelectedCompetitors());
HorizontalPanel labelAndZoomSettingsPanel = new HorizontalPanel();
@@ -59,23 +58,23 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
VerticalPanel zoomSettingsBoxesPanel = new VerticalPanel();
disableOnlySelectedWhenAreFalse = new ArrayList<CheckBox>();
for (ZoomTypes zoomType : ZoomTypes.values()) {
CheckBox cb = dialog.createCheckbox(ZoomTypeFormatter.format(zoomType, stringMessages));
cb.setValue(initialSettings.getZoomSettings().getTypesToConsiderOnZoom().contains(zoomType), true);
checkboxAndZoomType.add(new Pair<CheckBox, ZoomTypes>(cb, zoomType));
zoomSettingsBoxesPanel.add(cb);
//Save specific checkboxes for easier value change handling
if (zoomType == ZoomTypes.BOATS || zoomType == ZoomTypes.TAILS) {
disableOnlySelectedWhenAreFalse.add(cb);
} else if (zoomType == ZoomTypes.NONE) {
autoZoomOffBox = cb;
}
cb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> event) {
zoomSettingsChanged();
if (zoomType != ZoomTypes.NONE) {
CheckBox cb = dialog.createCheckbox(ZoomTypeFormatter.format(zoomType, stringMessages));
cb.setValue(initialSettings.getZoomSettings().getTypesToConsiderOnZoom().contains(zoomType), true);
checkboxAndZoomType.add(new Pair<CheckBox, ZoomTypes>(cb, zoomType));
zoomSettingsBoxesPanel.add(cb);
//Save specific checkboxes for easier value change handling
if (zoomType == ZoomTypes.BOATS || zoomType == ZoomTypes.TAILS) {
disableOnlySelectedWhenAreFalse.add(cb);
cb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> event) {
zoomSettingsChanged();
}
});
}
});
}
}
labelAndZoomSettingsPanel.add(zoomSettingsBoxesPanel);
vp.add(labelAndZoomSettingsPanel);
@@ -100,30 +99,19 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
}
private void zoomSettingsChanged() {
if (autoZoomOffBox.getValue()) {
for (Pair<CheckBox, ZoomTypes> pair : checkboxAndZoomType) {
if (pair.getB() != ZoomTypes.NONE) {
pair.getA().setEnabled(!autoZoomOffBox.getValue());
pair.getA().setValue(false);
}
}
zoomOnlyToSelectedCompetitors.setEnabled(false);
zoomOnlyToSelectedCompetitors.setValue(false);
} else {
boolean disableOnlySelected = true;
for (Pair<CheckBox, ZoomTypes> pair : checkboxAndZoomType) {
pair.getA().setEnabled(true);
if (disableOnlySelectedWhenAreFalse.contains(pair.getA())) {
if (pair.getA().getValue()) {
disableOnlySelected = false;
}
boolean disableOnlySelected = true;
for (Pair<CheckBox, ZoomTypes> pair : checkboxAndZoomType) {
pair.getA().setEnabled(true);
if (disableOnlySelectedWhenAreFalse.contains(pair.getA())) {
if (pair.getA().getValue()) {
disableOnlySelected = false;
}
}
}
zoomOnlyToSelectedCompetitors.setEnabled(!disableOnlySelected);
if (disableOnlySelected) {
zoomOnlyToSelectedCompetitors.setValue(false);
}
zoomOnlyToSelectedCompetitors.setEnabled(!disableOnlySelected);
if (disableOnlySelected) {
zoomOnlyToSelectedCompetitors.setValue(false);
}
}
@@ -142,11 +130,16 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
private RaceMapZoomSettings getZoomSettings() {
ArrayList<ZoomTypes> zoomTypes = new ArrayList<ZoomTypes>();
boolean noAutoZoomSelected = true;
for (Pair<CheckBox, ZoomTypes> pair : checkboxAndZoomType) {
if (pair.getA().getValue()) {
zoomTypes.add(pair.getB());
noAutoZoomSelected = false;
}
}
if (noAutoZoomSelected) {
zoomTypes.add(ZoomTypes.NONE);
}
return new RaceMapZoomSettings(zoomTypes, zoomOnlyToSelectedCompetitors.getValue());
}
@@ -160,11 +153,6 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
errorMessage = stringMessages.tailLengthMustBeNonNegative();
}
List<ZoomTypes> zoomTypesToValidate = valueToValidate.getZoomSettings().getTypesToConsiderOnZoom();
if (zoomTypesToValidate == null || zoomTypesToValidate.size() <= 0) {
errorMessage = stringMessages.selectOneZoomType() + ".";
}
return errorMessage;
}
};
@@ -249,6 +249,5 @@ public interface StringMessages extends Messages {
String autoZoomOff();
String autoZoomTails();
String autoZoomSelectedCompetitors();
String selectOneZoomType();
String noLeaderboardGroupToLoad();
}
@@ -243,6 +243,5 @@ autoZoomToBoats=Boats
autoZoomToBuoys=Buoys
autoZoomOff=Off
autoZoomTails=Tails
selectOneZoomType=Please select at least one zoom type
autoZoomSelectedCompetitors=Zoom only to selected competitors
noLeaderboardGroupToLoad=No leaderboard group name was given
@@ -244,6 +244,5 @@ autoZoomToBoats=Booten
autoZoomToBuoys=Tonnen
autoZoomOff=Aus
autoZoomTails=Schweife
selectOneZoomType=Bitte mindestens eine Zoom-Art auswählen
autoZoomSelectedCompetitors=Nur zu ausgewählten Seglern zoomen
noLeaderboardGroupToLoad=Es wurde kein Ranglisten-Gruppenname übergeben