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, &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 |