/// <summary>
        /// From AbstractTableModel; returns the data that should be placed in the JTable at the given row and column. </summary>
        /// <param name="row"> the row for which to return data. </param>
        /// <param name="col"> the column for which to return data. </param>
        /// <returns> the data that should be placed in the JTable at the given row and col. </returns>
        public virtual object getValueAt(int row, int col)
        {
            if (_sortOrder != null)
            {
                row = _sortOrder[row];
            }

            TSIdent tsident = (TSIdent)_data.get(row);

            switch (col)
            {
            case _COL_STATION_TYPE:
                return(tsident.getAlias());

            case _COL_ID:
                return(tsident.getLocation());

            case _COL_INTERVAL:
                return(tsident.getInterval());

            case _COL_DATA_TYPE:
                return(tsident.getType());

            case _COL_INPUT_TYPE:
                return(tsident.getInputType());

            case _COL_INPUT_NAME:
                return(tsident.getInputName());

            default:
                return("");
            }
        }
        /// <summary>
        /// Inserts the specified value into the data object at the given position.  This
        /// is not like setValueAt() because it doesn't change any combo box values or
        /// update other columns' data.  It simply puts the data into the data object
        /// and notifies the table that data has changed so that it displays the updated values. </summary>
        /// <param name="value"> the object to store in the table cell. </param>
        /// <param name="row"> the row of the cell in which to place the object. </param>
        /// <param name="col"> the column of the cell in which to place the object. </param>
        public virtual void setInternalValueAt(object value, int row, int col)
        {
            /*
             * Message.printStatus(1, "", "---------------------------------------");
             * Message.printStatus(1, "", "SET INTERNAL VALUE AT: " + row + ", " +col);
             * JWorksheet.except(1, 3);
             * Message.printStatus(1, "", "---------------------------------------");
             */

            TSIdent tsident = (TSIdent)_data.get(row);

            switch (col)
            {
            case _COL_STATION_TYPE:
                string type = tsident.getAlias();
                if (type.Equals((string)value))
                {
                    break;
                }
                tsident.setAlias((string)value);
                break;

            case _COL_ID:
                tsident.setLocation((string)value);
                break;

            case _COL_INTERVAL:
                try
                {
                    tsident.setInterval((string)value);
                }
                catch (Exception)
                {
                    // Should not happen.
                }
                break;

            case _COL_DATA_TYPE:
                tsident.setType((string)value);
                break;

            case _COL_INPUT_TYPE:
                tsident.setInputType((string)value);
                break;

            case _COL_INPUT_NAME:
                string s = (string)value;
                if (s.Equals(__BROWSE_INPUT_NAME_ABSOLUTE))
                {
                    s = browseForFile();
                }
                else if (s.Equals(__BROWSE_INPUT_NAME_RELATIVE))
                {
                    string file = browseForFile();
                    if (!string.ReferenceEquals(file, null))
                    {
                        try
                        {
                            int    index      = file.LastIndexOf(File.separator);
                            string workingDir = __dataset.getDataSetDirectory();
                            string dir        = IOUtil.toRelativePath(workingDir, file.Substring(0, index));
                            s = dir + File.separator + file.Substring(index + 1, file.Length - (index + 1));
                        }
                        catch (Exception)
                        {
                            // TODO (JTS - 2003-11-05) maybe handle this better.  Right now just defaults to the absolute filename
                            s = file;
                        }
                    }
                }
                tsident.setInputName(s);
                // don't go through the super.setValueAt() at the end of the method ...
                base.setValueAt(s, row, col);
                return;
            }

            fireTableDataChanged();
            base.setValueAt(value, row, col);
        }
        /// <summary>
        /// Inserts the specified value into the table at the given position. </summary>
        /// <param name="value"> the object to store in the table cell. </param>
        /// <param name="row"> the row of the cell in which to place the object. </param>
        /// <param name="col"> the column of the cell in which to place the object. </param>
        public virtual void setValueAt(object value, int row, int col)
        {
            if (_sortOrder != null)
            {
                row = _sortOrder[row];
            }

            /*
             * Message.printStatus(1, "", "---------------------------------------");
             * Message.printStatus(1, "", "SET VALUE AT: " + row + ", " +col);
             * JWorksheet.except(1, 3);
             * Message.printStatus(1, "", "---------------------------------------");
             */

            TSIdent tsident = (TSIdent)_data.get(row);

            switch (col)
            {
            case _COL_STATION_TYPE:
                string type = tsident.getAlias();
                if (type.Equals((string)value))
                {
                    break;
                }
                tsident.setAlias((string)value);
                tsident.setLocation("");
                setValueAt("", row, _COL_INTERVAL);
                // this next line wouldn't seem to make any sense, but leave it in!!
                setValueAt(getValueAt(row, _COL_DATA_TYPE), row, _COL_DATA_TYPE);
                fireTableDataChanged();
                overrideCellEdit(row, _COL_ID, true);
                fillIDColumn(row, (string)value);
                // Since the ID is filled, select the first item by
                // default to force something to be displayed...
                if (__worksheet != null)
                {
                    System.Collections.IList ids = __worksheet.getCellSpecificJComboBoxValues(row, _COL_ID);
                    if (ids.Count > 0)
                    {
                        setValueAt(ids[0], row, _COL_ID);
                    }
                    else
                    {
                        setValueAt("", row, _COL_ID);
                    }
                }
                break;

            case _COL_ID:
                string id = (string)value;
                tsident.setLocation(id);
                bool   outputOnly = false;
                string staType    = (string)getValueAt(row, _COL_STATION_TYPE);
                if (staType.Equals(StateMod_Util.STATION_TYPE_RESERVOIR))
                {
                    if (id.IndexOf("-", StringComparison.Ordinal) > -1)
                    {
                        outputOnly = true;
                    }
                }
                overrideCellEdit(row, _COL_DATA_TYPE, true);
                // Fill the interval cell, given the station type and identifier...
                if (((string)value).Length == 0)
                {
                    fireTableDataChanged();
                }
                fillIntervalColumn(row, (string)getValueAt(row, _COL_STATION_TYPE), (string)value);
                if (outputOnly)
                {
                    fillDataTypeColumn(row, true, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)value);
                }
                else
                {
                    fillDataTypeColumn(row, false, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)value);
                }
                fireTableDataChanged();
                break;

            case _COL_INTERVAL:
                try
                {
                    tsident.setInterval((string)value);
                }
                catch (Exception)
                {
                    // Should not happen.
                }
                bool   ioutputOnly = false;
                string istaType    = (string)getValueAt(row, _COL_STATION_TYPE);
                string iid         = (string)getValueAt(row, _COL_ID);
                if (istaType.Equals(StateMod_Util.STATION_TYPE_RESERVOIR))
                {
                    if (iid.IndexOf("-", StringComparison.Ordinal) > -1)
                    {
                        ioutputOnly = true;
                    }
                }
                if (ioutputOnly)
                {
                    fillDataTypeColumn(row, true, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)value);
                }
                else
                {
                    fillDataTypeColumn(row, false, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)value);
                }
                // this next line wouldn't seem to make any sense, but leave it in!!
                setValueAt(getValueAt(row, _COL_DATA_TYPE), row, _COL_DATA_TYPE);
                fireTableDataChanged();
                break;

            case _COL_DATA_TYPE:
                tsident.setType((string)value);
                // Fill the input type cell, given the station type, identifier, and interval...
                fillInputTypeColumn(row, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)getValueAt(row, _COL_INTERVAL), (string)value);
                fireTableDataChanged();
                break;

            case _COL_INPUT_TYPE:
                tsident.setInputType((string)value);
                // Fill the input name with defaults...
                fillInputNameColumn(row, (string)getValueAt(row, _COL_STATION_TYPE), (string)getValueAt(row, _COL_ID), (string)getValueAt(row, _COL_INTERVAL), (string)getValueAt(row, _COL_DATA_TYPE), (string)value);
                break;

            case _COL_INPUT_NAME:
                string s = (string)value;
                if (s.Equals(__BROWSE_INPUT_NAME_ABSOLUTE))
                {
                    s = browseForFile();
                }
                else if (s.Equals(__BROWSE_INPUT_NAME_RELATIVE))
                {
                    string file = browseForFile();
                    if (!string.ReferenceEquals(file, null))
                    {
                        try
                        {
                            int    index      = file.LastIndexOf(File.separator);
                            string workingDir = __dataset.getDataSetDirectory();
                            string dir        = IOUtil.toRelativePath(workingDir, file.Substring(0, index));
                            s = dir + File.separator + file.Substring(index + 1, file.Length - (index + 1));
                        }
                        catch (Exception)
                        {
                            // TODO (JTS - 2003-11-05)  maybe handle this better.  Right now just defaults to the absolute filename
                            s = file;
                        }
                    }
                }
                tsident.setInputName(s);
                // don't go through the super.setValueAt() at the end of the method ...
                base.setValueAt(s, row, col);
                return;
            }

            base.setValueAt(value, row, col);
        }
