File Source: FeedbackNag.java

         /* 
    P/P   *  Method: com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag__static_init
          */
     1  /*
     2   * Copyright (c) 2006-2008 Chris Smith, Shane Mc Cormack, Gregory Holmes
     3   *
     4   * Permission is hereby granted, free of charge, to any person obtaining a copy
     5   * of this software and associated documentation files (the "Software"), to deal
     6   * in the Software without restriction, including without limitation the rights
     7   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     8   * copies of the Software, and to permit persons to whom the Software is
     9   * furnished to do so, subject to the following conditions:
    10   *
    11   * The above copyright notice and this permission notice shall be included in
    12   * all copies or substantial portions of the Software.
    13   *
    14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    20   * SOFTWARE.
    21   */
    22  
    23  package com.dmdirc.addons.ui_swing.components.statusbar;
    24  
    25  import com.dmdirc.addons.ui_swing.SwingController;
    26  import com.dmdirc.addons.ui_swing.dialogs.FeedbackDialog;
    27  import com.dmdirc.ui.IconManager;
    28  import com.dmdirc.ui.interfaces.StatusBarComponent;
    29  
    30  import java.awt.event.ActionEvent;
    31  import java.awt.event.ActionListener;
    32  import java.awt.event.MouseEvent;
    33  import java.awt.event.MouseListener;
    34  
    35  import javax.swing.BorderFactory;
    36  import javax.swing.ImageIcon;
    37  import javax.swing.JLabel;
    38  import javax.swing.JMenuItem;
    39  import javax.swing.JPopupMenu;
    40  
    41  /**
    42   * Feedback nag icon.
    43   */
    44  public class FeedbackNag extends JLabel implements StatusBarComponent, 
    45          MouseListener, ActionListener {
    46  
    47      /**
    48       * A version number for this class. It should be changed whenever the class
    49       * structure is changed (or anything else that would prevent serialized
    50       * objects being unserialized with the new class).
    51       */
    52      private static final long serialVersionUID = 1;
    53      /** Nag icon. */
    54      private final ImageIcon icon;
    55      /** Dismiss menu. */
    56      private final JPopupMenu menu;
    57      /** Dismiss menu item. */
    58      private final JMenuItem dismiss;
    59      /** Show menu item. */
    60      private final JMenuItem show;
    61      /** Swing Controller. */
    62      private SwingController controller;
    63  
    64      /**
    65       * Creates a new feedback nag.
    66       * 
    67       * @param controller Swing controller
    68       */
    69      public FeedbackNag(final SwingController controller) {
                 /* 
    P/P           *  Method: void com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag(SwingController)
                  * 
                  *  Preconditions:
                  *    controller != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.addons.ui_swing.SwingController:getStatusBar(...)@88 != null
                  *    com.dmdirc.ui.IconManager:getIconManager(...)@72 != null
                  * 
                  *  Postconditions:
                  *    this.controller == controller
                  *    this.controller != null
                  *    this.dismiss == &new JMenuItem(FeedbackNag#3)
                  *    this.icon == &new ImageIcon(FeedbackNag#1)
                  *    this.menu == &new JPopupMenu(FeedbackNag#2)
                  *    this.show == &new JMenuItem(FeedbackNag#4)
                  *    new ImageIcon(FeedbackNag#1) num objects == 1
                  *    new JMenuItem(FeedbackNag#3) num objects == 1
                  *    new JMenuItem(FeedbackNag#4) num objects == 1
                  *    new JPopupMenu(FeedbackNag#2) num objects == 1
                  */
    70          super();
    71          this.controller = controller;
    72          icon = new ImageIcon(IconManager.getIconManager().getImage("feedback"));
    73          menu = new JPopupMenu();
    74          dismiss = new JMenuItem("Dismiss");
    75          show = new JMenuItem("Open");
    76  
    77          setIcon(icon);
    78          setBorder(BorderFactory.createEtchedBorder());
    79          setToolTipText("We would appreciate any feedback you may have about DMDirc.");
    80  
    81          menu.add(show);
    82          menu.add(dismiss);
    83  
    84          show.addActionListener(this);
    85          dismiss.addActionListener(this);
    86          addMouseListener(this);
    87  
    88          controller.getStatusBar().addComponent(this);
    89      }
    90  
    91      /**
    92       * {@inheritDoc}
    93       *
    94       * @param e Mouse event
    95       */
    96      @Override
    97      public void mouseClicked(MouseEvent e) {
                 /* 
    P/P           *  Method: void mouseClicked(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) init'ed(com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me)
                  *    (soft) this.controller != null
                  *    (soft) this.menu != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.addons.ui_swing.SwingController:getStatusBar(...)@100 != null
                  * 
                  *  Postconditions:
                  *    com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me == One-of{old com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me, &new FeedbackDialog(getFeedbackDialog#1)}
                  *    init'ed(com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me)
                  *    new FeedbackDialog(getFeedbackDialog#1) num objects <= 1
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).DMDircCheckbox)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).email)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).feedback)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).info)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).name)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).serverCheckbox)
                  *    new JCheckBox(initComponents#7) num objects <= 1
                  *    ...
                  * 
                  *  Test Vectors:
                  *    java.awt.event.MouseEvent:getButton(...)@98: {-231..0, 2..232-1}, {1}
                  */
    98          if (e.getButton() == 1) {
    99              FeedbackDialog.showFeedbackDialog(controller.getMainFrame());
   100              controller.getStatusBar().removeComponent(this);
   101          }
   102          checkMouseEvent(e);
   103      }
   104  
   105      /**
   106       * {@inheritDoc}
   107       *
   108       * @param e Mouse event
   109       */
   110      @Override
   111      public void mousePressed(MouseEvent e) {
                 /* 
    P/P           *  Method: void mousePressed(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) this.menu != null
                  */
   112          checkMouseEvent(e);
   113      }
   114  
   115      /**
   116       * {@inheritDoc}
   117       *
   118       * @param e Mouse event
   119       */
   120      @Override
   121      public void mouseReleased(MouseEvent e) {
                 /* 
    P/P           *  Method: void mouseReleased(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) this.menu != null
                  */
   122          checkMouseEvent(e);
   123      }
   124  
   125      /**
   126       * {@inheritDoc}
   127       *
   128       * @param e Mouse event
   129       */
   130      @Override
   131      public void mouseEntered(MouseEvent e) {
                 /* 
    P/P           *  Method: void mouseEntered(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) this.menu != null
                  */
   132          checkMouseEvent(e);
   133      }
   134  
   135      /**
   136       * {@inheritDoc}
   137       *
   138       * @param e Mouse event
   139       */
   140      @Override
   141      public void mouseExited(MouseEvent e) {
                 /* 
    P/P           *  Method: void mouseExited(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) this.menu != null
                  */
   142          checkMouseEvent(e);
   143      }
   144  
   145      /**
   146       * Checks a mouse event for a popup trigger.
   147       *
   148       * @param e Mouse event
   149       */
   150      private void checkMouseEvent(MouseEvent e) {
                 /* 
    P/P           *  Method: void checkMouseEvent(MouseEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    (soft) this.menu != null
                  * 
                  *  Test Vectors:
                  *    java.awt.event.MouseEvent:isPopupTrigger(...)@151: {0}, {1}
                  */
   151          if (e.isPopupTrigger()) {
   152              menu.show(this, e.getX(), e.getY());
   153          }
   154      }
   155  
   156      /**
   157       * {@inheritDoc}
   158       *
   159       * @param e Action event
   160       */
   161      @Override
   162      public void actionPerformed(ActionEvent e) {
                 /* 
    P/P           *  Method: void actionPerformed(ActionEvent)
                  * 
                  *  Preconditions:
                  *    e != null
                  *    this.controller != null
                  *    (soft) init'ed(com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me)
                  * 
                  *  Presumptions:
                  *    com.dmdirc.addons.ui_swing.SwingController:getStatusBar(...)@166 != null
                  * 
                  *  Postconditions:
                  *    com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me == One-of{old com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me, &amp;new FeedbackDialog(getFeedbackDialog#1)}
                  *    init'ed(com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.me)
                  *    new FeedbackDialog(getFeedbackDialog#1) num objects <= 1
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).DMDircCheckbox)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).email)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).feedback)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).info)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).name)
                  *    init'ed(new FeedbackDialog(getFeedbackDialog#1).serverCheckbox)
                  *    new JCheckBox(initComponents#7) num objects <= 1
                  *    ...
                  */
   163          if (e.getSource() == show) {
   164              FeedbackDialog.showFeedbackDialog(controller.getMainFrame());
   165          }
   166          controller.getStatusBar().removeComponent(this);
   167      }
   168  }








SofCheck Inspector Build Version : 2.17854
FeedbackNag.java 2009-Jun-25 01:54:24
FeedbackNag.class 2009-Sep-02 17:04:15