Merge branch 'asm_14.4.1' of ssh://10.201.30.8:29418/AWIPS2_baseline into master_14.4.1

Former-commit-id: 72c9980a188772b8c055b26ab5831772531df158
This commit is contained in:
Fay.Liang 2015-06-05 17:05:09 -04:00
commit 445da3385d

View file

@ -159,6 +159,7 @@ import com.vividsolutions.jts.geom.Polygon;
* Jul 01, 2014 DR 17450 D. Friedman Use list of templates from backup site. * Jul 01, 2014 DR 17450 D. Friedman Use list of templates from backup site.
* Jul 21, 2014 3419 jsanchez Created a hidden button to make recreating polygons easier. * Jul 21, 2014 3419 jsanchez Created a hidden button to make recreating polygons easier.
* Feb 26, 2015 3353 rjpeter Fixed NPE on clear. * Feb 26, 2015 3353 rjpeter Fixed NPE on clear.
* Jun 05, 2015 DR 17428 D. Friedman Fixed duration-related user interface issues. Added duration logging.
* </pre> * </pre>
* *
* @author chammack * @author chammack
@ -1085,15 +1086,25 @@ public class WarngenDialog extends CaveSWTDialog implements
* @param durations * @param durations
*/ */
public void setDurations(int[] durations) { public void setDurations(int[] durations) {
String[] durList = new String[durations.length]; ArrayList<String> durList = new ArrayList<String>(durations.length);
boolean isDefaultDurationInList = false;
durationList.removeAll(); durationList.removeAll();
for (int i = 0; i < durations.length; i++) { for (int i = 0; i < durations.length; i++) {
if (defaultDuration != null
&& defaultDuration.minutes == durations[i]) {
isDefaultDurationInList = true;
}
DurationData data = new DurationData(durations[i]); DurationData data = new DurationData(durations[i]);
durationList.setData(data.displayString, data); durationList.setData(data.displayString, data);
durList[i] = data.displayString; durList.add(data.displayString);
}
// Add the default duration to the list if what was missing
if (! isDefaultDurationInList && defaultDuration != null) {
durationList.setData(defaultDuration.displayString, defaultDuration);
durList.add(0, defaultDuration.displayString);
} }
durationList.setItems(durList); durationList.setItems(durList.toArray(new String[durList.size()]));
} }
/** /**
@ -1167,6 +1178,8 @@ public class WarngenDialog extends CaveSWTDialog implements
throws InvocationTargetException, InterruptedException { throws InvocationTargetException, InterruptedException {
try { try {
monitor.beginTask("Generating product", 1); monitor.beginTask("Generating product", 1);
statusHandler.debug("using startTime " + startTime.getTime()
+ " endTime " + endTime.getTime());
long t0 = System.currentTimeMillis(); long t0 = System.currentTimeMillis();
String result = TemplateRunner.runTemplate( String result = TemplateRunner.runTemplate(
warngenLayer, startTime.getTime(), warngenLayer, startTime.getTime(),
@ -1313,9 +1326,10 @@ public class WarngenDialog extends CaveSWTDialog implements
* Action for Reset button * Action for Reset button
*/ */
private void resetPressed() { private void resetPressed() {
statusHandler.debug("resetPressed");
int durationToUse = getSelectedDuration();
warngenLayer.resetState(); warngenLayer.resetState();
warngenLayer.getStormTrackState().duration = ((DurationData) durationList restoreDuration(durationToUse);
.getData(durationList.getItem(durationList.getSelectionIndex()))).minutes;
durationList.setEnabled(warngenLayer.getConfiguration() durationList.setEnabled(warngenLayer.getConfiguration()
.isEnableDuration()); .isEnableDuration());
if (lineOfStorms.getSelection()) { if (lineOfStorms.getSelection()) {
@ -1351,6 +1365,7 @@ public class WarngenDialog extends CaveSWTDialog implements
warngenLayer.resetInitialFrame(); warngenLayer.resetInitialFrame();
warngenLayer.setWarningAction(null); warngenLayer.setWarningAction(null);
instructionsLabel.setText("Instructions:"); instructionsLabel.setText("Instructions:");
changeStartEndTimes();
warngenLayer.issueRefresh(); warngenLayer.issueRefresh();
} }
@ -1415,8 +1430,11 @@ public class WarngenDialog extends CaveSWTDialog implements
* Select one storm * Select one storm
*/ */
private void selectOneStorm() { private void selectOneStorm() {
statusHandler.debug("selectOneStorm");
if (warngenLayer.state.followupData == null) { if (warngenLayer.state.followupData == null) {
int savedDuration = warngenLayer.getStormTrackState().duration;
warngenLayer.resetState(); warngenLayer.resetState();
restoreDuration(savedDuration);
warngenLayer.reset("oneStorm"); warngenLayer.reset("oneStorm");
warngenLayer.clearWarningGeometries(); warngenLayer.clearWarningGeometries();
warngenLayer.getStormTrackState().dragMeLine = null; warngenLayer.getStormTrackState().dragMeLine = null;
@ -1432,8 +1450,11 @@ public class WarngenDialog extends CaveSWTDialog implements
* Select line of storms * Select line of storms
*/ */
private void selectLineOfStorms() { private void selectLineOfStorms() {
statusHandler.debug("selectLineOfStorms");
if (warngenLayer.state.followupData == null) { if (warngenLayer.state.followupData == null) {
int savedDuration = warngenLayer.getStormTrackState().duration;
warngenLayer.resetState(); warngenLayer.resetState();
restoreDuration(savedDuration);
warngenLayer.reset("lineOfStorms"); warngenLayer.reset("lineOfStorms");
warngenLayer.clearWarningGeometries(); warngenLayer.clearWarningGeometries();
warngenLayer.getStormTrackState().dragMeLine = null; warngenLayer.getStormTrackState().dragMeLine = null;
@ -1581,6 +1602,7 @@ public class WarngenDialog extends CaveSWTDialog implements
* - The button that has been clicked * - The button that has been clicked
*/ */
private void changeTemplate(String templateName) { private void changeTemplate(String templateName) {
statusHandler.debug("changeTemplate: " + templateName);
String lastAreaSource = warngenLayer.getConfiguration() String lastAreaSource = warngenLayer.getConfiguration()
.getHatchedAreaSource().getAreaSource(); .getHatchedAreaSource().getAreaSource();
@ -1671,11 +1693,11 @@ public class WarngenDialog extends CaveSWTDialog implements
} }
protected void recreateDurations(Combo durList) { protected void recreateDurations(Combo durList) {
setDurations(warngenLayer.getConfiguration().getDurations());
if (warngenLayer.getConfiguration().getDefaultDuration() != 0) { if (warngenLayer.getConfiguration().getDefaultDuration() != 0) {
setDefaultDuration(warngenLayer.getConfiguration() setDefaultDuration(warngenLayer.getConfiguration()
.getDefaultDuration()); .getDefaultDuration());
} }
setDurations(warngenLayer.getConfiguration().getDurations());
durList.setText(defaultDuration.displayString); durList.setText(defaultDuration.displayString);
endTime = DurationUtil.calcEndTime(startTime, defaultDuration.minutes); endTime = DurationUtil.calcEndTime(startTime, defaultDuration.minutes);
end.setText(df.format(endTime.getTime())); end.setText(df.format(endTime.getTime()));
@ -1736,6 +1758,7 @@ public class WarngenDialog extends CaveSWTDialog implements
FollowupData data = (FollowupData) updateListCbo FollowupData data = (FollowupData) updateListCbo
.getData(updateListCbo.getItem(updateListCbo .getData(updateListCbo.getItem(updateListCbo
.getSelectionIndex())); .getSelectionIndex()));
statusHandler.debug("updateListSelected: " + (data != null ? data.getDisplayString() : "(null)"));
Mode currMode = warngenLayer.getStormTrackState().mode; Mode currMode = warngenLayer.getStormTrackState().mode;
if (data != null) { if (data != null) {
// does not refesh if user selected already highlighted option // does not refesh if user selected already highlighted option
@ -1845,6 +1868,8 @@ public class WarngenDialog extends CaveSWTDialog implements
|| (action == WarningAction.EXT)) { || (action == WarningAction.EXT)) {
recreateDurations(durationList); recreateDurations(durationList);
} }
} else {
statusHandler.debug("updateListSelected");
} }
updateListCbo.pack(true); updateListCbo.pack(true);
productType.layout(); productType.layout();
@ -1877,6 +1902,7 @@ public class WarngenDialog extends CaveSWTDialog implements
} }
private void changeSelected() { private void changeSelected() {
statusHandler.debug("changeSelected");
if ((validPeriodDlg == null) || validPeriodDlg.isDisposed()) { if ((validPeriodDlg == null) || validPeriodDlg.isDisposed()) {
validPeriodDlg = new ValidPeriodDialog(shell, startTime, endTime); validPeriodDlg = new ValidPeriodDialog(shell, startTime, endTime);
validPeriodDlg.setCloseCallback(new ICloseCallback() { validPeriodDlg.setCloseCallback(new ICloseCallback() {
@ -1884,6 +1910,7 @@ public class WarngenDialog extends CaveSWTDialog implements
@Override @Override
public void dialogClosed(Object returnValue) { public void dialogClosed(Object returnValue) {
int duration = (Integer) returnValue; int duration = (Integer) returnValue;
statusHandler.debug("changeSelected.dialogClosed: " + duration);
if (duration != -1) { if (duration != -1) {
durationList.setEnabled(false); durationList.setEnabled(false);
endTime.add(Calendar.MINUTE, duration); endTime.add(Calendar.MINUTE, duration);
@ -1908,6 +1935,7 @@ public class WarngenDialog extends CaveSWTDialog implements
private void durationSelected() { private void durationSelected() {
String selection = durationList.getItem(durationList String selection = durationList.getItem(durationList
.getSelectionIndex()); .getSelectionIndex());
statusHandler.debug("durationSelected: " + selection);
endTime = DurationUtil.calcEndTime(extEndTime != null ? extEndTime endTime = DurationUtil.calcEndTime(extEndTime != null ? extEndTime
: startTime, : startTime,
((DurationData) durationList.getData(selection)).minutes); ((DurationData) durationList.getData(selection)).minutes);
@ -2274,8 +2302,7 @@ public class WarngenDialog extends CaveSWTDialog implements
updatePolygon(newWarn); updatePolygon(newWarn);
recreateDurations(durationList); recreateDurations(durationList);
int duration = ((DurationData) durationList.getData(durationList int duration = getSelectedDuration();
.getItem(durationList.getSelectionIndex()))).minutes;
warngenLayer.getStormTrackState().duration = duration; warngenLayer.getStormTrackState().duration = duration;
startTime = TimeUtil.newCalendar(); startTime = TimeUtil.newCalendar();
@ -2597,4 +2624,39 @@ public class WarngenDialog extends CaveSWTDialog implements
return defaultTemplate; return defaultTemplate;
} }
private void restoreDuration(int duration) {
warngenLayer.getStormTrackState().duration =
warngenLayer.getStormTrackState().newDuration = duration;
warngenLayer.getStormTrackState().geomChanged = true;
}
private int getSelectedDuration() {
Exception excToReport= null;
DurationData data = null;
try {
data = (DurationData) durationList.getData(durationList
.getItem(durationList.getSelectionIndex()));
} catch (RuntimeException e) {
excToReport = e;
}
int duration;
if (data != null) {
duration = data.minutes;
} else {
try {
duration = warngenLayer.getConfiguration().getDefaultDuration();
} catch (RuntimeException e) {
if (excToReport == null) {
excToReport = e;
}
duration = 30;
}
statusHandler.handle(Priority.WARN,
"Unable to determine duration from selection in WarnGen dialog. Using default of "
+ duration + " minutes.", excToReport);
}
statusHandler.debug("selected duration is " + duration);
return duration;
}
} }