Пример #4
0
	/// <summary>
	/// Responds to action performed events. </summary>
	/// <param name="e"> the ActionEvent that happened. </param>
	public virtual void actionPerformed(ActionEvent e)
	{
		string routine = "StateMod_DelayTable_JFrame"
			+ ".actionPerformed";
		if (Message.isDebugOn)
		{
			Message.printDebug(1, routine, "In actionPerformed: " + e.getActionCommand());
		}

		string action = e.getActionCommand();

		if (action.Equals(__BUTTON_HELP))
		{
			// REVISIT HELP (JTS - 2003-06-09)
		}
		else if (action.Equals(__BUTTON_CLOSE))
		{
			closeWindow();
		}
		else if (action.Equals(__BUTTON_APPLY))
		{
			saveDelayTable();
			int size = __delaysVector.Count;
			StateMod_DelayTable dt = null;
			bool changed = false;
			for (int i = 0; i < size; i++)
			{
				dt = (StateMod_DelayTable)__delaysVector[i];
				if (!changed && dt.changed())
				{
					changed = true;
				}
				dt.createBackup();
			}
			if (changed)
			{
				__dataset.setDirty(__componentType, true);
			}
		}
		else if (action.Equals(__BUTTON_CANCEL))
		{
			__worksheetR.deselectAll();
			int size = __delaysVector.Count;
			StateMod_DelayTable dt = null;
			bool changed = false;
			for (int i = 0; i < size; i++)
			{
				dt = (StateMod_DelayTable)__delaysVector[i];
				if (!changed && dt.changed())
				{
					changed = true;
				}
				dt.restoreOriginal();
			}
			if (__dataset_wm != null)
			{
				__dataset_wm.closeWindow(__window_type);
			}
			else
			{
				JGUIUtil.close(this);
			}
		}
		else if (action.Equals(__BUTTON_ADD_RETURN))
		{
			int row = __worksheetR.getSelectedRow();

			int total_num_rows = __worksheetR.getRowCount() - 1;

			if (row == -1)
			{
				row = total_num_rows;
			}

			if (row != -1)
			{
				if (row == total_num_rows)
				{
					int x = new ResponseJDialog(this, "Insert row", "Do you wish to add a new row above " + "the last row?\n" + "uniquetempvar.response();
					if (x == ResponseJDialog.CANCEL)
					{
						return;
					}
					else if (x == ResponseJDialog.NO)
					{
						row += 1;
					}
				}
				__worksheetR.insertRowAt(new double?(0), row);
				__worksheetR.scrollToRow(row);
				__worksheetR.selectRow(row);
			}
			else
			{
				__worksheetR.addRow(new double?(0));
				__worksheetR.scrollToRow(0);
				__worksheetR.selectRow(0);
			}
			__deleteReturn.setEnabled(true);
		}
		else if (action.Equals(__BUTTON_DELETE_RETURN))
		{
			int row = __worksheetR.getSelectedRow();
			if (row != -1)
			{
				int x = (new ResponseJDialog(this, "Delete Return", "Delete return?", ResponseJDialog.YES | ResponseJDialog.NO)).response();
				if (x == ResponseJDialog.NO)
				{
					return;
				}
				//StateMod_DelayTable dt = (StateMod_DelayTable)
					//__worksheetL.getRowData(
					//__worksheetL.getSelectedRow());
				__worksheetR.deleteRow(row);
				__deleteReturn.setEnabled(false);
			}
			else
			{
				Message.printWarning(1, routine, "Must select desired right to delete.");
			}
		}
		else if (e.getSource() == __findNextDelay)
		{
			searchLeftWorksheet(__worksheetL.getSelectedRow() + 1);
		}
		else if (e.getSource() == __searchID)
		{
			searchLeftWorksheet();
		}
		else
		{
			if (__worksheetL.getSelectedRow() == -1)
			{
				new ResponseJDialog(this, "You must first select a delay from the list.", ResponseJDialog.OK);
				return;
			}
			else if (e.getSource() == __graphDelayJButton)
			{
				try
				{
					__worksheetR.deselectAll();

					int index = __worksheetL.getSelectedRow();
					if (index == -1)
					{
						return;
					}

					StateMod_DelayTable currentDelay = ((StateMod_DelayTable) __delaysVector[index]);

					int j;

					DateTime date;

					TSIdent tsident = new TSIdent();
					tsident.setLocation(currentDelay.getID());
					tsident.setSource("StateMod");
					if (__monthly_data)
					{
						tsident.setInterval("Month");
					}
					else
					{
						tsident.setInterval("Day");
					}
					tsident.setType("Delay");

					DateTime date1 = null;
					DateTime date2 = null;
					int interval_base;
					if (__monthly_data)
					{
						date1 = new DateTime(DateTime.PRECISION_MONTH);
						date2 = new DateTime(DateTime.PRECISION_MONTH);
						interval_base = TimeInterval.MONTH;
					}
					else
					{
						date1 = new DateTime(DateTime.PRECISION_DAY);
						date2 = new DateTime(DateTime.PRECISION_DAY);
						interval_base = TimeInterval.DAY;
					}
					date1.setMonth(1);
					date1.setYear(1);
					date2.setMonth(1);
					date2.setYear(1);
					date2.addInterval(interval_base, (currentDelay.getNdly() - 1));

					TS ts = null;
					if (__monthly_data)
					{
						ts = new MonthTS();
					}
					else
					{
						ts = new DayTS();
					}
					ts.setDate1(date1);
					ts.setDate2(date2);
					ts.setIdentifier(tsident);
					if (__monthly_data)
					{
						ts.setDescription(ts.getLocation() + " Monthly Delay Table");
					}
					else
					{
						ts.setDescription(ts.getLocation() + " Daily Delay Table");
					}
					ts.setDataType("Delay");
					ts.setDataUnits(currentDelay.getUnits());
					ts.allocateDataSpace();

					double max = 0.0;
					for (date = new DateTime(date1), j = 0; date.lessThanOrEqualTo(date2); date.addInterval(interval_base, 1), j++)
					{
						ts.setDataValue(date, currentDelay.getRet_val(j));
						if (currentDelay.getRet_val(j) > max)
						{
							max = currentDelay.getRet_val(j);
						}
					}
					IList<TS> tslist = new List<TS>();
					tslist.Add(ts);

					PropList graphProps = new PropList("TSView");
					// If dealing with small values, use a high
					// of precision...
					if (max < 1.0)
					{
						graphProps.set("YAxisPrecision","6");
						graphProps.set("OutputPrecision","6");
					}
					else
					{
						graphProps.set("YAxisPrecision","3");
						graphProps.set("OutputPrecision","3");
					}
					graphProps.set("InitialView", "Graph");
					graphProps.set("TotalWidth", "600");
					graphProps.set("TotalHeight", "400");
					if (__monthly_data)
					{
						graphProps.set("Title", ts.getLocation() + " Monthly Delay Table");
					}
					else
					{
						graphProps.set("Title", ts.getLocation() + " Daily Delay Table");
					}
					graphProps.set("DisplayFont", "Courier");
					graphProps.set("DisplaySize", "11");
					graphProps.set("PrintFont", "Courier");
					graphProps.set("PrintSize", "7");
					graphProps.set("PageLength", "100");
					new TSViewJFrame(tslist, graphProps);
				}
				catch (Exception)
				{
					Message.printWarning(1, routine, "Unable to graph delay. ");
				}
			}
		}
	}