Omaha #5483 - Fix layout of hydro Toggle Time Series dialog.
Change-Id: I1e3af9de34dc85c3671935787f25d8a9d84ec2d3 Former-commit-id: 0c3c30902be5dd0c3da093b87de97b0539e806ad
This commit is contained in:
parent
884edbe13f
commit
b151a86896
2 changed files with 214 additions and 182 deletions
|
@ -42,6 +42,7 @@ import org.eclipse.swt.events.MouseListener;
|
||||||
import org.eclipse.swt.events.MouseMoveListener;
|
import org.eclipse.swt.events.MouseMoveListener;
|
||||||
import org.eclipse.swt.events.PaintEvent;
|
import org.eclipse.swt.events.PaintEvent;
|
||||||
import org.eclipse.swt.events.PaintListener;
|
import org.eclipse.swt.events.PaintListener;
|
||||||
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
import org.eclipse.swt.graphics.Color;
|
import org.eclipse.swt.graphics.Color;
|
||||||
import org.eclipse.swt.graphics.Font;
|
import org.eclipse.swt.graphics.Font;
|
||||||
import org.eclipse.swt.graphics.GC;
|
import org.eclipse.swt.graphics.GC;
|
||||||
|
@ -142,6 +143,7 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||||
* 05 Sep 2013 #2332 lvenable Fixed memory leaks.
|
* 05 Sep 2013 #2332 lvenable Fixed memory leaks.
|
||||||
* 24 Jan 2013 15959 lbousaidi Swap the corner points of the bounding box when zooming.
|
* 24 Jan 2013 15959 lbousaidi Swap the corner points of the bounding box when zooming.
|
||||||
* 22 Oct 2015 13736 xwei Fixed missing data after zoom, edit, & reset problem
|
* 22 Oct 2015 13736 xwei Fixed missing data after zoom, edit, & reset problem
|
||||||
|
* 06 May 2016 5483 dgilling Change parameter type for handleSelection.
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*
|
*
|
||||||
|
@ -536,9 +538,9 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
if (td.isForecast()) {
|
if (td.isForecast()) {
|
||||||
String traceKey = td.getLid() + td.getPe() + td.getTs()
|
String traceKey = td.getLid() + td.getPe() + td.getTs()
|
||||||
+ td.getDur() + td.getExtremum();
|
+ td.getDur() + td.getExtremum();
|
||||||
if (uniqueList.contains(traceKey))
|
if (uniqueList.contains(traceKey)) {
|
||||||
continue;
|
continue;
|
||||||
else {
|
} else {
|
||||||
uniqueList.add(traceKey);
|
uniqueList.add(traceKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -976,7 +978,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
GRAPHBORDER - fontHeight);
|
GRAPHBORDER - fontHeight);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (td.isTraceOn())
|
if (td.isTraceOn()) {
|
||||||
gc.drawString(dataString + " min="
|
gc.drawString(dataString + " min="
|
||||||
+ twoDecimalFormat.format(min) + " "
|
+ twoDecimalFormat.format(min) + " "
|
||||||
+ graphFormat.format(dateMin) + " max="
|
+ graphFormat.format(dateMin) + " max="
|
||||||
|
@ -986,6 +988,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
+ (dataString.length()
|
+ (dataString.length()
|
||||||
* fontAveWidth * j),
|
* fontAveWidth * j),
|
||||||
GRAPHBORDER - fontHeight);
|
GRAPHBORDER - fontHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (td.isTraceOn()) {
|
if (td.isTraceOn()) {
|
||||||
|
@ -997,7 +1000,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
index += (dataString.length() + 2)
|
index += (dataString.length() + 2)
|
||||||
* fontAveWidth;
|
* fontAveWidth;
|
||||||
|
|
||||||
} else
|
} else {
|
||||||
gc.drawString(dataString + " min="
|
gc.drawString(dataString + " min="
|
||||||
+ twoDecimalFormat.format(min) + " "
|
+ twoDecimalFormat.format(min) + " "
|
||||||
+ graphFormat.format(dateMin) + " max="
|
+ graphFormat.format(dateMin) + " max="
|
||||||
|
@ -1007,6 +1010,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
+ (dataString.length()
|
+ (dataString.length()
|
||||||
* fontAveWidth * j),
|
* fontAveWidth * j),
|
||||||
GRAPHBORDER - fontHeight);
|
GRAPHBORDER - fontHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1136,42 +1140,45 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
td = gd.getTraceData(i);
|
td = gd.getTraceData(i);
|
||||||
if (td != null && td.isTraceOn()) {
|
if (td != null && td.isTraceOn()) {
|
||||||
TimeSeriesPoint[] points = null;
|
TimeSeriesPoint[] points = null;
|
||||||
TimeSeriesPoint[] pointsZoomed = null;
|
TimeSeriesPoint[] pointsZoomed = null;
|
||||||
|
|
||||||
if (zoomed) {
|
if (zoomed) {
|
||||||
points = td.getTsData();
|
points = td.getTsData();
|
||||||
pointsZoomed = td.getZoomedTsData();
|
pointsZoomed = td.getZoomedTsData();
|
||||||
} else {
|
} else {
|
||||||
points = td.getTsData();
|
points = td.getTsData();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( points != null) {
|
if (points != null) {
|
||||||
|
|
||||||
List<TimeSeriesPoint> pointListZoomed = new ArrayList<TimeSeriesPoint>();
|
List<TimeSeriesPoint> pointListZoomed = new ArrayList<TimeSeriesPoint>();
|
||||||
List<TimeSeriesPoint> pointList = new ArrayList<TimeSeriesPoint>();
|
List<TimeSeriesPoint> pointList = new ArrayList<TimeSeriesPoint>();
|
||||||
|
|
||||||
/* Delete the specified point */
|
/* Delete the specified point */
|
||||||
if ((deleteList.size() > 0) && (i == selectedTraceId)) {
|
if ((deleteList.size() > 0) && (i == selectedTraceId)) {
|
||||||
|
|
||||||
for (int j = 0; j < points.length; j++) {
|
for (int j = 0; j < points.length; j++) {
|
||||||
if (!deleteList.contains(j)) {
|
if (!deleteList.contains(j)) {
|
||||||
pointList.add(points[j]);
|
pointList.add(points[j]);
|
||||||
}
|
|
||||||
}
|
|
||||||
td.setTsData(pointList.toArray(new TimeSeriesPoint[pointList.size()]));
|
|
||||||
|
|
||||||
if ( zoomed && pointsZoomed != null ) {
|
|
||||||
|
|
||||||
for (int j = 0; j < pointsZoomed.length; j++) {
|
|
||||||
if (!deleteList.contains(j)) {
|
|
||||||
pointListZoomed.add(pointsZoomed[j]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
td.setZoomedTsData(pointListZoomed.toArray(new TimeSeriesPoint[pointListZoomed.size()]));
|
|
||||||
}
|
}
|
||||||
|
td.setTsData(pointList
|
||||||
|
.toArray(new TimeSeriesPoint[pointList.size()]));
|
||||||
|
|
||||||
|
if (zoomed && pointsZoomed != null) {
|
||||||
|
|
||||||
|
for (int j = 0; j < pointsZoomed.length; j++) {
|
||||||
|
if (!deleteList.contains(j)) {
|
||||||
|
pointListZoomed.add(pointsZoomed[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
td.setZoomedTsData(pointListZoomed
|
||||||
|
.toArray(new TimeSeriesPoint[pointListZoomed
|
||||||
|
.size()]));
|
||||||
|
}
|
||||||
|
|
||||||
deleteIndex = HydroConstants.MISSING_VALUE;
|
deleteIndex = HydroConstants.MISSING_VALUE;
|
||||||
deleteList.clear();
|
deleteList.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set missing */
|
/* Set missing */
|
||||||
|
@ -1181,8 +1188,9 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
pointList.add(points[j]);
|
pointList.add(points[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
td.setTsData(pointList.toArray(new TimeSeriesPoint[pointList.size()]));
|
td.setTsData(pointList
|
||||||
|
.toArray(new TimeSeriesPoint[pointList.size()]));
|
||||||
|
|
||||||
setMissingIndex = HydroConstants.MISSING_VALUE;
|
setMissingIndex = HydroConstants.MISSING_VALUE;
|
||||||
setMissingList.clear();
|
setMissingList.clear();
|
||||||
}
|
}
|
||||||
|
@ -1219,40 +1227,39 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
.toArray(new TimeSeriesPoint[pointList.size()]));
|
.toArray(new TimeSeriesPoint[pointList.size()]));
|
||||||
insertedPoint = null;
|
insertedPoint = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeSeriesPoint[] pointArray = null;
|
TimeSeriesPoint[] pointArray = null;
|
||||||
if (zoomed) {
|
if (zoomed) {
|
||||||
pointArray = td.getZoomedTsData();
|
pointArray = td.getZoomedTsData();
|
||||||
}else{
|
} else {
|
||||||
pointArray = td.getTsData();
|
pointArray = td.getTsData();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pointArray != null) {
|
if (pointArray != null) {
|
||||||
for (int j = 0; j < pointArray.length; j++) {
|
for (int j = 0; j < pointArray.length; j++) {
|
||||||
if (pointArray[j] != null) {
|
if (pointArray[j] != null) {
|
||||||
if (pointArray[j].getY() < yLowest) {
|
if (pointArray[j].getY() < yLowest) {
|
||||||
yLowest = pointArray[j].getY();
|
yLowest = pointArray[j].getY();
|
||||||
minDate = pointArray[j].getX();
|
minDate = pointArray[j].getX();
|
||||||
|
|
||||||
// Set the lowest ymin of the graph
|
// Set the lowest ymin of the graph
|
||||||
if (gd.getYmin() > yLowest) {
|
if (gd.getYmin() > yLowest) {
|
||||||
gd.setYmin(yLowest);
|
gd.setYmin(yLowest);
|
||||||
}
|
|
||||||
}
|
|
||||||
if (pointArray[j].getY() > yHighest) {
|
|
||||||
yHighest = pointArray[j].getY();
|
|
||||||
maxDate = pointArray[j].getX();
|
|
||||||
|
|
||||||
// Set the highest ymax of the graph
|
|
||||||
if (gd.getYmax() < yHighest) {
|
|
||||||
gd.setYmax(yHighest);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end for
|
if (pointArray[j].getY() > yHighest) {
|
||||||
}
|
yHighest = pointArray[j].getY();
|
||||||
|
maxDate = pointArray[j].getX();
|
||||||
|
|
||||||
|
// Set the highest ymax of the graph
|
||||||
|
if (gd.getYmax() < yHighest) {
|
||||||
|
gd.setYmax(yHighest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // end for
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end for
|
} // end for
|
||||||
|
@ -1265,12 +1272,12 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
}
|
}
|
||||||
Date xMin = pixel2x(gd, rubberBandX1 - GRAPHBORDER_LEFT);
|
Date xMin = pixel2x(gd, rubberBandX1 - GRAPHBORDER_LEFT);
|
||||||
Date xMax = pixel2x(gd, rubberBandX2 - GRAPHBORDER_LEFT);
|
Date xMax = pixel2x(gd, rubberBandX2 - GRAPHBORDER_LEFT);
|
||||||
//Swap the corner points of the bounding box when zooming
|
// Swap the corner points of the bounding box when zooming
|
||||||
if (xMin.after(xMax)) {
|
if (xMin.after(xMax)) {
|
||||||
Date xtmp;
|
Date xtmp;
|
||||||
xtmp= xMin;
|
xtmp = xMin;
|
||||||
xMin=xMax;
|
xMin = xMax;
|
||||||
xMax=xtmp;
|
xMax = xtmp;
|
||||||
}
|
}
|
||||||
gd.setXMin(xMin);
|
gd.setXMin(xMin);
|
||||||
gd.setXMax(xMax);
|
gd.setXMax(xMax);
|
||||||
|
@ -1286,12 +1293,12 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
if (ymin < gd.getYmin()) {
|
if (ymin < gd.getYmin()) {
|
||||||
ymin = gd.getYmin();
|
ymin = gd.getYmin();
|
||||||
}
|
}
|
||||||
//Swap the corner points of the bounding box when zooming
|
// Swap the corner points of the bounding box when zooming
|
||||||
if (ymin > ymax) {
|
if (ymin > ymax) {
|
||||||
double ytmp;
|
double ytmp;
|
||||||
ytmp= ymin;
|
ytmp = ymin;
|
||||||
ymin=ymax;
|
ymin = ymax;
|
||||||
ymax=ytmp;
|
ymax = ytmp;
|
||||||
}
|
}
|
||||||
gd.setYmin(ymin);
|
gd.setYmin(ymin);
|
||||||
gd.setYmax(ymax);
|
gd.setYmax(ymax);
|
||||||
|
@ -1489,7 +1496,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
statusHandler.handle(Priority.ERROR, "Error retrieving graph data",
|
statusHandler.handle(Priority.ERROR, "Error retrieving graph data",
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
|
|
||||||
td.setTsData(points.toArray(new TimeSeriesPoint[points.size()]));
|
td.setTsData(points.toArray(new TimeSeriesPoint[points.size()]));
|
||||||
|
|
||||||
td.setPreviousTsData(pointsbak.toArray(new TimeSeriesPoint[pointsbak
|
td.setPreviousTsData(pointsbak.toArray(new TimeSeriesPoint[pointsbak
|
||||||
|
@ -1540,8 +1547,8 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
ttsd.open();
|
ttsd.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleSelection(Event event) {
|
protected void handleSelection(SelectionEvent e) {
|
||||||
Button item = (Button) event.widget;
|
Button item = (Button) e.widget;
|
||||||
TraceData trace = (TraceData) item.getData();
|
TraceData trace = (TraceData) item.getData();
|
||||||
trace.setTraceOn(!trace.isTraceOn());
|
trace.setTraceOn(!trace.isTraceOn());
|
||||||
if (trace.isTraceOn()) {
|
if (trace.isTraceOn()) {
|
||||||
|
@ -1876,10 +1883,11 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
double u = ((x - x1) * p2X + (y - y1) * p2Y)
|
double u = ((x - x1) * p2X + (y - y1) * p2Y)
|
||||||
/ something;
|
/ something;
|
||||||
|
|
||||||
if (u > 1)
|
if (u > 1) {
|
||||||
u = 1;
|
u = 1;
|
||||||
else if (u < 0)
|
} else if (u < 0) {
|
||||||
u = 0;
|
u = 0;
|
||||||
|
}
|
||||||
|
|
||||||
double xx = x1 + u * p2X;
|
double xx = x1 + u * p2X;
|
||||||
double yy = y1 + u * p2Y;
|
double yy = y1 + u * p2Y;
|
||||||
|
@ -1898,8 +1906,9 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (distance < 20) // if less than 20 pixels away
|
if (distance < 20) {
|
||||||
return choosingTrace;
|
return choosingTrace;
|
||||||
|
}
|
||||||
|
|
||||||
return -999;
|
return -999;
|
||||||
}
|
}
|
||||||
|
@ -1955,12 +1964,13 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (traceSelected && dialog.isDelete()) {
|
} else if (traceSelected && dialog.isDelete()) {
|
||||||
if (precipPE) {
|
if (precipPE) {
|
||||||
List<Region> ppl = precipPointList.get(selectedTraceId);
|
List<Region> ppl = precipPointList.get(selectedTraceId);
|
||||||
for (int i = 0; i < ppl.size(); i++) {
|
for (int i = 0; i < ppl.size(); i++) {
|
||||||
if (ppl.get(i).contains(e.x, e.y)) {
|
if (ppl.get(i).contains(e.x, e.y)) {
|
||||||
deleteIndex = i;
|
deleteIndex = i;
|
||||||
deleteList.add( getZoomOffset(selectedTraceId) + deleteIndex );
|
deleteList.add(getZoomOffset(selectedTraceId)
|
||||||
|
+ deleteIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1968,20 +1978,21 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
for (int i = 0; i < prl.size(); i++) {
|
for (int i = 0; i < prl.size(); i++) {
|
||||||
if (prl.get(i).contains(e.x, e.y)) {
|
if (prl.get(i).contains(e.x, e.y)) {
|
||||||
deleteIndex = i;
|
deleteIndex = i;
|
||||||
deleteList.add( getZoomOffset(selectedTraceId) + deleteIndex );
|
deleteList.add(getZoomOffset(selectedTraceId)
|
||||||
|
+ deleteIndex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TraceData td = graphData.getTraceData(selectedTraceId);
|
TraceData td = graphData.getTraceData(selectedTraceId);
|
||||||
|
|
||||||
TimeSeriesPoint[] points = null;
|
TimeSeriesPoint[] points = null;
|
||||||
if (zoomed) {
|
if (zoomed) {
|
||||||
points = td.getZoomedTsData();
|
points = td.getZoomedTsData();
|
||||||
} else {
|
} else {
|
||||||
points = td.getTsData();
|
points = td.getTsData();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < points.length; j++) {
|
for (int j = 0; j < points.length; j++) {
|
||||||
if (j == deleteIndex) {
|
if (j == deleteIndex) {
|
||||||
|
|
||||||
|
@ -1998,7 +2009,8 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
for (int i = 0; i < ppl.size(); i++) {
|
for (int i = 0; i < ppl.size(); i++) {
|
||||||
if (ppl.get(i).contains(e.x, e.y)) {
|
if (ppl.get(i).contains(e.x, e.y)) {
|
||||||
setMissingIndex = i;
|
setMissingIndex = i;
|
||||||
setMissingList.add(getZoomOffset(selectedTraceId) + setMissingIndex);
|
setMissingList.add(getZoomOffset(selectedTraceId)
|
||||||
|
+ setMissingIndex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2007,7 +2019,8 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
for (int i = 0; i < prl.size(); i++) {
|
for (int i = 0; i < prl.size(); i++) {
|
||||||
if (prl.get(i).contains(e.x, e.y)) {
|
if (prl.get(i).contains(e.x, e.y)) {
|
||||||
setMissingIndex = i;
|
setMissingIndex = i;
|
||||||
setMissingList.add(getZoomOffset(selectedTraceId) + setMissingIndex);
|
setMissingList.add(getZoomOffset(selectedTraceId)
|
||||||
|
+ setMissingIndex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2059,7 +2072,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
* Mouse Event
|
* Mouse Event
|
||||||
*/
|
*/
|
||||||
private void handleMouseUpEvent(MouseEvent e) {
|
private void handleMouseUpEvent(MouseEvent e) {
|
||||||
mouseDown = false;
|
mouseDown = false;
|
||||||
|
|
||||||
/* Null the point string or the last location stays displayed */
|
/* Null the point string or the last location stays displayed */
|
||||||
pointString = null;
|
pointString = null;
|
||||||
|
@ -2080,7 +2093,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
dataPts[selectionIndex * 2 + 1] = e.y;
|
dataPts[selectionIndex * 2 + 1] = e.y;
|
||||||
|
|
||||||
graphData.getTraceData(selectedTraceId).setLineData(dataPts);
|
graphData.getTraceData(selectedTraceId).setLineData(dataPts);
|
||||||
|
|
||||||
setEditData(e.y);
|
setEditData(e.y);
|
||||||
pointSelected = false;
|
pointSelected = false;
|
||||||
getAgain = false;
|
getAgain = false;
|
||||||
|
@ -2123,38 +2136,39 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.addDeletePoint(data);
|
dialog.addDeletePoint(data);
|
||||||
deleteList.add( getZoomOffset(selectedTraceId) + i );
|
deleteList.add(getZoomOffset(selectedTraceId) + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteRect = null;
|
deleteRect = null;
|
||||||
|
|
||||||
} else if (traceSelected && dialog.isSetMissing() && (setMissingRect != null) ) {
|
} else if (traceSelected && dialog.isSetMissing()
|
||||||
|
&& (setMissingRect != null)) {
|
||||||
|
|
||||||
TraceData td = graphData.getTraces().get(selectedTraceId);
|
TraceData td = graphData.getTraces().get(selectedTraceId);
|
||||||
|
|
||||||
TimeSeriesPoint[] pointArray = null;
|
TimeSeriesPoint[] pointArray = null;
|
||||||
if (!zoomed) {
|
if (!zoomed) {
|
||||||
pointArray = td.getTsData();
|
pointArray = td.getTsData();
|
||||||
} else {
|
} else {
|
||||||
pointArray = td.getZoomedTsData();
|
pointArray = td.getZoomedTsData();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < pointArray.length; i++) {
|
for (int i = 0; i < pointArray.length; i++) {
|
||||||
if (setMissingRect.contains(pointArray[i].getPixelX(),
|
if (setMissingRect.contains(pointArray[i].getPixelX(),
|
||||||
pointArray[i].getPixelY())) {
|
pointArray[i].getPixelY())) {
|
||||||
ForecastData data = createPoint(td, pointArray[i]);
|
ForecastData data = createPoint(td, pointArray[i]);
|
||||||
data.setValue(new Double(HydroConstants.MISSING_VALUE));
|
data.setValue(new Double(HydroConstants.MISSING_VALUE));
|
||||||
dialog.addEditPoint(data);
|
dialog.addEditPoint(data);
|
||||||
setMissingList.add( getZoomOffset(selectedTraceId) + i );
|
setMissingList.add(getZoomOffset(selectedTraceId) + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setMissingRect = null;
|
setMissingRect = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the data traces */
|
/* Get the data traces */
|
||||||
traceArray = graphData.getTraces();
|
traceArray = graphData.getTraces();
|
||||||
|
|
||||||
// Set true so new regions will be created
|
// Set true so new regions will be created
|
||||||
createRegions = true;
|
createRegions = true;
|
||||||
|
|
||||||
|
@ -2170,13 +2184,13 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
setZoomed(false);
|
setZoomed(false);
|
||||||
dialog.setZoomAction(false);
|
dialog.setZoomAction(false);
|
||||||
traceArray = graphData.getTraces();
|
traceArray = graphData.getTraces();
|
||||||
|
|
||||||
// Set true so new regions will be created
|
// Set true so new regions will be created
|
||||||
createRegions = true;
|
createRegions = true;
|
||||||
|
|
||||||
setCursor(null);
|
setCursor(null);
|
||||||
redraw();
|
redraw();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2202,18 +2216,18 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
graphData.getTraceData(selectedTraceId).setTsData(pa);
|
graphData.getTraceData(selectedTraceId).setTsData(pa);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the value back into the list
|
// set the value back into the list
|
||||||
pa[selectionIndex] = tsp;
|
pa[selectionIndex] = tsp;
|
||||||
ForecastData data = createPoint(td, tsp);
|
ForecastData data = createPoint(td, tsp);
|
||||||
dialog.addEditPoint(data);
|
dialog.addEditPoint(data);
|
||||||
|
|
||||||
if (zoomed) {
|
if (zoomed) {
|
||||||
graphData.getTraceData(selectedTraceId).setZoomedTsData(pa);
|
graphData.getTraceData(selectedTraceId).setZoomedTsData(pa);
|
||||||
} else {
|
} else {
|
||||||
graphData.getTraceData(selectedTraceId).setTsData(pa);
|
graphData.getTraceData(selectedTraceId).setTsData(pa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make the regions around the lines and points
|
* Make the regions around the lines and points
|
||||||
|
@ -2267,8 +2281,9 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
ia[5] = y2 + (y2 - y1) / 5;
|
ia[5] = y2 + (y2 - y1) / 5;
|
||||||
} else if (y2 < y1) {
|
} else if (y2 < y1) {
|
||||||
ia[5] = y2 - (y1 - y2) / 5;
|
ia[5] = y2 - (y1 - y2) / 5;
|
||||||
} else
|
} else {
|
||||||
ia[5] = y2 + 10;
|
ia[5] = y2 + 10;
|
||||||
|
}
|
||||||
|
|
||||||
ia[6] = x1;
|
ia[6] = x1;
|
||||||
ia[7] = y1 + dy;
|
ia[7] = y1 + dy;
|
||||||
|
@ -2853,14 +2868,14 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
public void setZoomed(boolean zoomed) {
|
public void setZoomed(boolean zoomed) {
|
||||||
this.zoomed = zoomed;
|
this.zoomed = zoomed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getZoomOffset(int pSelectedTraceId) {
|
private int getZoomOffset(int pSelectedTraceId) {
|
||||||
|
|
||||||
if (zoomed){
|
if (zoomed) {
|
||||||
TraceData td = graphData.getTraceData(pSelectedTraceId);
|
TraceData td = graphData.getTraceData(pSelectedTraceId);
|
||||||
return td.getZoomIndexOffset();
|
return td.getZoomIndexOffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,99 +19,116 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.viz.hydro.timeseries;
|
package com.raytheon.viz.hydro.timeseries;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.layout.RowLayout;
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Event;
|
|
||||||
import org.eclipse.swt.widgets.Listener;
|
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
|
||||||
import com.raytheon.viz.hydro.CaveHydroSWTDialog;
|
import com.raytheon.viz.hydro.CaveHydroSWTDialog;
|
||||||
import com.raytheon.viz.hydro.timeseries.util.TraceData;
|
import com.raytheon.viz.hydro.timeseries.util.TraceData;
|
||||||
|
import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the popup menu when right/middle click on the Time Series Display.
|
* This class is the popup menu when right/middle click on the Time Series
|
||||||
* There should be only one toggle time series dialog at a time.
|
* Display. There should be only one toggle time series dialog at a time.
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
|
*
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
*
|
||||||
* ---------- ------- ----------- --------------------------
|
* Date Ticket# Engineer Description
|
||||||
* 1/16/2013 15695 wkwock Initial
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Jan 16, 2013 15695 wkwock Initial creation
|
||||||
|
* May 06, 2016 #5483 dgilling Code-cleanup.
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
* @author wkwock
|
* @author wkwock
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class ToggleTimeSeriesDlg extends CaveHydroSWTDialog {
|
public class ToggleTimeSeriesDlg extends CaveHydroSWTDialog {
|
||||||
private static final String DLG_TITLE="Toggle Time Series";
|
|
||||||
private List<TraceData> traceList=null;
|
|
||||||
private TimeSeriesDisplayCanvas tsDisCanvas=null;
|
|
||||||
private static ToggleTimeSeriesDlg oneTTSD=null; //singleton
|
|
||||||
|
|
||||||
public static ToggleTimeSeriesDlg getInstance(Shell parentShell,List<TraceData> traceLst, TimeSeriesDisplayCanvas tsdc) {
|
|
||||||
if (oneTTSD!=null){
|
|
||||||
oneTTSD.close();
|
|
||||||
oneTTSD.disposed();
|
|
||||||
}
|
|
||||||
oneTTSD = new ToggleTimeSeriesDlg(parentShell, traceLst, tsdc) ;
|
|
||||||
return oneTTSD;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ToggleTimeSeriesDlg(Shell parentShell,List<TraceData> traceLst, TimeSeriesDisplayCanvas tsdc) {
|
|
||||||
super(parentShell);
|
|
||||||
this.setText(DLG_TITLE);
|
|
||||||
|
|
||||||
this.traceList=traceLst;
|
|
||||||
this.tsDisCanvas=tsdc;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
private static final String DLG_TITLE = "Toggle Time Series";
|
||||||
protected void initializeComponents(Shell shell) {
|
|
||||||
Composite beginningTimeComp = new Composite(shell, SWT.NONE);
|
|
||||||
RowLayout topLabelCompRl = new RowLayout();
|
|
||||||
beginningTimeComp.setLayout(topLabelCompRl);
|
|
||||||
|
|
||||||
Button[] checkBtns = new Button[traceList.size()];
|
private static ToggleTimeSeriesDlg dialogSingleton = null;
|
||||||
|
|
||||||
for (int i = 0; i < traceList.size(); i++) {
|
|
||||||
TraceData td = traceList.get(i);
|
|
||||||
checkBtns[i] = new Button(shell, SWT.CHECK);
|
|
||||||
String s = null;
|
|
||||||
if (td.isForecast()) {
|
|
||||||
s = this.tsDisCanvas.getFcstPEDTSE(td);
|
|
||||||
} else {
|
|
||||||
s = this.tsDisCanvas.getPEDTSE(td);
|
|
||||||
}
|
|
||||||
if (td.getLineData()!=null && td.getLineData().length>0) {
|
|
||||||
if (td.isTraceOn())
|
|
||||||
checkBtns[i].setSelection(true);
|
|
||||||
else
|
|
||||||
checkBtns[i].setSelection(false);
|
|
||||||
} else {
|
|
||||||
checkBtns[i].setSelection(false);
|
|
||||||
s = s.concat("" + "NO DATA");
|
|
||||||
}
|
|
||||||
|
|
||||||
checkBtns[i].setText(s);
|
private final Collection<TraceData> traceList;
|
||||||
checkBtns[i].setLocation(50*i,250);
|
|
||||||
checkBtns[i].pack();
|
|
||||||
checkBtns[i].setData(td);
|
|
||||||
|
|
||||||
|
|
||||||
checkBtns[i].addListener(SWT.Selection, new Listener() {
|
|
||||||
public void handleEvent(Event event) {
|
|
||||||
handleSelection(event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// We need to make the menu visible
|
|
||||||
beginningTimeComp.setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleSelection(Event event) {
|
private final TimeSeriesDisplayCanvas tsDisCanvas;
|
||||||
this.tsDisCanvas.handleSelection(event);
|
|
||||||
}
|
public static ToggleTimeSeriesDlg getInstance(Shell parentShell,
|
||||||
|
Collection<TraceData> traceLst, TimeSeriesDisplayCanvas tsdc) {
|
||||||
|
if (dialogSingleton != null) {
|
||||||
|
dialogSingleton.close();
|
||||||
|
dialogSingleton.setCloseCallback(new ICloseCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dialogClosed(Object returnValue) {
|
||||||
|
dialogSingleton = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
dialogSingleton = new ToggleTimeSeriesDlg(parentShell, traceLst, tsdc);
|
||||||
|
return dialogSingleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parentShell
|
||||||
|
* @param traceLst
|
||||||
|
* @param tsdc
|
||||||
|
*/
|
||||||
|
private ToggleTimeSeriesDlg(Shell parentShell,
|
||||||
|
Collection<TraceData> traceLst, TimeSeriesDisplayCanvas tsdc) {
|
||||||
|
super(parentShell, SWT.DIALOG_TRIM | SWT.RESIZE, CAVE.NONE);
|
||||||
|
setText(DLG_TITLE);
|
||||||
|
|
||||||
|
this.traceList = traceLst;
|
||||||
|
this.tsDisCanvas = tsdc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initializeComponents(Shell shell) {
|
||||||
|
Composite beginningTimeComp = new Composite(shell, SWT.NONE);
|
||||||
|
beginningTimeComp.setLayout(new GridLayout(1, false));
|
||||||
|
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||||
|
gd.minimumWidth = getDisplay().getDPI().x * 3;
|
||||||
|
beginningTimeComp.setLayoutData(gd);
|
||||||
|
|
||||||
|
for (TraceData td : traceList) {
|
||||||
|
Button checkBox = new Button(beginningTimeComp, SWT.CHECK);
|
||||||
|
checkBox.setData(td);
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
if (td.isForecast()) {
|
||||||
|
sb.append(tsDisCanvas.getFcstPEDTSE(td));
|
||||||
|
} else {
|
||||||
|
sb.append(tsDisCanvas.getPEDTSE(td));
|
||||||
|
}
|
||||||
|
if ((td.getLineData() != null) && (td.getLineData().length > 0)) {
|
||||||
|
checkBox.setSelection(td.isTraceOn());
|
||||||
|
} else {
|
||||||
|
checkBox.setSelection(false);
|
||||||
|
sb.append("NO DATA");
|
||||||
|
}
|
||||||
|
checkBox.setText(sb.toString());
|
||||||
|
|
||||||
|
checkBox.addSelectionListener(new SelectionAdapter() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
handleSelection(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSelection(SelectionEvent e) {
|
||||||
|
this.tsDisCanvas.handleSelection(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue