mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-25 05:23:51 +00:00
Merge branch 'bug3122'
This commit is contained in:
commit
1d64056abb
5 files changed
+86
-22
No files matched your search
@@ -11,6 +11,6 @@
|
||||
</listAttribute>
|
||||
<stringAttribute key="projectName" value="com.sap.sailing.gwt.ui"/>
|
||||
<booleanAttribute key="showLaunchOutput" value="false"/>
|
||||
<stringAttribute key="url" value="http://127.0.0.1:8888/gwt/Home.html"/>
|
||||
<stringAttribute key="url" value="http://127.0.0.1:8888/gwt/AdminConsole.html"/>
|
||||
<stringAttribute key="urlQueryParams" value=""/>
|
||||
</launchConfiguration>
|
||||
+23
-3
@@ -21,6 +21,13 @@ public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements R
|
||||
private RegattaAndRaceIdentifier selectedRace;
|
||||
private boolean autoAdjustPlayMode;
|
||||
private RaceTimesInfoDTO lastRaceTimesInfo;
|
||||
|
||||
/**
|
||||
* When a marker update is required but min/max are not yet initialized, this flag is set. If later
|
||||
* {@link #setMinMax(Date, Date, boolean)} is invoked and this flag is set, a {@link #redrawAllMarkers(RaceTimesInfoDTO)}
|
||||
* will be issued and the flag is cleared.
|
||||
*/
|
||||
private boolean redrawAllMarkersPendingForMinMaxBeingInitialized;
|
||||
|
||||
public RaceTimePanel(Timer timer, TimeRangeWithZoomProvider timeRangeProvider, StringMessages stringMessages,
|
||||
RaceTimesInfoProvider raceTimesInfoProvider, boolean canReplayWhileLiveIsPossible) {
|
||||
@@ -105,7 +112,7 @@ public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements R
|
||||
// maybe show a special state for this like "Race did not start yet"
|
||||
}
|
||||
}
|
||||
lastRaceTimesInfo = raceTimesInfo;
|
||||
lastRaceTimesInfo = raceTimesInfo; // TODO bug 3122: when not redrawn yet because min/max not initialized yet, further redraw is disabled by this.
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -181,6 +188,15 @@ public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements R
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMinMax(Date min, Date max, boolean fireEvent) {
|
||||
super.setMinMax(min, max, fireEvent);
|
||||
if (redrawAllMarkersPendingForMinMaxBeingInitialized && timeSlider.isMinMaxInitialized()) {
|
||||
redrawAllMarkers(lastRaceTimesInfo);
|
||||
redrawAllMarkersPendingForMinMaxBeingInitialized = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When in {@link PlayModes#Replay} mode, tries to put the {@link #timer} to the time point when the last leg was
|
||||
* finished first. If this time point is not (yet?) known, tries to put the {@link #timer} to the
|
||||
@@ -239,8 +255,12 @@ public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements R
|
||||
requiresMarkerUpdate = true;
|
||||
}
|
||||
}
|
||||
if (requiresMarkerUpdate && timeSlider.isMinMaxInitialized()) {
|
||||
redrawAllMarkers(newRaceTimesInfo);
|
||||
if (requiresMarkerUpdate) {
|
||||
if (timeSlider.isMinMaxInitialized()) { // TODO bug 3122 later, the lastRaceTimesInfo will be updated even if not redrawn because min/max not initialized
|
||||
redrawAllMarkers(newRaceTimesInfo);
|
||||
} else {
|
||||
redrawAllMarkersPendingForMinMaxBeingInitialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-7
@@ -420,16 +420,12 @@ public class TimePanel<T extends TimePanelSettings> extends SimplePanel implemen
|
||||
assert min != null && max != null;
|
||||
|
||||
boolean changed = false;
|
||||
if (!max.equals(timeRangeProvider.getToTime())) {
|
||||
if (!max.equals(timeRangeProvider.getToTime()) || !min.equals(timeRangeProvider.getFromTime())) {
|
||||
changed = true;
|
||||
timeSlider.setMaxValue(new Double(max.getTime()), fireEvent);
|
||||
}
|
||||
if (!min.equals(timeRangeProvider.getFromTime())) {
|
||||
changed = true;
|
||||
timeSlider.setMinValue(new Double(min.getTime()), fireEvent);
|
||||
timeSlider.setMinAndMaxValue(new Double(min.getTime()),new Double(max.getTime()), fireEvent);
|
||||
}
|
||||
if (changed) {
|
||||
if(!timeRangeProvider.isZoomed()) {
|
||||
if (!timeRangeProvider.isZoomed()) {
|
||||
timeRangeProvider.setTimeRange(min, max, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.google.gwt.user.client.ui.FocusPanel;
|
||||
import com.google.gwt.user.client.ui.HasValue;
|
||||
import com.google.gwt.user.client.ui.Image;
|
||||
import com.google.gwt.user.client.ui.RequiresResize;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
* A widget that allows the user to select a value within a range of possible values using a sliding bar that responds
|
||||
@@ -704,9 +705,10 @@ public class SliderBar extends FocusPanel implements RequiresResize, HasValue<Do
|
||||
* the current value
|
||||
*/
|
||||
public void setMaxValue(Double maxValue, boolean fireEvent) {
|
||||
this.maxValue = maxValue;
|
||||
drawTickLabels();
|
||||
resetCurrentValue(fireEvent);
|
||||
if (!Util.equalsWithNull(maxValue, this.maxValue)) {
|
||||
this.maxValue = maxValue;
|
||||
onMinMaxValueChanged(fireEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -716,8 +718,40 @@ public class SliderBar extends FocusPanel implements RequiresResize, HasValue<Do
|
||||
* the current value
|
||||
*/
|
||||
public void setMinValue(Double minValue, boolean fireEvent) {
|
||||
this.minValue = minValue;
|
||||
drawTickLabels();
|
||||
if (!Util.equalsWithNull(minValue, this.minValue)) {
|
||||
this.minValue = minValue;
|
||||
onMinMaxValueChanged(fireEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the minimum and maximum value
|
||||
*
|
||||
* @param minValue
|
||||
* the current value for min
|
||||
* @param maxValue
|
||||
* the current valuefor max
|
||||
*/
|
||||
public void setMinAndMaxValue(Double minValue, Double maxValue, boolean fireEvent) {
|
||||
boolean changed = false;
|
||||
if (!Util.equalsWithNull(minValue, this.minValue)) {
|
||||
this.minValue = minValue;
|
||||
changed = true;
|
||||
}
|
||||
if (!Util.equalsWithNull(maxValue, this.maxValue)) {
|
||||
this.maxValue = maxValue;
|
||||
changed = true;
|
||||
}
|
||||
if (changed) {
|
||||
onMinMaxValueChanged(fireEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle value changes of min and/or max value
|
||||
*/
|
||||
protected void onMinMaxValueChanged(boolean fireEvent) {
|
||||
redraw();
|
||||
resetCurrentValue(fireEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@ package com.sap.sse.gwt.client.controls.slider;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.DOM;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.dom.client.Style.Display;
|
||||
import com.google.gwt.dom.client.Style.Position;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.dom.client.Style.Visibility;
|
||||
import com.google.gwt.user.client.DOM;
|
||||
import com.sap.sse.gwt.client.controls.slider.TimeTicksCalculator.NormalizedInterval;
|
||||
import com.sap.sse.gwt.client.controls.slider.TimeTicksCalculator.TickPosition;
|
||||
|
||||
@@ -182,7 +182,7 @@ public class TimeSlider extends SliderBar {
|
||||
return;
|
||||
|
||||
Element knobElement = knobImage.getElement();
|
||||
if(curValue >= minValue && curValue <= maxValue) {
|
||||
if (curValue != null && minValue != null && maxValue != null && curValue >= minValue && curValue <= maxValue) {
|
||||
// Move the knob to the correct position
|
||||
int lineWidth = lineElement.getOffsetWidth();
|
||||
int knobWidth = knobElement.getOffsetWidth();
|
||||
@@ -199,21 +199,35 @@ public class TimeSlider extends SliderBar {
|
||||
}
|
||||
|
||||
public void setMaxValue(Double maxValue, boolean fireEvent) {
|
||||
if(!isZoomed) {
|
||||
if (!isZoomed) {
|
||||
super.setMaxValue(maxValue, fireEvent);
|
||||
} else {
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
calculateTicks();
|
||||
}
|
||||
|
||||
public void setMinValue(Double minValue, boolean fireEvent) {
|
||||
if(!isZoomed) {
|
||||
public void setMinValue(Double minValue, boolean fireEvent) {
|
||||
if (!isZoomed) {
|
||||
super.setMinValue(minValue, fireEvent);
|
||||
} else {
|
||||
this.minValue = minValue;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMinAndMaxValue(Double minValue, Double maxValue, boolean fireEvent) {
|
||||
if (!isZoomed) {
|
||||
super.setMinAndMaxValue(minValue, maxValue, fireEvent);
|
||||
} else {
|
||||
this.minValue = minValue;
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMinMaxValueChanged(boolean fireEvent) {
|
||||
calculateTicks();
|
||||
super.onMinMaxValueChanged(fireEvent);
|
||||
}
|
||||
|
||||
public void setStepSize(double stepSize, boolean fireEvent) {
|
||||
|
||||
Reference in new issue
Block a user