Clover coverage report - JFCUnit Test Coverage
Coverage timestamp: Mon Dec 20 2004 23:38:10 MST
file stats: LOC: 313   Methods: 16
NCLOC: 160   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
AbstractMouseEventData.java 70.8% 69.9% 68.8% 70.1%
coverage coverage
 1   
 package junit.extensions.jfcunit.eventdata;
 2   
 
 3   
 import junit.extensions.jfcunit.xml.JFCXMLConstants;
 4   
 
 5   
 import org.w3c.dom.Element;
 6   
 
 7   
 import java.awt.AWTEvent;
 8   
 import java.awt.Component;
 9   
 import java.awt.Toolkit;
 10   
 import java.awt.event.MouseEvent;
 11   
 
 12   
 import javax.swing.AbstractButton;
 13   
 import javax.swing.JComboBox;
 14   
 import javax.swing.JComponent;
 15   
 import javax.swing.JScrollPane;
 16   
 
 17   
 
 18   
 /**
 19   
  * Abstract data container class that holds most of the data necessary for jfcUnit to fire mouse events.
 20   
  *
 21   
  * @author <a href="mailto:vraravam@thoughtworks.com">Vijay Aravamudhan : ThoughtWorks Inc.</a>
 22   
  */
 23   
 public abstract class AbstractMouseEventData extends AbstractEventData {
 24   
     /**
 25   
      * boolean specifying whether this event will show a popup.
 26   
      */
 27   
     private boolean m_isPopupTrigger;
 28   
 
 29   
     /**
 30   
      * Number of clicks in the MouseEvent (1 for single-click, 2 for double clicks).
 31   
      */
 32   
     private int m_numberOfClicks = 0;
 33   
 
 34   
     /**
 35   
      * Get the default modifiers for the popup trigger.
 36   
      *
 37   
      * @param popupTrigger true if to enable the popup menu.
 38   
      * @return int popup modifiers else DEFAULT_MOUSE_MODIFIERS.
 39   
      */
 40  496
     public static int getDefaultModifiers(final boolean popupTrigger) {
 41  496
         if (popupTrigger) {
 42  112
             return MouseEvent.BUTTON3_MASK;
 43   
         }
 44   
 
 45  384
         return DEFAULT_MOUSE_MODIFIERS;
 46   
     }
 47   
 
 48   
     /**
 49   
      * Get the default popup trigger.
 50   
      * @return int popup modifers else DEFAULT_MOUSE_MODIFIERS
 51   
      */
 52  0
     public int getDefaultModifiers() {
 53  0
         return getDefaultModifiers(getPopupTrigger());
 54   
     }
 55   
 
 56   
     /**
 57   
      * Get the string representing the current modifiers.
 58   
      * @return String version of the modifiers.
 59   
      */
 60  141
     public final String getModifierText() {
 61  141
         StringBuffer buf       = new StringBuffer();
 62  141
         int          modifiers = getModifiers();
 63   
 
 64  141
         if ((modifiers & MouseEvent.ALT_MASK) != 0) {
 65  0
             buf.append(Toolkit.getProperty("AWT.alt", "Alt"));
 66  0
             buf.append("+");
 67   
         }
 68   
 
 69   
         // Meta should only be available to Key events.
 70   
         //       if ((modifiers & MouseEvent.META_MASK) != 0) {
 71   
         //           buf.append(Toolkit.getProperty("AWT.meta", "Meta"));
 72   
         //           buf.append("+");
 73   
         //       }
 74  141
         if ((modifiers & MouseEvent.CTRL_MASK) != 0) {
 75  0
             buf.append(Toolkit.getProperty("AWT.control", "Ctrl"));
 76  0
             buf.append("+");
 77   
         }
 78   
 
 79  141
         if ((modifiers & MouseEvent.SHIFT_MASK) != 0) {
 80  0
             buf.append(Toolkit.getProperty("AWT.shift", "Shift"));
 81  0
             buf.append("+");
 82   
         }
 83   
 
 84  141
         if ((modifiers & MouseEvent.ALT_GRAPH_MASK) != 0) {
 85  0
             buf.append(Toolkit.getProperty("AWT.altGraph", "Alt Graph"));
 86  0
             buf.append("+");
 87   
         }
 88   
 
 89  141
         if ((modifiers & MouseEvent.BUTTON1_MASK) != 0) {
 90  121
             buf.append(Toolkit.getProperty("AWT.button1", "Button1"));
 91  121
             buf.append("+");
 92   
         }
 93   
 
 94  141
         if ((modifiers & MouseEvent.BUTTON2_MASK) != 0) {
 95  0
             buf.append(Toolkit.getProperty("AWT.button2", "Button2"));
 96  0
             buf.append("+");
 97   
         }
 98   
 
 99  141
         if ((modifiers & MouseEvent.BUTTON3_MASK) != 0) {
 100  20
             buf.append(Toolkit.getProperty("AWT.button3", "Button3"));
 101  20
             buf.append("+");
 102   
         }
 103   
 
 104  141
         if (buf.length() > 0) {
 105  141
             buf.setLength(buf.length() - 1); // remove trailing '+'
 106   
         }
 107   
 
 108  141
         return buf.toString();
 109   
     }
 110   
 
 111   
     /**
 112   
      * Set the attribute value.
 113   
      *
 114   
      * @param numberOfClicks The new value of the attribute
 115   
      */
 116  2791
     public final void setNumberOfClicks(final int numberOfClicks) {
 117  2791
         m_numberOfClicks = numberOfClicks;
 118   
     }
 119   
 
 120   
     /**
 121   
      * Get the attribute value.
 122   
      *
 123   
      * @return int    The value of the attribute
 124   
      */
 125  1976
     public final int getNumberOfClicks() {
 126  1976
         return m_numberOfClicks;
 127   
     }
 128   
 
 129   
     /**
 130   
      * Return the default number of clicks.
 131   
      * @return defaut number of clicks.
 132   
      */
 133  0
     public int getDefaultNumberOfClicks() {
 134  0
         return EventDataConstants.DEFAULT_NUMBEROFCLICKS;
 135   
     }
 136   
 
 137   
     /**
 138   
      * Get the default Popup trigger setting.
 139   
      * @return default popup trigger setting.
 140   
      */
 141  0
     public boolean getDefaultPopupTrigger() {
 142  0
         return EventDataConstants.DEFAULT_ISPOPUPTRIGGER;
 143   
     }
 144   
 
 145   
     /**
 146   
      * Set the attribute value.
 147   
      *
 148   
      * @param isPopupTrigger The new value of the attribute
 149   
      */
 150  2791
     public void setPopupTrigger(final boolean isPopupTrigger) {
 151  2791
         m_isPopupTrigger = isPopupTrigger;
 152   
     }
 153   
 
 154   
     /**
 155   
      * Get the attribute value.
 156   
      *
 157   
      * @return boolean    The value of the attribute
 158   
      */
 159  1848
     public boolean getPopupTrigger() {
 160  1848
         return m_isPopupTrigger;
 161   
     }
 162   
 
 163   
     /**
 164   
      * Check if this event can consume the {@link java.awt.AWTEvent}.
 165   
      *
 166   
      * @param ae {@link java.awt.AWTEvent} to be consumed.
 167   
      * @return boolean true if the event can be consumed.
 168   
      */
 169  1790
     public boolean canConsume(final AWTEvent ae) {
 170  1790
         if (!(ae instanceof MouseEvent)) {
 171  366
             return false;
 172   
         }
 173   
 
 174  1424
         MouseEvent me = (MouseEvent) ae;
 175   
 
 176  1424
         if (me.getID() == MouseEvent.MOUSE_DRAGGED) {
 177  27
             return false;
 178   
         }
 179   
 
 180  1397
         Object source = ae.getSource();
 181   
 
 182  1397
         if (source instanceof JScrollPane) {
 183  84
             return false;
 184   
         }
 185   
 
 186  1313
         if (source instanceof JComponent) {
 187  1259
             String name = ((JComponent) source).getName();
 188   
 
 189  1259
             if ((name != null) && name.endsWith(".glassPane")) {
 190  0
                 return false;
 191   
             }
 192   
         }
 193   
 
 194  1313
         if (source instanceof AbstractButton) {
 195  523
             if (((AbstractButton) source).getParent() instanceof JComboBox) {
 196  80
                 return false;
 197   
             }
 198   
         }
 199   
 
 200  1233
         if (ae.getSource().equals(getRoot((Component) ae.getSource()))) {
 201  54
             return false;
 202   
         }
 203   
 
 204  1179
         return true;
 205   
     }
 206   
 
 207   
     /**
 208   
      * Get the attribute value.
 209   
      *
 210   
      * @param ae {@link java.awt.Event} to be processed.
 211   
      * @return boolean    The value of the attribute
 212   
      */
 213  1030
     public boolean consume(final AWTEvent ae) {
 214  1030
         MouseEvent me = (MouseEvent) ae;
 215  1030
         int        id = me.getID();
 216   
 
 217  1030
         if ((id == MouseEvent.MOUSE_MOVED)
 218   
                 || (id == MouseEvent.MOUSE_ENTERED)
 219   
                 || (id == MouseEvent.MOUSE_EXITED)
 220   
                 || (isValid() && (ae.getSource() == getRoot()))) {
 221   
             // Ignore the event.
 222  199
             return true;
 223   
         }
 224   
 
 225  831
         return false;
 226   
     }
 227   
 
 228   
     /**
 229   
      * Compare to event datas and determine if they are equal.
 230   
      *
 231   
      * @param o Object to be compared.
 232   
      * @return true if the events are the same.
 233   
      */
 234  119
     public boolean equals(final Object o) {
 235  119
         if (!super.equals(o)) {
 236  72
             return false;
 237   
         }
 238   
 
 239  47
         AbstractMouseEventData data = (AbstractMouseEventData) o;
 240   
 
 241  47
         return (data.getNumberOfClicks() == getNumberOfClicks())
 242   
             && (data.getPopupTrigger() == getPopupTrigger());
 243   
     }
 244   
 
 245   
     /**
 246   
      * hashCode is delegated to the super class.
 247   
      * @return hashCode of the super class.
 248   
      */
 249  0
     public int hashCode() {
 250  0
         return super.hashCode();
 251   
     }
 252   
 
 253   
     /**
 254   
      * Populate the element given with the attributes of the
 255   
      * event.
 256   
      *
 257   
      * @param e element to be populated.
 258   
      */
 259  0
     public void populate(final Element e) {
 260  0
         super.populate(e);
 261   
 
 262  0
         if (getNumberOfClicks() != getDefaultNumberOfClicks()
 263   
             && getNumberOfClicks() > 0) {
 264  0
             e.setAttribute(JFCXMLConstants.CLICKS, "" + getNumberOfClicks());
 265   
         }
 266   
 
 267  0
         boolean trigger = getPopupTrigger();
 268   
 
 269  0
         if (trigger != getDefaultPopupTrigger()) {
 270  0
             String value = "true";
 271   
 
 272  0
             if (!trigger) {
 273  0
                 value = "false";
 274   
             }
 275   
 
 276  0
             e.setAttribute(JFCXMLConstants.POPUPTRIGGER, value);
 277   
         }
 278   
     }
 279   
 
 280   
     /**
 281   
      * Check if the event has the same source as this event data.
 282   
      *
 283   
      * @param ae {@link java.awt.AWTEvent} to be checked.
 284   
      * @return true if the events have the same source.
 285   
      */
 286  670
     public boolean sameSource(final AWTEvent ae) {
 287   
         // REDTAG: Is this check incorrect?
 288  670
         if (isValid()) {
 289  516
             return ((Component) ae.getSource() == getComponent());
 290   
         } else {
 291  154
             return true;
 292   
         }
 293   
     }
 294   
 
 295   
     /**
 296   
      * Return a string representing the eventdata.
 297   
      *
 298   
      * @return String description of the event data.
 299   
      */
 300  141
     public String toString() {
 301  141
         if (!isValid()) {
 302  0
             return super.toString();
 303   
         }
 304   
 
 305  141
         StringBuffer buf = new StringBuffer(1000);
 306  141
         buf.append(super.toString());
 307  141
         buf.append(" clicks: " + getNumberOfClicks());
 308  141
         buf.append(" popup: " + getPopupTrigger());
 309   
 
 310  141
         return buf.toString();
 311   
     }
 312   
 }
 313