Coverage report

  %line %branch
ca.spaz.cron.summary.SummaryPanel
0% 
0% 

 1  
 /*
 2  
  *******************************************************************************
 3  
  * Copyright (c) 2005 Chris Rose and AIMedia
 4  
  * All rights reserved. SummaryPanel and the accompanying materials
 5  
  * are made available under the terms of the Common Public License v1.0
 6  
  * which accompanies this distribution, and is available at
 7  
  * http://www.eclipse.org/legal/cpl-v10.html
 8  
  * 
 9  
  * Contributors:
 10  
  *     Chris Rose
 11  
  *******************************************************************************/
 12  
  
 13  
 package ca.spaz.cron.summary;
 14  
 
 15  
 import java.awt.BorderLayout;
 16  
 import java.util.*;
 17  
 
 18  
 import javax.swing.*;
 19  
 
 20  
 import com.aimedia.ui.IValueListUser;
 21  
 
 22  
 /**
 23  
  * An abstract UI class for display of a set of field values.  Supports
 24  
  * arbitrary numbers of rows in 3-column displays.
 25  
  * 
 26  
  * @deprecated No longer needed for UI.
 27  
  * @author Chris Rose
 28  
  */
 29  
 public abstract class SummaryPanel extends JPanel {
 30  
 
 31  
     private Map valueHash;
 32  
 
 33  
 //    private Map valueLabels;
 34  
 
 35  
     private List values;
 36  
 
 37  
     private Map valueSuffixes;
 38  
 
 39  
 //    private int columns;
 40  
 
 41  
     private Comparator fieldOrdering;
 42  
 
 43  
     private Map valueLabelText;
 44  
 
 45  
     private SimpleSummaryContent content;
 46  
 
 47  
     /**
 48  
      * Construct a summary panel with the default ordering of components.
 49  
      */
 50  
     protected SummaryPanel() {
 51  0
         this(null);
 52  0
     }
 53  
     
 54  
     /**
 55  
      * Construct a summary panel with the specified number of columns and field ordering.
 56  
      * 
 57  
      * @param fieldOrdering The <code>Comparator</code> to sort the fields with.  If null,
 58  
      * the field default ordering is the order they are added in.
 59  
      */
 60  
     protected SummaryPanel(Comparator fieldOrdering) {
 61  0
         super();
 62  
 //        this.columns = columns;
 63  0
         valueHash = new HashMap();
 64  0
         values = new ArrayList();
 65  
 //        valueLabels = new HashMap();
 66  0
         valueSuffixes = new HashMap();
 67  0
         valueLabelText = new HashMap();
 68  0
         this.fieldOrdering = fieldOrdering;
 69  0
         this.setBorder(BorderFactory.createEmptyBorder(4,4,4,4));
 70  0
         this.setLayout(new BorderLayout());
 71  0
     }
 72  
 
 73  
     /**
 74  
      * Add a new value field to the component.  Sets a default value of "" (empty string)
 75  
      * for the value.
 76  
      * 
 77  
      * @param valueName The name to use for both the label and as the key.  Must be unique.
 78  
      * @param valueUnit The unit of measure (will be appended to the output value by default).
 79  
      */
 80  
     protected final void addValueField(String valueName, String valueUnit) {
 81  0
         addValueField(valueName, valueName, valueUnit);
 82  0
     }
 83  
 
 84  
     /**
 85  
      * Add a new value field to the component.  Sets a default value of "" (empty string)
 86  
      * for the value.
 87  
      * 
 88  
      * @param valueName The name to use for both the label and as the key.  Must be unique.
 89  
      * @param labelText The text to be displayed on the label.
 90  
      * @param valueUnit The unit of measure (will be appended to the output value by default).
 91  
      */
 92  
     protected final void addValueField(String valueName, String labelText, String valueUnit) {
 93  0
         values.add(valueName);
 94  0
         valueLabelText.put(valueName, labelText);
 95  0
         valueSuffixes.put(valueName, valueUnit);
 96  0
         setValue(valueName, "");
 97  0
     }
 98  
 
 99  
     /**
 100  
      * Format a <code>Boolean</code> for display.  Defaults to toString(), but sublcasses
 101  
      * can override this behaviour.
 102  
      * @param valueName The name of the value to be formatted.
 103  
      * @param value The value to format.
 104  
      * @return a formatted String for value.
 105  
      */
 106  
     protected String doBooleanString(String valueName, Boolean value) {
 107  0
         return value.toString() + " " + getUnit(valueName);
 108  
     }
 109  
 
 110  
     /**
 111  
      * Format a <code>Double</code> for display.  Defaults to toString(), but sublcasses
 112  
      * can override this behaviour.
 113  
      * @param valueName The name of the value to be formatted.
 114  
      * @param value The value to format.
 115  
      * @return a formatted String for value.
 116  
      */
 117  
     protected String doDoubleString(String valueName, Double value) {
 118  0
         return value.toString() + " " + getUnit(valueName);
 119  
     }
 120  
 
 121  
     /**
 122  
      * Get the label text for a value.
 123  
      * 
 124  
      * @param valueName The name of the value to retrieve.
 125  
      * @param value The actual value to display.
 126  
      * @return a String with the value name and the value itself formatted according to the
 127  
      * policy of this component.
 128  
      */
 129  
     protected final String doGetTextForValue(String valueName, Object value) {
 130  0
         String ret = "";
 131  0
         if (value instanceof Integer) {
 132  0
             Integer ival = (Integer) value;
 133  0
             ret = doIntegerString(valueName, ival);
 134  0
         } else if (value instanceof Double) {
 135  0
             Double dval = (Double) value;
 136  0
             ret = doDoubleString(valueName, dval);
 137  0
         } else if (value instanceof Boolean) {
 138  0
             Boolean bval = (Boolean) value;
 139  0
             ret = doBooleanString(valueName, bval);
 140  0
         } else if (value instanceof String) {
 141  0
             String sval = (String) value;
 142  0
             ret = doString(valueName, sval);
 143  0
         } else {
 144  0
             ret = value.toString();
 145  
         }
 146  0
         return ret;
 147  
     }
 148  
 
 149  
     /**
 150  
      * Format a <code>Integer</code> for display.  Defaults to toString(), but sublcasses
 151  
      * can override this behaviour.
 152  
      * @param valueName The name of the value to be formatted.
 153  
      * @param value The value to format.
 154  
      * @return a formatted String for value.
 155  
      */
 156  
     protected String doIntegerString(String valueName, Integer value) {
 157  0
         return value.toString() + " " + getUnit(valueName);
 158  
     }
 159  
 
 160  
     private void doSetValue(String valueName, Object value) {
 161  0
         valueHash.put(valueName, value);
 162  
 //        relabelValue(valueName);
 163  0
         if (content != null) {
 164  0
             ((IValueListUser)content).setValueList(getValueList());
 165  
         }
 166  0
         doValueUpdate(valueName);
 167  0
         revalidate();
 168  0
     }
 169  
 
 170  
     /**
 171  
      * Format a <code>String</code> for display.  Defaults to unmodified, but sublcasses
 172  
      * can override this behaviour.
 173  
      * @param valueName The name of the value to be formatted.
 174  
      * @param value The value to format.
 175  
      * @return a formatted String for value.
 176  
      */
 177  
    protected String doString(String valueName, String value) {
 178  0
         return value + " " + getUnit(valueName);
 179  
     }
 180  
 
 181  
     /**
 182  
      * get the unit string for the value, with all the fixings.
 183  
      * @param valueName the value to get the unit for.
 184  
      * @return the unit stored in valueSuffixes, or an empty string if there was none.
 185  
      */
 186  
     protected final String getUnit(String valueName) {
 187  0
         String ret = (String) valueSuffixes.get(valueName);
 188  0
         return (ret == null) ? "" : ret;
 189  
     }
 190  
     
 191  
     protected final String getText(String valueName) {
 192  0
         String ret = (String) valueLabelText.get(valueName);
 193  0
         return (ret == null) ? "" : ret;
 194  
     }
 195  
     
 196  
     public final String getValueText(String valueName) {
 197  0
         return doGetTextForValue(valueName, valueHash.get(valueName));
 198  
     }
 199  
     
 200  
     public final String getLabelText(String valueName) {
 201  0
         String ret = (String) valueLabelText.get(valueName);
 202  0
         if (ret == null) {
 203  0
             return valueName;
 204  
         } else {
 205  0
             return ret;
 206  
         }
 207  
     }
 208  
 
 209  
     /**
 210  
      * Subclass-specific behaviour on value settings occurs here.  By the time this
 211  
      * is called, the value will already be set, but the UI will not have been updated
 212  
      * yet.  Empty implementations of this are perfectly valid.
 213  
      * 
 214  
      * @param valueName the name of the value that was updated.
 215  
      */
 216  
     protected abstract void doValueUpdate(String valueName);
 217  
 
 218  
     /**
 219  
      * Retrieve a <code>boolean</code> value. 
 220  
      * @param valueName the name of the value to return.
 221  
      * @return the value stored under <code>valueName</code>.  False if no boolean stored.
 222  
      */
 223  
     public final boolean getBooleanValue(String valueName) {
 224  0
         boolean ret = false;
 225  0
         Object o = valueHash.get(valueName);
 226  0
         if (o != null && o instanceof Boolean) {
 227  0
             ret = ((Boolean) o).booleanValue();
 228  
         }
 229  0
         return ret;
 230  
     }
 231  
 
 232  
     /**
 233  
      * Retrieve a <code>double</code> value. 
 234  
      * @param valueName the name of the value to return.
 235  
      * @return the value stored under <code>valueName</code>.  
 236  
      * <code>Double.NaN</code> if no double stored.
 237  
      */
 238  
     public final double getDoubleValue(String valueName) {
 239  0
         double ret = Double.NaN;
 240  0
         Object o = valueHash.get(valueName);
 241  0
         if (o != null && o instanceof Double) {
 242  0
             ret = ((Double) o).doubleValue();
 243  
         }
 244  0
         return ret;
 245  
     }
 246  
 
 247  
     /**
 248  
      * Retrieve an <code>int</code> value. 
 249  
      * @param valueName the name of the value to return.
 250  
      * @return the value stored under <code>valueName</code>.  
 251  
      * 0 if no int stored.
 252  
      */
 253  
     public final int getIntValue(String valueName) {
 254  0
         int ret = 0;
 255  0
         Object o = valueHash.get(valueName);
 256  0
         if (o != null && o instanceof Integer) {
 257  0
             ret = ((Integer) o).intValue();
 258  
         }
 259  0
         return ret;
 260  
     }
 261  
 
 262  
     /**
 263  
      * Retrieve a <code>String</code> value. 
 264  
      * @param valueName the name of the value to return.
 265  
      * @return the value stored under <code>valueName</code>.  
 266  
      * Empty string if no object stored.
 267  
      */
 268  
     public final String getStringValue(String valueName) {
 269  0
         String ret = "";
 270  0
         Object o = valueHash.get(valueName);
 271  0
         if (o != null) {
 272  0
             ret = o.toString();
 273  
         }
 274  0
         return ret;
 275  
     }
 276  
 
 277  
     /**
 278  
      * @param valueName
 279  
      */
 280  
 //    private void relabelValue(String valueName) {
 281  
 //        Object value = valueHash.get(valueName);
 282  
 //        if (null == value) {
 283  
 //            return;
 284  
 //        }
 285  
 //        JLabel lbl = (JLabel) valueLabels.get(valueName);
 286  
 //        if (lbl == null) {
 287  
 //            lbl = new JLabel();
 288  
 //            lbl.setAlignmentX(JLabel.LEFT_ALIGNMENT);
 289  
 //            valueLabels.put(valueName, lbl);
 290  
 //        }
 291  
 //        lbl.setText(doGetTextForValue(valueName, value));
 292  
 //    }
 293  
 
 294  
     /**
 295  
      * Regenerate the UI components.  Call this whenever the return
 296  
      * value of getContentPane() would change.
 297  
      */
 298  
     protected final void generateContentPane() {
 299  0
         removeAll();
 300  0
         List intersect = getValueList();
 301  0
         add(getContentPane(intersect), BorderLayout.CENTER);
 302  0
     }
 303  
     
 304  
     /**
 305  
      * Get a list of the values in this summary panel.
 306  
      * @return a <code>List</code> containing all the values in this summary panel.
 307  
      */
 308  
     protected final List getValueList() {
 309  0
         List intersect = new ArrayList(values);
 310  0
         intersect.retainAll(valueHash.keySet());
 311  0
         if (null != fieldOrdering) {
 312  0
             Collections.sort(intersect, fieldOrdering);
 313  
         }
 314  0
         return intersect;
 315  
     }
 316  
 
 317  
     /**
 318  
      * Overridable method to select the actual content panel of the display 
 319  
      * component.
 320  
      * @param contentValues The list of value tags that will be displayed in 
 321  
      * this component.
 322  
      * 
 323  
      */
 324  
     protected JComponent getContentPane(List contentValues) {
 325  0
         content = new SimpleSummaryContent(this);
 326  0
         content.setValueList(contentValues);
 327  
 /*        int numlbls = contentValues.size();
 328  
         int nrows = numlbls / columns;
 329  
         if ((numlbls % columns) != 0) {
 330  
             nrows++;
 331  
         }
 332  
 //        content.removeAll();
 333  
         content.setLayout(new GridBagLayout());
 334  
         GridBagConstraints gclbl = new GridBagConstraints();
 335  
         GridBagConstraints gcval = new GridBagConstraints();
 336  
         gclbl.ipadx=4;
 337  
 //        gclbl.ipady=4;
 338  
         gcval.ipadx=4;
 339  
 //        gcval.ipady=4;
 340  
         gclbl.insets=new Insets(2,2,2,6);
 341  
         gcval.insets=new Insets(2,2,6,2);
 342  
         gclbl.anchor=GridBagConstraints.WEST;
 343  
         gcval.anchor=GridBagConstraints.EAST;
 344  
         gclbl.weightx=1;
 345  
         gcval.weightx=0.9;
 346  
         gclbl.gridy = 0;
 347  
         gcval.gridy = 0;
 348  
         int col = 0;
 349  
         for (Iterator iter = contentValues.iterator(); iter.hasNext();) {
 350  
             String valueName = (String) iter.next();
 351  
             JLabel vlbl = (JLabel) valueLabels.get(valueName);
 352  
             content.add(makeRLabel(valueName), gclbl);
 353  
             content.add(vlbl, gcval);
 354  
             col+=2;
 355  
             if (col % (2 * columns) == 0) {
 356  
                 gcval.gridy++;
 357  
                 gclbl.gridy++;
 358  
             }
 359  
         }*/
 360  0
         return content;
 361  
     }
 362  
     
 363  
     /**
 364  
      * Purge a value from the component.  Removes all versions of it.
 365  
      * @param valueName
 366  
      */
 367  
     protected final void removeValueField(String valueName) {
 368  0
         values.remove(valueName);
 369  0
         valueSuffixes.remove(valueName);
 370  
 //        valueLabels.remove(valueName);
 371  0
         valueHash.remove(valueName);
 372  
 //        generateContentPane();
 373  0
     }
 374  
 
 375  
     /**
 376  
      * Set a <code>boolean</code> value in the value set.
 377  
      * @param valueName the name of the value to set.
 378  
      * @param value the value to set.
 379  
      */
 380  
     public final void setValue(String valueName, boolean value) {
 381  0
         doSetValue(valueName, Boolean.valueOf(value));
 382  0
     }
 383  
 
 384  
     /**
 385  
      * Set a <code>double</code> value in the value set.
 386  
      * @param valueName the name of the value to set.
 387  
      * @param value the value to set.
 388  
      */
 389  
     public final void setValue(String valueName, double value) {
 390  0
         doSetValue(valueName, new Double(value));
 391  0
     }
 392  
 
 393  
     /**
 394  
      * Set an <code>int</code> value in the value set.
 395  
      * @param valueName the name of the value to set.
 396  
      * @param value the value to set.
 397  
      */
 398  
 
 399  
     public final void setValue(String valueName, int value) {
 400  0
         doSetValue(valueName, new Integer(value));
 401  0
     }
 402  
 
 403  
     /**
 404  
      * Set a <code>String</code> value in the value set.
 405  
      * @param valueName the name of the value to set.
 406  
      * @param value the value to set.
 407  
      */
 408  
     public final void setValue(String valueName, String value) {
 409  0
         doSetValue(valueName, value);
 410  0
     }
 411  
 
 412  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.