Issue #1229 Changes for non-blocking HelpUsageDlg.

Reviewer comments.

Change-Id: I4704a93fab83b88041eb942c9a163a6f117a70ea

Former-commit-id: bd22b5b4f1 [formerly cc3c4f311f] [formerly bd22b5b4f1 [formerly cc3c4f311f] [formerly dc6fa3cfd0 [formerly e6ad4922c4bc950fcf9cb184707b3e757373e851]]]
Former-commit-id: dc6fa3cfd0
Former-commit-id: bebf021d69 [formerly b37bea29ba]
Former-commit-id: 2aec2fe200
This commit is contained in:
Roger Ferrel 2012-10-15 12:06:17 -05:00
parent 3de78a1c3f
commit 9f5d4b7d7e
16 changed files with 405 additions and 285 deletions

View file

@ -60,6 +60,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 12 Oct 2012 1229 rferrel Changes for non-blocking TafProductConfigDlg.
* 12 Oct 2012 1229 rferrel Changes for non-blocking TafSiteInfoEditorDlg.
* 15 Oct 2012 1229 rferrel Changes for non-blocking TextEditorSetupDlg.
* 15 Oct 2012 1229 rferrel Changed for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -100,6 +101,8 @@ public class AvnconfigDlg extends CaveSWTDialog {
*/
private ClimateDataMenuDlg climateDataDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -214,11 +217,16 @@ public class AvnconfigDlg extends CaveSWTDialog {
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS Setup Help";
String helpText = "This application is used to configure AvnFPS.\n\nButton description:\n\nText Editor: use to modify forecaster list and default resource\nfile.\n\nMonitoring rules: use to edit watch rules for TAF monitoring.\n\nTAF Site Info: use to create TAF definition files\n\nTAF Products: use to create lists of TAFs to load into forecast\neditor\n\nTriggers: use to create and install Postgres trigger file.\n\nClimate Data: use to create and update HDF5 climate files.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS Setup Help";
String helpText = "This application is used to configure AvnFPS.\n\nButton description:\n\nText Editor: use to modify forecaster list and default resource\nfile.\n\nMonitoring rules: use to edit watch rules for TAF monitoring.\n\nTAF Site Info: use to create TAF definition files\n\nTAF Products: use to create lists of TAFs to load into forecast\neditor\n\nTriggers: use to create and install Postgres trigger file.\n\nClimate Data: use to create and update HDF5 climate files.";
usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}
@ -327,8 +335,7 @@ public class AvnconfigDlg extends CaveSWTDialog {
climateBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
if (climateDataDlg == null || climateDataDlg.getShell() == null
|| climateDataDlg.isDisposed()) {
if (mustCreate(climateDataDlg)) {
climateDataDlg = new ClimateDataMenuDlg(shell);
climateDataDlg.open();
} else {

View file

@ -100,6 +100,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* Oct 08, 2012 #1229 rferrel Changes for non-blocking WindRosePlotDlg.
* Oct 09, 2012 #1229 rferrel Changes for non-blocking MetarDisplayDialog.
* Oct 09, 2012 #1229 rferrel Changes for non-blocking CigVisTrendDlg.
* Oct 15, 2012 #1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -107,10 +108,11 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* @version 1.0
*/
public class ClimateDataMenuDlg extends CaveSWTDialog {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(ClimateDataMenuDlg.class);
private static final Pattern SP_PAT = Pattern.compile("\\s+");
private final Pattern SP_PAT = Pattern.compile("\\s+");
/**
* Text font.
@ -231,6 +233,8 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
private int waitCnt = 0;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -500,11 +504,15 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "CLimate Data Update Dialog Help";
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"ish\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "CLimate Data Update Dialog Help";
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"ish\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -87,6 +87,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 4/4/2011 8896 rferrel Made timeout configurable
* 4/14/2011 8861 rferrel Use SaveImageDlg class
* 04/08/2012 1229 rferrel Made dialog non-blocking.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -96,7 +97,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
*/
public class CigVisDistributionDlg extends CaveSWTDialog implements
PyProcessListener {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(CigVisDistributionDlg.class);
/**
@ -206,6 +207,8 @@ public class CigVisDistributionDlg extends CaveSWTDialog implements
*/
private SaveImageDlg siDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -384,11 +387,15 @@ public class CigVisDistributionDlg extends CaveSWTDialog implements
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS - Ceiling and Visibility Display Help";
String helpText = "This application displays ceiling and visiblity distribution for\nselected time range.\n\nThe distribution is plotted in a form of stacked histogram. \nPlot Type \n By Month - the X axis is month. The category frequency is \n calculated for a selected range of hours.\n By Hour - the X axis is hour of day. The category frequency \n is calculated for a selected range of months.\n By Wind Dir - the X axis is 16 point wind direction. The category \n frequency is calculated for a selected range of \n months and hours.\n\nAuto Redraw \n Forces screen redraw every time a new sites selected or date/time \n widgets are modified.\n\nElement\n Visibility - only visibility thresholds are checked to determine \n flight category\n Ceiling - only ceiling thresholds are checked to determine \n flight category\n Joint - both ceiling and visibility thresholds are checked \n to determine flight category\n\ny-axis scale\n Sets maximum value for the vertical axis. If 'auto' toggle is set,\n the value is computed. Behaves sensibly if selected value is too \n low.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS - Ceiling and Visibility Display Help";
String helpText = "This application displays ceiling and visiblity distribution for\nselected time range.\n\nThe distribution is plotted in a form of stacked histogram. \nPlot Type \n By Month - the X axis is month. The category frequency is \n calculated for a selected range of hours.\n By Hour - the X axis is hour of day. The category frequency \n is calculated for a selected range of months.\n By Wind Dir - the X axis is 16 point wind direction. The category \n frequency is calculated for a selected range of \n months and hours.\n\nAuto Redraw \n Forces screen redraw every time a new sites selected or date/time \n widgets are modified.\n\nElement\n Visibility - only visibility thresholds are checked to determine \n flight category\n Ceiling - only ceiling thresholds are checked to determine \n flight category\n Joint - both ceiling and visibility thresholds are checked \n to determine flight category\n\ny-axis scale\n Sets maximum value for the vertical axis. If 'auto' toggle is set,\n the value is computed. Behaves sensibly if selected value is too \n low.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -72,6 +72,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 3/31/2011 8774 rferrel killProcess when doing a disposed
* 4/14/2011 8861 rferrel Use SaveImageDlg class
* 10/09/2912 1229 rferrel Made non-blocking
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -205,6 +206,8 @@ public class CigVisTrendDlg extends CaveSWTDialog {
*/
private SaveImageDlg siDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -359,11 +362,14 @@ public class CigVisTrendDlg extends CaveSWTDialog {
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS - Ceiling and Visibility Display Help";
String helpText = "This application displays ceiling/visibility trend based\non selected initial conditions.\n\nUse \"Get\" button to retrieve METAR for a selected site.\nThe METAR can be modified.\nUse \"Decode\" button to initialize selection widgets.\nThe initial conditions can be adjusted either by typing\nin the \"value\" and \"range\" windows, or by mouse actions.\nLeft button moves value or an edge of range (red area on\nthe element widget). Middle button is used to move both\nvalue and range. In the \"Wind Direction\" widget use right\nbutton to toggle between wind arrow and a circle representing\ncalm and variable wind.\nUse \"Element\" radiobuttons to select forecasted element.\nPress \"Draw\" to display the forecast.\n\nThe displayed image can be printed or stored in a graphic file.\nUse \"File\" menu for that purpose.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS - Ceiling and Visibility Display Help";
String helpText = "This application displays ceiling/visibility trend based\non selected initial conditions.\n\nUse \"Get\" button to retrieve METAR for a selected site.\nThe METAR can be modified.\nUse \"Decode\" button to initialize selection widgets.\nThe initial conditions can be adjusted either by typing\nin the \"value\" and \"range\" windows, or by mouse actions.\nLeft button moves value or an edge of range (red area on\nthe element widget). Middle button is used to move both\nvalue and range. In the \"Wind Direction\" widget use right\nbutton to toggle between wind arrow and a circle representing\ncalm and variable wind.\nUse \"Element\" radiobuttons to select forecasted element.\nPress \"Draw\" to display the forecast.\n\nThe displayed image can be printed or stored in a graphic file.\nUse \"File\" menu for that purpose.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -70,6 +70,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 10/08/2012 1229 rferrel Changes for non-blocking WindRosePlotDlg.
* 10/09/2012 1229 rferrel Changes for non-blocking MetarDisplayDialog.
* 10/09/2012 1229 rferrel Changes for non-blocking CigVisTrendDlg.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -106,6 +107,8 @@ public class ClimateMenuDlg extends CaveSWTDialog {
private CigVisTrendDlg cigVisTrend;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -234,11 +237,15 @@ public class ClimateMenuDlg extends CaveSWTDialog {
usageMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS Climate Menu - Usage";
String helpText = "This master menu GUI is used to launch applications that display NCDC\nclimatological data for observation sites in a variety of formats.\n\nButton description:\n\nMETARs: use to display reconstructed METARs for a user-defined\n span of days\nWind Rose: displays Wind Rose for selected dates, times and flight\n category conditions\nCigVis Dist: displays ceiling, visibility and flight category\n distributions by month, hour and wind direction\nCigVis Trend: displays 3-12 hour ceiling, visibility and flight\n category forecast based on initial conditions";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS Climate Menu - Usage";
String helpText = "This master menu GUI is used to launch applications that display NCDC\nclimatological data for observation sites in a variety of formats.\n\nButton description:\n\nMETARs: use to display reconstructed METARs for a user-defined\n span of days\nWind Rose: displays Wind Rose for selected dates, times and flight\n category conditions\nCigVis Dist: displays ceiling, visibility and flight category\n distributions by month, hour and wind direction\nCigVis Trend: displays 3-12 hour ceiling, visibility and flight\n category forecast based on initial conditions";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -91,6 +91,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 4/8/2011 8838 rferrel Properly set up "Show Display"
* 4/12/2011 8861 rferrel Added file permission check in savedata
* 10/09/2012 1229 rferrel Change to non-blocking dialog.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -99,7 +100,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
*/
public class MetarDisplayDialog extends CaveSWTDialog implements
PyProcessListener {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(MetarDisplayDialog.class);
/**
@ -166,6 +167,8 @@ public class MetarDisplayDialog extends CaveSWTDialog implements
private PythonProcess pythonScript = null;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -486,11 +489,16 @@ public class MetarDisplayDialog extends CaveSWTDialog implements
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "METAR Display Help";
String helpText = "This dialog is used to display METARs reconstructed from climate data.\n\nMenu Bar\nFile:\n Print: invokes printer selection dialog.\n Save As: invokes file selection dialog.\n\nOptions:\n Show Decoded: toggles between METAR and decoded (ARONET) display \n format\n Update on Selection: when selected, \"Station\", \"Month\", \"Day\" \n and \"Num Days\" changes update the display without \n pressing \"Show\"\n\nDate Selection\n Year: select start year.\n Month: select start month.\n Day: select start day. Range of days is always 1-31, \n year 2000, month 2, day 31 results in data for \n March 2, 2000.\n Num Days: number of days of data to display.\n\nShow: displays reconstructed METARs for the selected dates and \n display format.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "METAR Display Help";
String helpText = "This dialog is used to display METARs reconstructed from climate data.\n\nMenu Bar\nFile:\n Print: invokes printer selection dialog.\n Save As: invokes file selection dialog.\n\nOptions:\n Show Decoded: toggles between METAR and decoded (ARONET) display \n format\n Update on Selection: when selected, \"Station\", \"Month\", \"Day\" \n and \"Num Days\" changes update the display without \n pressing \"Show\"\n\nDate Selection\n Year: select start year.\n Month: select start month.\n Day: select start day. Range of days is always 1-31, \n year 2000, month 2, day 31 results in data for \n March 2, 2000.\n Num Days: number of days of data to display.\n\nShow: displays reconstructed METARs for the selected dates and \n display format.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -87,6 +87,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 04/28/2011 8065 rferrel Use cache data.
* 10/02/2012 1229 rferrel Made dialog non-blocking.
* 10/10/2012 1229 rferrel Changes for non-blocking TimeSelectorDlg.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -218,6 +219,8 @@ public class WeatherPlotDialog extends CaveSWTDialog {
private TimeSelectorDialog timeDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -467,11 +470,14 @@ public class WeatherPlotDialog extends CaveSWTDialog {
helpBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String text = "This dialog is used to display TAFs, METARs and guidance forecasts.\n\nMenus:\n Site ID - pulldown menu displaying list of all TAF sites.\n Selection of a site from the list redraws the window.\n zoom - zoom factor (time scale). \n\nButtons:\n Display - Redraws the window.\n Times - Displays forecast time selection window\n Print - Dumps an image of the window to a command specified in\n the configration file etc/wxplot.cfg.\n Close - Closes this dialog.\n Help - Displays this help.\n\nData Sources - selection of available data sources. ";
String description = "Help";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
text);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "Help";
String helpText = "This dialog is used to display TAFs, METARs and guidance forecasts.\n\nMenus:\n Site ID - pulldown menu displaying list of all TAF sites.\n Selection of a site from the list redraws the window.\n zoom - zoom factor (time scale). \n\nButtons:\n Display - Redraws the window.\n Times - Displays forecast time selection window\n Print - Dumps an image of the window to a command specified in\n the configration file etc/wxplot.cfg.\n Close - Closes this dialog.\n Help - Displays this help.\n\nData Sources - selection of available data sources. ";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -84,6 +84,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* & disabled site controls while drawing
* 04OCT2012 1229 rferrel Changes for non-blocking WindRoseConfigDlg.
* 08OCT2012 1229 rferrel Made non-blocking.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -188,6 +189,8 @@ public class WindRosePlotDlg extends CaveSWTDialog {
private WindRoseConfigDlg configDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -377,11 +380,15 @@ public class WindRosePlotDlg extends CaveSWTDialog {
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS - Wind Rose Display Help";
String helpText = "This application displays wind rose for selected month and hour,\nor range of hours. \n\nTime selection\n Month - selects month.\n Num Months - select number of months of data to display\n Hour - selects hour. \n Num Hours - selects number of hours of data to display\n\nFlight Cat\n This option menu restricts the search to flight category\n conditions at or below the selected value. \"All\" means no\n restrictions.\n\nIf Auto Redraw is selected, changing month, hour, or number of hours\nfields will cause the wind rose to be redrawn for any valid value in\nthese fields.\n\nUse the\"Draw\" button to display wind rose after selecting new site,\nor flight category.\n\nThe displayed image can be printed or stored in a graphic file.\nUse the options under the \"File\" menu for that purpose.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS - Wind Rose Display Help";
String helpText = "This application displays wind rose for selected month and hour,\nor range of hours. \n\nTime selection\n Month - selects month.\n Num Months - select number of months of data to display\n Hour - selects hour. \n Num Hours - selects number of hours of data to display\n\nFlight Cat\n This option menu restricts the search to flight category\n conditions at or below the selected value. \"All\" means no\n restrictions.\n\nIf Auto Redraw is selected, changing month, hour, or number of hours\nfields will cause the wind rose to be redrawn for any valid value in\nthese fields.\n\nUse the\"Draw\" button to display wind rose after selecting new site,\nor flight category.\n\nThe displayed image can be printed or stored in a graphic file.\nUse the options under the \"File\" menu for that purpose.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -221,6 +221,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 11OCT2012 1229 rferrel Converted to a subclass of CaveSWTDialog and
* 12OCT2012 1229 rferrel Changes for non-blocking FindReplaceDlg.
* made non-blocking.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -230,10 +231,10 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
*/
public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
IEditActions {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(TafViewerEditorDlg.class);
private static final String SPLIT_REGEX = "=+[\\s\n]*|\n{2,}|\n$";
private final String SPLIT_REGEX = "=+[\\s\n]*|\n{2,}|\n$";
/**
* The number of editor tabs
@ -525,6 +526,10 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
private SendDialog sendDlg;
private HelpUsageDlg usageDlg;
private HelpUsageDlg keyBindingUsageDlg;
/**
* Constructor.
*
@ -882,6 +887,15 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
if (mustCreate(findDlg) == false) {
findDlg.bringToTop();
}
if (mustCreate(keyBindingUsageDlg) == false) {
keyBindingUsageDlg.bringToTop();
}
if (mustCreate(usageDlg) == false) {
usageDlg.bringToTop();
}
shell.setActive();
}
@ -904,6 +918,14 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
if (mustCreate(findDlg) == false) {
findDlg.hide();
}
if (mustCreate(keyBindingUsageDlg) == false) {
keyBindingUsageDlg.hide();
}
if (mustCreate(usageDlg) == false) {
usageDlg.hide();
}
}
private void setVisible(boolean state) {
@ -1328,53 +1350,57 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
keyBindingMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String text = "Ctrl-u Undo changes.\n"
+ "Ctrl-r Redo changes.\n"
+ "Insert Toggles insert/overwrite mode.\n"
+ "Any-Key Insert normal printing characters.\n"
+ "Button1 Sets the insert point, clear the selection, set focus.\n"
+ "Ctrl-Button1 Set the insert point without affecting the selection.\n"
+ "Button1-Motion Sweep out a selection from the insert point.\n"
+ "Double-Button1 Select the word under the mouse.\n"
+ "Triple-Button1 Select the line under the mouse.\n"
+ "Shift-Button1 Adjust the end of selection closest to the mouse.\n"
+ "Shift-Button1-Motion Continue to adjust the selection.\n"
+ "Button2 Paste the selection, or set the scrolling anchor.\n"
+ "Button2-Motion Scroll the window.\n"
+ "Left or Ctrl-b Move the cursor left one character. Clear selection.\n"
+ "Shift-Left Move the cursor and extend the selection.\n"
+ "Ctrl-Left Move the cursor by words. Clear the selection.\n"
+ "Ctrl-Shift-Left Move the cursor by words. Extend the selection.\n"
+ "Right or Ctrl-f Right bindings are analogous to Left bindings.\n"
+ "Alt-b or Alt Same as Ctrl-Left, Ctrl-Right.\n"
+ "Up or Ctrl-p Move the cursor up one line. Clear the selection.\n"
+ "Ctrl-Up Move the cursor by paragraph which are group of lines separated by a blank line.\n"
+ "Ctrl-Shift-Up Move the cursor by paragraph. Extend selection.\n"
+ "Down or Ctrl-n All Down bindings are analogous to Up bindings.\n"
+ "PgUp, PgDn Move the cursor by one screen. Clear the selection.\n"
+ "Shift-PgUp, Move the cursor by one screen. Extend the selection.\n"
+ "Shift-PgDn\n"
+ "Home or Ctrl-a Move the cursor to line start. Clear the selection.\n"
+ "Shift-Home Move the cursor to line start. Extend the selection.\n"
+ "End or Ctrl-e Move the cursor to line end. Clear the selection.\n"
+ "Shift-End Move the cursor to line end. Extend the selection.\n"
+ "Ctrl-Home Move the cursor to the beginning of text. Clear the selection.\n"
+ "Ctrl-End Move the cursor to the beginning of text. Extend the selection.\n"
+ "Ctrl-/ Select everything in the text widget.\n"
+ "Ctrl-\\ Clear the selection.\n"
+ "Delete Delete the selection, if any. Otherwise delete the character to the right of the cursor.\n"
+ "Backspace or Ctrl-h Delete the selection, if any. Otherwise delete the character to the left of the cursor.\n"
+ "Ctrl-d Delete character to the right of the cursor.\n"
+ "Alt-d Delete word to the right of the cursor.\n"
+ "Ctrl-k Delete from cursor to the end of the line. If you are at the end of the line, delete the newline\n"
+ " character.\n"
+ "Ctrl-o Insert a newline but do not advance the cursor.\n"
+ "Alt-Delete Delete the word to the left of the cursor.\n"
+ "Ctrl-t Transpose the characters on either side of the cursor.";
String description = "Key Bindings";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
text);
usageDlg.open();
if (mustCreate(keyBindingUsageDlg)) {
String description = "Key Bindings";
String helpText = "Ctrl-u Undo changes.\n"
+ "Ctrl-r Redo changes.\n"
+ "Insert Toggles insert/overwrite mode.\n"
+ "Any-Key Insert normal printing characters.\n"
+ "Button1 Sets the insert point, clear the selection, set focus.\n"
+ "Ctrl-Button1 Set the insert point without affecting the selection.\n"
+ "Button1-Motion Sweep out a selection from the insert point.\n"
+ "Double-Button1 Select the word under the mouse.\n"
+ "Triple-Button1 Select the line under the mouse.\n"
+ "Shift-Button1 Adjust the end of selection closest to the mouse.\n"
+ "Shift-Button1-Motion Continue to adjust the selection.\n"
+ "Button2 Paste the selection, or set the scrolling anchor.\n"
+ "Button2-Motion Scroll the window.\n"
+ "Left or Ctrl-b Move the cursor left one character. Clear selection.\n"
+ "Shift-Left Move the cursor and extend the selection.\n"
+ "Ctrl-Left Move the cursor by words. Clear the selection.\n"
+ "Ctrl-Shift-Left Move the cursor by words. Extend the selection.\n"
+ "Right or Ctrl-f Right bindings are analogous to Left bindings.\n"
+ "Alt-b or Alt Same as Ctrl-Left, Ctrl-Right.\n"
+ "Up or Ctrl-p Move the cursor up one line. Clear the selection.\n"
+ "Ctrl-Up Move the cursor by paragraph which are group of lines separated by a blank line.\n"
+ "Ctrl-Shift-Up Move the cursor by paragraph. Extend selection.\n"
+ "Down or Ctrl-n All Down bindings are analogous to Up bindings.\n"
+ "PgUp, PgDn Move the cursor by one screen. Clear the selection.\n"
+ "Shift-PgUp, Move the cursor by one screen. Extend the selection.\n"
+ "Shift-PgDn\n"
+ "Home or Ctrl-a Move the cursor to line start. Clear the selection.\n"
+ "Shift-Home Move the cursor to line start. Extend the selection.\n"
+ "End or Ctrl-e Move the cursor to line end. Clear the selection.\n"
+ "Shift-End Move the cursor to line end. Extend the selection.\n"
+ "Ctrl-Home Move the cursor to the beginning of text. Clear the selection.\n"
+ "Ctrl-End Move the cursor to the beginning of text. Extend the selection.\n"
+ "Ctrl-/ Select everything in the text widget.\n"
+ "Ctrl-\\ Clear the selection.\n"
+ "Delete Delete the selection, if any. Otherwise delete the character to the right of the cursor.\n"
+ "Backspace or Ctrl-h Delete the selection, if any. Otherwise delete the character to the left of the cursor.\n"
+ "Ctrl-d Delete character to the right of the cursor.\n"
+ "Alt-d Delete word to the right of the cursor.\n"
+ "Ctrl-k Delete from cursor to the end of the line. If you are at the end of the line, delete the newline\n"
+ " character.\n"
+ "Ctrl-o Insert a newline but do not advance the cursor.\n"
+ "Alt-Delete Delete the word to the left of the cursor.\n"
+ "Ctrl-t Transpose the characters on either side of the cursor.";
keyBindingUsageDlg = new HelpUsageDlg(shell, description,
helpText);
keyBindingUsageDlg.open();
} else {
keyBindingUsageDlg.bringToTop();
}
}
});
@ -1384,101 +1410,104 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String text = "This is a text editor specialized for composing and checking TAFs.\n"
+ "\n"
+ "The dialog consists of two areas. The top part is for viewing and\n"
+ "editing TAFs, the bottom part displays guidance data.\n"
+ "\n"
+ "The text editor consists of 4 independent pages. Each one displays WMO\n"
+ "header. The 'Rtn', ..., 'Cor' toggles change forecast type. Use\n"
+ "'Clear' button to clear the text window. The 'Tools' combo box\n"
+ "displays list of site-specific utilities to modify the forecast.\n"
+ "\n"
+ "Menus:\n"
+ " Most of the items are relevant when the 'Editor' tab is selected. \n"
+ " File:\n"
+ " Print - call print dialog\n"
+ " Clear Errors - clears error tags set by the formatting \n"
+ " (quality check) action. Can be used to force \n"
+ " transmission of forecasts that did not pass\n"
+ " the Syntax check. It also reverses colors in\n"
+ " the editor window to normal after forecast is\n"
+ " sent\n"
+ " Update Times - updates issue and valid times\n"
+ " Save As - allows to save edited forecast to a file. \n"
+ " Restore From - use to restore forecast from a backup file\n"
+ " Store in DB - use to store forecast in AWIPS text database\n"
+ " Close - closes the editor window\n"
+ "\n"
+ " Options: \n"
+ " Auto Save - toggles auto-save feature\n"
+ " Auto Print - toggles automatic printout of sent forecasts\n"
+ " Update Times on Format - if selected, the issue and valid times in \n"
+ " the forecast are updated before quality control\n"
+ " checks\n"
+ " Send in Collective - Toggles collective versus split bulletin\n"
+ " transmission. Intended for OCONUS sites only.\n"
+ "\n"
+ " Edit:\n"
+ " Provides the usual editing functions (i.e. Cut, Copy, Paste, \n"
+ " and Find/Replace)\n"
+ "\n"
+ "TAF editor area:\n"
+ "\n"
+ "Buttons:\n"
+ " Load: invokes forecast selection dialog. Bulletin (or product) \n"
+ " is selected from 'Bulletins' menu. To load bulletin from \n"
+ " previously saved file, set the 'From file' toggle.\n"
+ " Otherwise the forecasts will be loaded depending on \n"
+ " the 'Load Order' selecton:\n"
+ " Latest: first an attempt is made to access the most \n"
+ " recent previous forecast. If one cannot be found,\n"
+ " a template file is loaded.\n"
+ " Merge: loads previous forecast, then appends template.\n"
+ " The intent is to allow phrases such as\n"
+ " AMD NOT SKED AFT D1HHZ.\n"
+ " Template: loads forecasts from template file.\n"
+ " 'Forecast Type' selection is used to initialize WMO\n"
+ " header (DDHHMM and BBB) fields. These fields will be \n"
+ " updated when forecast is sent. \n"
+ "\n"
+ " Syntax: Performs syntax check and assures proper indentation \n"
+ " and maximum line length. If Syntax Check fails the forecast, \n"
+ " the problem areas will be highlighted. The color \n"
+ " corresponds to the severity of the problem. Red means \n"
+ " the forecast could not be parsed sucessfully. Orange \n"
+ " means error according to NWSI 10-813. Green is a warning.\n"
+ "\n"
+ " QC: Performs selected quality control checks\n"
+ "\n"
+ " Send: Splits the bulletin into separate files, one per site, \n"
+ " which are written to directory 'xmit/pending'. \n"
+ " The transmission program running on the data server is \n"
+ " responsible for actual transmission.\n"
+ " The program will check whether a regular forecast is \n"
+ " sent within the transmission time window. If not, an \n"
+ " error dialog is displayed.\n"
+ "\n"
+ " Save: Stores bulletin as a work TAF in a file\n"
+ "\n"
+ " Restore: Restores bulletin from the work file\n"
+ "\n"
+ "Toggles:\n"
+ " Insert - toggles insert/overwrite mode\n"
+ " Wrap - if selected, the line is folded when its length\n"
+ " exceedes window width. Has no effect on \n"
+ " the final format.\n"
+ "\n"
+ "Viewer area:\n"
+ " Use 'Site ID' combo box to view site data from the list of \n"
+ " currently monitored sites. \n"
+ " Select page in the notebook for a specific data source. The list \n"
+ " of data sources is configurable. A set of display options is \n"
+ " available, depending on the data source.";
String description = "Usage";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
text);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "Usage";
String helpText = "This is a text editor specialized for composing and checking TAFs.\n"
+ "\n"
+ "The dialog consists of two areas. The top part is for viewing and\n"
+ "editing TAFs, the bottom part displays guidance data.\n"
+ "\n"
+ "The text editor consists of 4 independent pages. Each one displays WMO\n"
+ "header. The 'Rtn', ..., 'Cor' toggles change forecast type. Use\n"
+ "'Clear' button to clear the text window. The 'Tools' combo box\n"
+ "displays list of site-specific utilities to modify the forecast.\n"
+ "\n"
+ "Menus:\n"
+ " Most of the items are relevant when the 'Editor' tab is selected. \n"
+ " File:\n"
+ " Print - call print dialog\n"
+ " Clear Errors - clears error tags set by the formatting \n"
+ " (quality check) action. Can be used to force \n"
+ " transmission of forecasts that did not pass\n"
+ " the Syntax check. It also reverses colors in\n"
+ " the editor window to normal after forecast is\n"
+ " sent\n"
+ " Update Times - updates issue and valid times\n"
+ " Save As - allows to save edited forecast to a file. \n"
+ " Restore From - use to restore forecast from a backup file\n"
+ " Store in DB - use to store forecast in AWIPS text database\n"
+ " Close - closes the editor window\n"
+ "\n"
+ " Options: \n"
+ " Auto Save - toggles auto-save feature\n"
+ " Auto Print - toggles automatic printout of sent forecasts\n"
+ " Update Times on Format - if selected, the issue and valid times in \n"
+ " the forecast are updated before quality control\n"
+ " checks\n"
+ " Send in Collective - Toggles collective versus split bulletin\n"
+ " transmission. Intended for OCONUS sites only.\n"
+ "\n"
+ " Edit:\n"
+ " Provides the usual editing functions (i.e. Cut, Copy, Paste, \n"
+ " and Find/Replace)\n"
+ "\n"
+ "TAF editor area:\n"
+ "\n"
+ "Buttons:\n"
+ " Load: invokes forecast selection dialog. Bulletin (or product) \n"
+ " is selected from 'Bulletins' menu. To load bulletin from \n"
+ " previously saved file, set the 'From file' toggle.\n"
+ " Otherwise the forecasts will be loaded depending on \n"
+ " the 'Load Order' selecton:\n"
+ " Latest: first an attempt is made to access the most \n"
+ " recent previous forecast. If one cannot be found,\n"
+ " a template file is loaded.\n"
+ " Merge: loads previous forecast, then appends template.\n"
+ " The intent is to allow phrases such as\n"
+ " AMD NOT SKED AFT D1HHZ.\n"
+ " Template: loads forecasts from template file.\n"
+ " 'Forecast Type' selection is used to initialize WMO\n"
+ " header (DDHHMM and BBB) fields. These fields will be \n"
+ " updated when forecast is sent. \n"
+ "\n"
+ " Syntax: Performs syntax check and assures proper indentation \n"
+ " and maximum line length. If Syntax Check fails the forecast, \n"
+ " the problem areas will be highlighted. The color \n"
+ " corresponds to the severity of the problem. Red means \n"
+ " the forecast could not be parsed sucessfully. Orange \n"
+ " means error according to NWSI 10-813. Green is a warning.\n"
+ "\n"
+ " QC: Performs selected quality control checks\n"
+ "\n"
+ " Send: Splits the bulletin into separate files, one per site, \n"
+ " which are written to directory 'xmit/pending'. \n"
+ " The transmission program running on the data server is \n"
+ " responsible for actual transmission.\n"
+ " The program will check whether a regular forecast is \n"
+ " sent within the transmission time window. If not, an \n"
+ " error dialog is displayed.\n"
+ "\n"
+ " Save: Stores bulletin as a work TAF in a file\n"
+ "\n"
+ " Restore: Restores bulletin from the work file\n"
+ "\n"
+ "Toggles:\n"
+ " Insert - toggles insert/overwrite mode\n"
+ " Wrap - if selected, the line is folded when its length\n"
+ " exceedes window width. Has no effect on \n"
+ " the final format.\n"
+ "\n"
+ "Viewer area:\n"
+ " Use 'Site ID' combo box to view site data from the list of \n"
+ " currently monitored sites. \n"
+ " Select page in the notebook for a specific data source. The list \n"
+ " of data sources is configurable. A set of display options is \n"
+ " available, depending on the data source.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}
@ -1678,8 +1707,7 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
loadBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
if (loadDlg == null || loadDlg.getShell() == null
|| loadDlg.isDisposed()) {
if (mustCreate(loadDlg)) {
loadDlg = new LoaderDialog(shell, TafViewerEditorDlg.this);
loadDlg.open();
} else {

View file

@ -138,6 +138,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 10/10/2012 1229 jkorman Changes for AlertDialog to support non-blocking.
* 10/11/2012 1229 jkorman Changes for BackupDialog to support non-blocking.
* 10/11/2012 1229 rferrel Changes for non-blocking TafViewerEditorDlg.
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
* </pre>
*
* @author grichard
@ -199,7 +200,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
*
*/
private BackupDialog backupDialog;
/**
* Alert configuration dialog.
*/
@ -257,6 +258,8 @@ public class TafMonitorDlg extends CaveSWTDialog {
private TransmissionQueueDlg tqDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -518,8 +521,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
setupMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
if (resDlg == null || resDlg.getShell() == null
|| resDlg.isDisposed()) {
if (mustCreate(resDlg)) {
resDlg = new ResourceEditorDlg(shell);
resDlg.open();
} else {
@ -537,8 +539,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
@Override
public void widgetSelected(SelectionEvent event) {
// Do we need to create a new dialog?
if ((alertDialog == null) || (alertDialog.getShell() == null)
|| (alertDialog.isDisposed())) {
if (mustCreate(alertDialog)) {
alertDialog = new AlertDialog(shell);
alertDialog.open();
} else {
@ -604,11 +605,15 @@ public class TafMonitorDlg extends CaveSWTDialog {
usageMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String text = "This is the main interface to AvnFPS.\n\nAll menus and buttons have associated help. When the mouse cursor is\nplaced over context sensitive help's 'hot spot', a 'balloon' message\nwill appear.\n\nSuccessful completion of a task is usually shown in a message window\nat the bottom of the main GUI or dialogs. Important system messages\nwill be shown there also. When an error occurs, a warning/error\ndialog will pop up which requires acknowledgment before one can\ninteract further with the application.\n\nMenu options:\n File:\n Check Now: Forces check of all TAFs and transmission\n status.\n Restart: Restarts the program, using current \n configuration\n Quit: Terminates the application.\n\n Options:\n Setup: Calls setup configuration dialog which \n allows for setting configuration \n resources: fonts, colors and values that \n affect program behavior.\n Alert: Used to select alert criteria 'on-the-fly' \n when the program detects a condition \n requiring forecaster's action.\n Blink: If selected, station id button will blink\n when new notification arrives\n Help:\n Used to provide version number and location of AvnFPS\n documentation web sites and this help window.\n\nTAF Editor: Starts TAF editor\nClimate: Displays Climate GUI\nPlot: Displays Weather Plot GUI\nBackup: Invokes list dialog allowing selection of products to \n monitor.\n\nServer status indicators. green means server is running, red indicates\nserious misconfiguration of a server(s) or a large (> 1 minute) clock\ndifference (skew) between px2f and workstations.\n\nDATA-xxx: Provides data to the GUI. The monitor will not function \n without this server running.\n \nINGEST-xxx: Data ingest server. You may still issue forecasts when \n this server is not running, although program will not update\n with new information as it arrives.\n \nXMIT-xxx: Forecast transmission server\n\nQueue: Background color indicates whether last issued forecast was \n successfully transmitted. The button invokes transmission queue\n control dialog.\n\nProduct monitoring window consists of the following units:\n\nSite Id button: used to invoke TAF editor. Its background color is used \n to indicate problem with data. A new alert will cause the button \n to blink. Press right mouse button to stop blinking.\n \nLast TAF and METAR time labels: those display issue time. When either\n one is late, the corresponding label is highlighted. If there \n is no TAF, or TAF is older than 24 hours, time is set to None \n for both TAF and MTR. \n\nFor each monitored data source there is a set of labels indicating \nwhether a particular weather element is in agreement with the forecast.\n\nThe following data sources are currently available:\n\nCurrent Observation: Most recent observation\nNhr Persistence: Most recent observation compared to forecast N hours \n ahead\nltg: Real-time CG lightning strikes\nrltg: Radar-based 3 hour lightning probability forecast\nNDFD Grids: GFE generated grids\nllws: Low Level Wind Shear, based on METAR and radars', profilers'\n or aircrafts' vertical wind profile data\nccfp: Collaborative Convective Forecast Product from AWC\n\nDepending on configuration, some of the above can be accessed through \npopup menus associated with the data source heading labels. Use right \nmouse button to display the menu. Not all labels have an associated \nmenu.\n\nBy pointing mouse cursor at a particular data source you will get \nthe forecast, that data values and list of violated rules, if any,\ndisplayed in a balloon message.\n\nOptional shortcut buttons to the TAF Editor.\nAmd: call TAF editor initialized for amended TAF for selected site.\nRtd: call TAF editor initialized for delayed TAF for selected site.\nCor: call TAF editor initialized for corrected TAF for selected site.";
String description = "Usage";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
text);
usageDlg.open();
if (mustCreate(usageDlg)) {
String descrription = "Usage";
String helpText = "This is the main interface to AvnFPS.\n\nAll menus and buttons have associated help. When the mouse cursor is\nplaced over context sensitive help's 'hot spot', a 'balloon' message\nwill appear.\n\nSuccessful completion of a task is usually shown in a message window\nat the bottom of the main GUI or dialogs. Important system messages\nwill be shown there also. When an error occurs, a warning/error\ndialog will pop up which requires acknowledgment before one can\ninteract further with the application.\n\nMenu options:\n File:\n Check Now: Forces check of all TAFs and transmission\n status.\n Restart: Restarts the program, using current \n configuration\n Quit: Terminates the application.\n\n Options:\n Setup: Calls setup configuration dialog which \n allows for setting configuration \n resources: fonts, colors and values that \n affect program behavior.\n Alert: Used to select alert criteria 'on-the-fly' \n when the program detects a condition \n requiring forecaster's action.\n Blink: If selected, station id button will blink\n when new notification arrives\n Help:\n Used to provide version number and location of AvnFPS\n documentation web sites and this help window.\n\nTAF Editor: Starts TAF editor\nClimate: Displays Climate GUI\nPlot: Displays Weather Plot GUI\nBackup: Invokes list dialog allowing selection of products to \n monitor.\n\nServer status indicators. green means server is running, red indicates\nserious misconfiguration of a server(s) or a large (> 1 minute) clock\ndifference (skew) between px2f and workstations.\n\nDATA-xxx: Provides data to the GUI. The monitor will not function \n without this server running.\n \nINGEST-xxx: Data ingest server. You may still issue forecasts when \n this server is not running, although program will not update\n with new information as it arrives.\n \nXMIT-xxx: Forecast transmission server\n\nQueue: Background color indicates whether last issued forecast was \n successfully transmitted. The button invokes transmission queue\n control dialog.\n\nProduct monitoring window consists of the following units:\n\nSite Id button: used to invoke TAF editor. Its background color is used \n to indicate problem with data. A new alert will cause the button \n to blink. Press right mouse button to stop blinking.\n \nLast TAF and METAR time labels: those display issue time. When either\n one is late, the corresponding label is highlighted. If there \n is no TAF, or TAF is older than 24 hours, time is set to None \n for both TAF and MTR. \n\nFor each monitored data source there is a set of labels indicating \nwhether a particular weather element is in agreement with the forecast.\n\nThe following data sources are currently available:\n\nCurrent Observation: Most recent observation\nNhr Persistence: Most recent observation compared to forecast N hours \n ahead\nltg: Real-time CG lightning strikes\nrltg: Radar-based 3 hour lightning probability forecast\nNDFD Grids: GFE generated grids\nllws: Low Level Wind Shear, based on METAR and radars', profilers'\n or aircrafts' vertical wind profile data\nccfp: Collaborative Convective Forecast Product from AWC\n\nDepending on configuration, some of the above can be accessed through \npopup menus associated with the data source heading labels. Use right \nmouse button to display the menu. Not all labels have an associated \nmenu.\n\nBy pointing mouse cursor at a particular data source you will get \nthe forecast, that data values and list of violated rules, if any,\ndisplayed in a balloon message.\n\nOptional shortcut buttons to the TAF Editor.\nAmd: call TAF editor initialized for amended TAF for selected site.\nRtd: call TAF editor initialized for delayed TAF for selected site.\nCor: call TAF editor initialized for corrected TAF for selected site.";
usageDlg = new HelpUsageDlg(shell, descrription, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}
@ -661,8 +666,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
msgTypes[2] = StatusMessageType.TafMonCigVis;
msgTypes[3] = StatusMessageType.TafMonCigVisTrend;
if (climateMenuDlg == null || climateMenuDlg.getShell() == null
|| climateMenuDlg.isDisposed()) {
if (mustCreate(climateMenuDlg)) {
climateMenuDlg = new ClimateMenuDlg(shell, msgTypes,
configMgr.getDefaultBackgroundRGB());
climateMenuDlg.open();
@ -681,8 +685,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
@Override
public void widgetSelected(SelectionEvent event) {
if (avnPlotDlg == null || avnPlotDlg.getShell() == null
|| avnPlotDlg.isDisposed()) {
if (mustCreate(avnPlotDlg)) {
avnPlotDlg = new WeatherPlotDialog(shell,
StatusMessageType.WeatherPlot, stationList);
avnPlotDlg.setCloseCallback(new ICloseCallback() {
@ -707,9 +710,8 @@ public class TafMonitorDlg extends CaveSWTDialog {
backupBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
if(mustCreate(backupDialog)) {
backupDialog = new BackupDialog(shell,
productDisplayList);
if (mustCreate(backupDialog)) {
backupDialog = new BackupDialog(shell, productDisplayList);
backupDialog.open();
} else {
// No, so use the existing dialog.
@ -727,8 +729,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
queueBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
if (tqDlg == null || tqDlg.getShell() == null
|| tqDlg.isDisposed()) {
if (mustCreate(tqDlg)) {
tqDlg = new TransmissionQueueDlg(shell);
tqDlg.open();
} else {

View file

@ -61,6 +61,7 @@ import com.raytheon.viz.ui.widgets.ToggleSelectList;
* 28 FEB 2008 938 lvenable Initial creation
* 14 MAY 2012 14715 rferrel Use EDEX to perform requests.
* 10 OCT 2012 1229 rferrel Make dialog non-blocking.
* 10 OCT 2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -69,26 +70,6 @@ import com.raytheon.viz.ui.widgets.ToggleSelectList;
*
*/
public class TransmissionQueueDlg extends CaveSWTDialog {
private static String helpText = "This dialog is used to manage transmission and transmission log files.\n\n"
+ "The top area manages the forecast files written by the forecast editor.\n"
+ "The 'Files' scrolled list window lists files in one of 'pending', 'sent'\n"
+ "and 'bad' directories. The time is when the file was written. The file\n"
+ "name is \n"
+ " xxx-CCCCNNNXXX-yymmddHHMM-BBB\n"
+ "where xxx is the forecaster number. The transmission program \n"
+ "avnxmitserv uses NNN to determine the transmission window for regular\n"
+ "forecasts.\n\n"
+ "The bottom area is used to view transmission log files. There is one\n"
+ "file for each day of the week. By default, log files for the current day\n"
+ "are shown.\n\nButtons:\n"
+ " Refresh: refreshes both the directory list and log file windows.\n"
+ " View: allows to view selected transmission file(s)\n"
+ " Remove: deletes transmission files\n"
+ " Retransmit: forces the transmission program to send selected files.\n"
+ " If the file is in the 'bad' or 'sent' directory, it is \n"
+ " moved back to 'pending'. The transmission time (the last\n"
+ " part of the file name) is updated to the current time.\n"
+ " Help: displays this window";
/**
* Pending radio button.
@ -150,6 +131,8 @@ public class TransmissionQueueDlg extends CaveSWTDialog {
*/
private IStatusSettable msgStatComp;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -300,10 +283,35 @@ public class TransmissionQueueDlg extends CaveSWTDialog {
helpBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "Help";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "Help";
String helpText = "This dialog is used to manage transmission and transmission log files.\n\n"
+ "The top area manages the forecast files written by the forecast editor.\n"
+ "The 'Files' scrolled list window lists files in one of 'pending', 'sent'\n"
+ "and 'bad' directories. The time is when the file was written. The file\n"
+ "name is \n"
+ " xxx-CCCCNNNXXX-yymmddHHMM-BBB\n"
+ "where xxx is the forecaster number. The transmission program \n"
+ "avnxmitserv uses NNN to determine the transmission window for regular\n"
+ "forecasts.\n\n"
+ "The bottom area is used to view transmission log files. There is one\n"
+ "file for each day of the week. By default, log files for the current day\n"
+ "are shown.\n\nButtons:\n"
+ " Refresh: refreshes both the directory list and log file windows.\n"
+ " View: allows to view selected transmission file(s)\n"
+ " Remove: deletes transmission files\n"
+ " Retransmit: forces the transmission program to send selected files.\n"
+ " If the file is in the 'bad' or 'sent' directory, it is \n"
+ " moved back to 'pending'. The transmission time (the last\n"
+ " part of the file name) is updated to the current time.\n"
+ " Help: displays this window";
usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -42,6 +42,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 28 FEB 2008 938 lvenable Initial creation.
* 15 OCT 2012 1229 rferrel Made dialog non-blocking.
*
* </pre>
*
@ -83,7 +84,7 @@ public class HelpUsageDlg extends CaveSWTDialog {
*/
public HelpUsageDlg(Shell parent, String helpDesc, String helpText) {
super(parent, SWT.DIALOG_TRIM | SWT.RESIZE,
CAVE.PERSPECTIVE_INDEPENDENT);
CAVE.PERSPECTIVE_INDEPENDENT | CAVE.DO_NOT_BLOCK);
setText("AvnFPS Help");
this.helpDesc = helpDesc;

View file

@ -60,6 +60,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* ConfigurationException.
* 12 Oct 2012 1229 rferrel Convert to subclass of CaveSWTDialog
* and made non-blocking.
* 15 OCT 2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -100,6 +101,8 @@ public class MonitoringCriteriaDlg extends CaveSWTDialog {
*/
private DefaultRuleData defaultRuleData;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -302,11 +305,15 @@ public class MonitoringCriteriaDlg extends CaveSWTDialog {
helpBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS - Monitoring Criteria Help";
String helpText = "This dialog is used to define and configure TAF monitoring\nrules.\n\nTo load current configuration, enter site id and press\n<Enter> or use the \"Load\" button. Site id XXXX loads\ndefault rules.\n\nSelect a tab for the monitoring module you wish to modify\nthe rules. The top list displays current rules: severity\nlevels (colors) and associated messages. The list is sorted\nwith respect to the severity level.\n\nTo view detailed rule description, select an item on this\nlist. All rule parameters will be displayed in the \"Rule\nEditor\" window. You may modify editable parameters. Press \n\"Replace\" when finished. To remove a rule from the list,\npress \"Remove\". To add a new rule, first select one of\nthe available methods, then modify rule parameters as\ndesired. You must enter a message. Press \"Add\" to add the\nrule to the list.\n\nNOTE: \n1. argument types and values are not verified by the\n editor.\n2. if an argument is a list, the separators are commas.\n \nPress 'Save' when finished.\n\nTo restore default rules for a TAF Site and a currently\nselected monitoring module, use the \"Delete\" button.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS - Monitoring Criteria Help";
String helpText = "This dialog is used to define and configure TAF monitoring\nrules.\n\nTo load current configuration, enter site id and press\n<Enter> or use the \"Load\" button. Site id XXXX loads\ndefault rules.\n\nSelect a tab for the monitoring module you wish to modify\nthe rules. The top list displays current rules: severity\nlevels (colors) and associated messages. The list is sorted\nwith respect to the severity level.\n\nTo view detailed rule description, select an item on this\nlist. All rule parameters will be displayed in the \"Rule\nEditor\" window. You may modify editable parameters. Press \n\"Replace\" when finished. To remove a rule from the list,\npress \"Remove\". To add a new rule, first select one of\nthe available methods, then modify rule parameters as\ndesired. You must enter a message. Press \"Add\" to add the\nrule to the list.\n\nNOTE: \n1. argument types and values are not verified by the\n editor.\n2. if an argument is a list, the separators are commas.\n \nPress 'Save' when finished.\n\nTo restore default rules for a TAF Site and a currently\nselected monitoring module, use the \"Delete\" button.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -68,6 +68,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* 1 Oct 2010 4345 rferrel Cleanup to work like AWIPS I.
* 12 Oct 2012 1229 rferrel Convert to CaveSWTDialog subclass
* and make non-blocking.
* 15 OCT 2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -76,7 +77,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
*
*/
public class TafProductConfigDlg extends CaveSWTDialog {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(TafProductConfigDlg.class);
/**
@ -124,6 +125,8 @@ public class TafProductConfigDlg extends CaveSWTDialog {
*/
private Map<String, java.util.List<String>> productsMap;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -539,11 +542,16 @@ public class TafProductConfigDlg extends CaveSWTDialog {
helpBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "TAF Product Configuration Help";
String helpText = "This dialog is used to define TAF/TWEB product (list of\nforecasts).\n\nThee products should be defined AFTER relevant site/route\nconfiguration files have been created.\n\nTo add a new product, enter product label in the \"Products\"\nentry field and press <Enter>. Then enter all TAF ids or\nTWEB routes in the \"Idents\" entry field, press <Enter>\nafter typing one item. Press \"Save\" button to save\nconfiguration file.\n\nTo remove a product, press \"Delede\" below \"Products\" list.\n\nTo remove an ident from the product definition, use\n\"Delete\" button in the \"Idents\" column. You must then save\nthe product. This will NOT delete TAF/TWEB configuration\nfiles, this can only be done from the command line.\n\nThe \"Verify\" button can be used to check for existence and\nproper syntax of all relevant files.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "TAF Product Configuration Help";
String helpText = "This dialog is used to define TAF/TWEB product (list of\nforecasts).\n\nThee products should be defined AFTER relevant site/route\nconfiguration files have been created.\n\nTo add a new product, enter product label in the \"Products\"\nentry field and press <Enter>. Then enter all TAF ids or\nTWEB routes in the \"Idents\" entry field, press <Enter>\nafter typing one item. Press \"Save\" button to save\nconfiguration file.\n\nTo remove a product, press \"Delede\" below \"Products\" list.\n\nTo remove an ident from the product definition, use\n\"Delete\" button in the \"Idents\" column. You must then save\nthe product. This will NOT delete TAF/TWEB configuration\nfiles, this can only be done from the command line.\n\nThe \"Verify\" button can be used to check for existence and\nproper syntax of all relevant files.";
usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});

View file

@ -83,6 +83,7 @@ import com.vividsolutions.jts.geom.Point;
* 12 Oct 2012 1229 rferrel Now a subclass of CaveSWTDialog
* and made non-blocking.
* 15 Oct 2012 1229 rferrel Changes for non-blocking TextEditorSetupDlg.
* 15 OCT 2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -91,13 +92,13 @@ import com.vividsolutions.jts.geom.Point;
*
*/
public class TafSiteInfoEditorDlg extends CaveSWTDialog {
private static final transient IUFStatusHandler statusHandler = UFStatus
private final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(TafSiteInfoEditorDlg.class);
/**
* A site's template hours.
*/
private final static String[] START_HOURS = { "00", "06", "12", "18" };
private final String[] START_HOURS = { "00", "06", "12", "18" };
/**
* Composite containing message status controls.
@ -239,7 +240,9 @@ public class TafSiteInfoEditorDlg extends CaveSWTDialog {
/**
* Possible to have a different dialog for each issue time.
*/
Map<String, TextEditorSetupDlg> editorDlgMap;
private Map<String, TextEditorSetupDlg> editorDlgMap;
private HelpUsageDlg usageDlg;
/**
* Constructor.
@ -480,11 +483,16 @@ public class TafSiteInfoEditorDlg extends CaveSWTDialog {
helpBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "AvnFPS - Site Info Editor Help";
String helpText = "This dialog is used to define TAF site information.\n\nTo add a new site, enter site id and press \"Update\". Edit\ndisplayed entries and press \"Save\". Create default template\nfiles.\n\nTo change an existing TAF site attribute, enter site id and\npress the \"Load\" button.\n\nTo create template files, press \"Make\" in the \"Templates\"\narea.\n\nTo edit template file, select issue hour, then press \"Edit\"\nin the \"Templates\" area.\n\nYou can use \"Update\" button to extract information from\nAWIPS configuration files. Only non-empty fields will be\noverwritten.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "AvnFPS - Site Info Editor Help";
String helpText = "This dialog is used to define TAF site information.\n\nTo add a new site, enter site id and press \"Update\". Edit\ndisplayed entries and press \"Save\". Create default template\nfiles.\n\nTo change an existing TAF site attribute, enter site id and\npress the \"Load\" button.\n\nTo create template files, press \"Make\" in the \"Templates\"\narea.\n\nTo edit template file, select issue hour, then press \"Edit\"\nin the \"Templates\" area.\n\nYou can use \"Update\" button to extract information from\nAWIPS configuration files. Only non-empty fields will be\noverwritten.";
usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}

View file

@ -77,6 +77,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* open the LocalizedFile.
* 11 OCT 2012 1229 rferrel Changes for non-blocking FindReplaceDlg.
* 15 OCT 2012 1229 rferrel Made dialog non-blocking.
* 15 OCT 2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
*
* </pre>
*
@ -147,6 +148,8 @@ public class TextEditorSetupDlg extends CaveSWTDialog {
private OpenDlg openDlg;
private HelpUsageDlg usageDlg;
/**
* Constructor.
*
@ -394,33 +397,36 @@ public class TextEditorSetupDlg extends CaveSWTDialog {
usageMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
String description = "Text Editor Help";
String helpText = "This is a generic text editor. Edit any text file via the file\n";
helpText += "selection dialog that is invoked by pressing the 'Open' button.\n";
helpText += "\n";
helpText += "Menu items:\n";
helpText += " File:\n";
helpText += " Print invokes print dialog\n";
helpText += " Edit:\n";
helpText += " provides the usual editing functions (i.e. Cut, Copy, Paste,\n";
helpText += " and Find/Replace). The menu can be also invoked by pressing\n";
helpText += " right mouse button within the text window area.\n";
helpText += "\n";
helpText += "Buttons:\n";
helpText += " Clear: clears text window.\n";
helpText += " Open: invokes file selection dialog\n";
helpText += " Save: saves content of the text window\n";
helpText += " Save as: invokes file selection dialog\n";
helpText += "\n";
helpText += "Toggles:\n";
helpText += " Insert: toggles insert/overwrite mode\n";
helpText += " Wrap: toggles word wrap\n";
helpText += "\n";
helpText += "The currently loaded (if any) file name is displayed in a label above the\n";
helpText += "text window.";
HelpUsageDlg usageDlg = new HelpUsageDlg(shell, description,
helpText);
usageDlg.open();
if (mustCreate(usageDlg)) {
String description = "Text Editor Help";
String helpText = "This is a generic text editor. Edit any text file via the file\n"
+ "selection dialog that is invoked by pressing the 'Open' button.\n"
+ "\n"
+ "Menu items:\n"
+ " File:\n"
+ " Print invokes print dialog\n"
+ " Edit:\n"
+ " provides the usual editing functions (i.e. Cut, Copy, Paste,\n"
+ " and Find/Replace). The menu can be also invoked by pressing\n"
+ " right mouse button within the text window area.\n"
+ "\n"
+ "Buttons:\n"
+ " Clear: clears text window.\n"
+ " Open: invokes file selection dialog\n"
+ " Save: saves content of the text window\n"
+ " Save as: invokes file selection dialog\n"
+ "\n"
+ "Toggles:\n"
+ " Insert: toggles insert/overwrite mode\n"
+ " Wrap: toggles word wrap\n"
+ "\n"
+ "The currently loaded (if any) file name is displayed in a label above the\n"
+ "text window.";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
usageDlg.bringToTop();
}
}
});
}
@ -520,7 +526,6 @@ public class TextEditorSetupDlg extends CaveSWTDialog {
Button saveAsBtn = new Button(buttonComp, SWT.PUSH);
saveAsBtn.setText("Save As");
saveAsBtn.setToolTipText("Save file with new name");
// saveAsBtn.setEnabled(false);
saveAsBtn.setLayoutData(gd);
saveAsBtn.addSelectionListener(new SelectionAdapter() {
@Override
@ -810,8 +815,6 @@ public class TextEditorSetupDlg extends CaveSWTDialog {
path = path.substring(1, path.lastIndexOf('/'));
dlg.setFilterPath(path);
// dlg.setFilterNames(FILTER_NAMES);
// dlg.setFilterExtensions(FILTER_EXTS);
String fn = dlg.open();
if (fn != null) {
try {