/// <summary>
        /// Responds to action performed events sent by popup menus of the tree nodes. </summary>
        /// <param name="event"> the ActionEvent that happened. </param>
        public virtual void actionPerformed(ActionEvent @event)
        {
            string action  = @event.getActionCommand();
            string routine = "StateMod_DataSet_JTree.actionPerformed";

            object data = __popup_Node.getData();

            if (data is DataSetComponent)
            {
                DataSetComponent comp = (DataSetComponent)data;
                int comp_type         = comp.getComponentType();
                if (comp_type == StateMod_DataSet.COMP_CONTROL_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_CONTROL, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_STREAMGAGE_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMGAGE, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_DELAY_TABLE_MONTHLY_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_MONTHLY, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_DELAY_TABLE_DAILY_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_DAILY, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_DIVERSION_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DIVERSION, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_PRECIPITATION_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_PRECIPITATION, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_EVAPORATION_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_EVAPORATION, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_RESERVOIR_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_RESERVOIR, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_INSTREAM_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_INSTREAM, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_WELL_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_WELL, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_PLAN_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_PLAN, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_STREAMESTIMATE_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMESTIMATE, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_RIVER_NETWORK_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_RIVER_NETWORK, __editable);
                }
                else if (comp_type == StateMod_DataSet.COMP_OPERATION_GROUP)
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_OPERATIONAL_RIGHT, __editable);
                }
            }
            // Below here are specific instances of objects.  Similar to above,
            // display the main window but then also select the specific object...
            else if (data is StateMod_StreamGage)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMGAGE, __editable);
                ((StateMod_StreamGage_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMGAGE)).selectID(((StateMod_StreamGage)data).getID());
            }
            else if (data is StateMod_DelayTable)
            {
                StateMod_DelayTable dt = (StateMod_DelayTable)data;
                if (dt.isMonthly())
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_MONTHLY, __editable);
                    ((StateMod_DelayTable_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_MONTHLY)).selectID(dt.getID());
                }
                else
                {
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_DAILY, __editable);
                    ((StateMod_DelayTable_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_DELAY_TABLE_DAILY)).selectID(dt.getID());
                }
            }
            else if (data is StateMod_Diversion)
            {
                if (action.IndexOf(__SUMMARIZE_HOW1, StringComparison.Ordinal) >= 0)
                {
                    PropList props = new PropList("Diversion");
                    props.set("Title=" + ((StateMod_Diversion)data).getID() + " Diversion use in Data Set");
                    new ReportJFrame(__dataset.getDataObjectDetails(StateMod_DataSet.COMP_DIVERSION_STATIONS, ((StateMod_Diversion)data).getID()), props);
                }
                else
                {
                    // Assume properties...
                    __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_DIVERSION, __editable);
                    ((StateMod_Diversion_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_DIVERSION)).selectID(((StateMod_Diversion)data).getID());
                }
            }
            else if (data is TS)
            {
                // Might be precipitation or evaporation.  Check the data type to determine...
                TS       ts    = (TS)data;
                PropList props = new PropList("Precipitation/Evaporation");
                if (action.IndexOf(__SUMMARIZE_HOW1, StringComparison.Ordinal) >= 0)
                {
                    if (StringUtil.startsWithIgnoreCase(ts.getDataType(), "e"))
                    {
                        props.set("Title=" + ts.getLocation() + " Evaporation TS use in Data Set");
                        new ReportJFrame(__dataset.getDataObjectDetails(StateMod_DataSet.COMP_EVAPORATION_TS_MONTHLY, ts.getLocation()), props);
                    }
                    else if (StringUtil.startsWithIgnoreCase(ts.getDataType(), "p"))
                    {
                        props.set("Title=" + ts.getLocation() + " Precipitation TS use in Data Set");
                        new ReportJFrame(__dataset.getDataObjectDetails(StateMod_DataSet.COMP_PRECIPITATION_TS_MONTHLY, ts.getLocation()), props);
                    }
                }
                else if (action.IndexOf(__PROPERTIES, StringComparison.Ordinal) >= 0)
                {
                    if (StringUtil.startsWithIgnoreCase(ts.getDataType(), "e"))
                    {
                        props.set("Title=Evaporation");
                    }
                    else if (StringUtil.startsWithIgnoreCase(ts.getDataType(), "p"))
                    {
                        props.set("Title=Precipitation");
                    }
                    props.set("InitialView=Graph");
                    props.set("GraphType=Bar");
                    System.Collections.IList tslist = new List <object>(1);
                    tslist.Add(ts);
                    try
                    {
                        new TSViewJFrame(tslist, props);
                    }
                    catch (Exception)
                    {
                        Message.printWarning(1, routine, "Error displaying data.");
                    }
                }
            }
            else if (data is StateMod_Reservoir)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_RESERVOIR, __editable);
                ((StateMod_Reservoir_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_RESERVOIR)).selectID(((StateMod_Reservoir)data).getID());
            }
            else if (data is StateMod_InstreamFlow)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_INSTREAM, __editable);
                ((StateMod_InstreamFlow_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_INSTREAM)).selectID(((StateMod_InstreamFlow)data).getID());
            }
            else if (data is StateMod_Well)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_WELL, __editable);
                ((StateMod_Well_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_WELL)).selectID(((StateMod_Well)data).getID());
            }
            else if (data is StateMod_Plan)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_PLAN, __editable);
                ((StateMod_Plan_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_PLAN)).selectID(((StateMod_Plan)data).getID());
            }
            else if (data is StateMod_StreamEstimate)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMESTIMATE, __editable);
                ((StateMod_StreamEstimate_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_STREAMESTIMATE)).selectID(((StateMod_StreamEstimate)data).getID());
            }
            else if (data is StateMod_RiverNetworkNode)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_RIVER_NETWORK, __editable);
                ((StateMod_RiverNetworkNode_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_RIVER_NETWORK)).selectID(((StateMod_RiverNetworkNode)data).getID());
            }
            else if (data is StateMod_OperationalRight)
            {
                __dataset_wm.displayWindow(StateMod_DataSet_WindowManager.WINDOW_OPERATIONAL_RIGHT, __editable);
                ((StateMod_OperationalRight_JFrame)__dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_OPERATIONAL_RIGHT)).selectID(((StateMod_OperationalRight)data).getID());
            }
        }
        /// <summary>
        /// Responds to action performed events. </summary>
        /// <param name="e"> the ActionEvent that happened. </param>
        public virtual void actionPerformed(ActionEvent e)
        {
            string routine = "StateMod_RunReport_JFrame.actionPerformed";
            string action  = e.getActionCommand();

            if (action.Equals(__BUTTON_RUN_REPORT))
            {
                JRadioButton cb = getSelectedJRadioButton();
                if (cb == null)
                {
                    return;
                }
                StringBuilder sb = new StringBuilder("-report ");
                sb.Append(cb.getText());

                // now check if station id is needed; if so, append it
                if (cb == __xdgJRadioButton)
                {
                    sb.Append(" -");
                    sb.Append(StringUtil.getToken(__xdgSimpleJComboBox.getSelected(), " ", 0, 0));
                }
                else if (cb == __xrgJRadioButton)
                {
                    sb.Append(" -");
                    sb.Append(StringUtil.getToken(__xrgSimpleJComboBox.getSelected(), " ", 0, 0));
                }
                else if (cb == __xwgJRadioButton)
                {
                    sb.Append(" -");
                    sb.Append(StringUtil.getToken(__xwgSimpleJComboBox.getSelected(), " ", 0, 0));
                }

                string s = sb.ToString();
                try
                {         // Run the report using the process manager dialog.
                    // Pass in the main GUI class so that the modal process
                    // manager dialog is on top of that window.
                    Message.printStatus(1, routine, "Running statemod " + "with command line options: '" + sb + "'");
                    StateMod_Util.runStateMod(__dataset, s, true, __dataset_wm.getWindow(StateMod_DataSet_WindowManager.WINDOW_MAIN));
                }
                catch (Exception)
                {
                    Message.printWarning(1, routine, "There was an error running:  \n" + s, this);
                }
            }
            else if (action.Equals(__BUTTON_CANCEL))
            {
                if (__dataset_wm != null)
                {
                    __dataset_wm.closeWindow(StateMod_DataSet_WindowManager.WINDOW_RUN_REPORT);
                }
                else
                {
                    JGUIUtil.close(this);
                }
            }
            else if (action.Equals(__BUTTON_HELP))
            {
                // REVISIT HELP (JTS - 2003-08-21)
            }
        }