+++ /dev/null
-package tim.prune.function.weather;
-
-import javax.swing.table.AbstractTableModel;
-
-import tim.prune.I18nManager;
-
-
-/**
- * Table model for results of weather forecast
- */
-public class WeatherTableModel extends AbstractTableModel
-{
- /** Weather results */
- private WeatherResults _results;
-
- /** Row indices */
- public static final int ROW_DAY = 0;
- public static final int ROW_DESC = 1;
- public static final int ROW_WIND = 2;
- public static final int ROW_ICON = 3;
- public static final int ROW_TEMP = 4;
- public static final int ROW_HUMID = 5;
-
- /** String for degrees Celsius */
- private static final String UNITS_DEGC = I18nManager.getText("units.degreescelsius.short");
- /** String for degrees Fahrenheit */
- private static final String UNITS_DEGF = I18nManager.getText("units.degreesfahrenheit.short");
-
- /**
- * @return column count
- */
- public int getColumnCount()
- {
- if (_results == null) {return 0;}
- return _results.getNumForecasts();
- }
-
- /**
- * @param inColNum column number
- * @return column label for given column
- */
- public String getColumnName(int inColNum)
- {
- if (_results != null && inColNum >= 0 && inColNum < getColumnCount())
- {
- SingleForecast forecast = _results.getForecast(inColNum);
- if (!forecast.hasTimes() || forecast.getTimeFrom().startsWith("00")) {
- return forecast.getDate();
- }
- return forecast.getTimeFrom();
- }
- return "";
- }
-
- /**
- * @return number of rows
- */
- public int getRowCount()
- {
- return 6;
- }
-
- /** @return true if there are no columns */
- public boolean isEmpty()
- {
- return getColumnCount() == 0;
- }
-
- /**
- * @param inRowNum row number
- * @param inColNum column number
- * @return cell entry at given row and column
- */
- public Object getValueAt(int inRowNum, int inColNum)
- {
- if (inColNum < 0 || inColNum >= getColumnCount()) {return "";}
- SingleForecast forecast = _results.getForecast(inColNum);
- if (forecast != null)
- {
- switch (inRowNum)
- {
- case ROW_DAY: {
- final String dayDesc = forecast.getDayDesc() == null ? "now" : forecast.getDayDesc();
- return buildDisplayString(null, I18nManager.getText("dialog.weather.day." + dayDesc));
- }
- case ROW_DESC: return buildDisplayString(null, forecast.getDescription());
- case ROW_WIND: return buildDisplayString(I18nManager.getText("dialog.weather.wind"), forecast.getWindDescription());
- case ROW_ICON: return forecast.getImageName();
- case ROW_TEMP: return buildDisplayString(I18nManager.getText("dialog.weather.temp"), forecast.getTemps()
- + (_results.isCelsius() ? UNITS_DEGC : UNITS_DEGF));
- case ROW_HUMID: return buildDisplayString(I18nManager.getText("dialog.weather.humidity"), forecast.getHumidity());
- }
- }
- return "";
- }
-
- /**
- * Build a html string from the given title and value
- */
- private static final String buildDisplayString(String inTitle, String inValue)
- {
- if (inValue == null) {return null;}
- return "<html>" + (inTitle == null ? "" : (inTitle + ": "))
- + "<big>" + inValue.replaceAll(" ", " ") + "</big></html>";
- }
-
- /**
- * Set the results
- * @param inResults weather results including all forecasts
- */
- public void setResults(WeatherResults inResults)
- {
- _results = inResults;
- fireTableStructureChanged();
- }
-
- /**
- * Clear the list of forecasts
- */
- public void clear()
- {
- setResults(null);
- }
-}