Omaha #5483 - Fix layout of hydro Toggle Time Series dialog.

Change-Id: I1e3af9de34dc85c3671935787f25d8a9d84ec2d3

Former-commit-id: 0c3c30902be5dd0c3da093b87de97b0539e806ad
This commit is contained in:
David Gillingham 2016-05-06 16:32:29 -05:00
parent 884edbe13f
commit b151a86896
2 changed files with 214 additions and 182 deletions

View file

@ -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;
} }
} }

View file

@ -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);
}
} }