|
@@ -22,12 +22,14 @@
|
22
|
22
|
|
23
|
23
|
package com.dmdirc.addons.ui_swing.components.statusbar;
|
24
|
24
|
|
|
25
|
+import com.dmdirc.ClientModule.GlobalConfig;
|
25
|
26
|
import com.dmdirc.addons.ui_swing.MainFrame;
|
26
|
27
|
import com.dmdirc.addons.ui_swing.SwingController;
|
27
|
28
|
import com.dmdirc.logger.ErrorLevel;
|
28
|
29
|
import com.dmdirc.logger.ErrorListener;
|
29
|
30
|
import com.dmdirc.logger.ErrorManager;
|
30
|
31
|
import com.dmdirc.logger.ProgramError;
|
|
32
|
+import com.dmdirc.ui.IconManager;
|
31
|
33
|
|
32
|
34
|
import java.awt.event.ActionEvent;
|
33
|
35
|
import java.awt.event.ActionListener;
|
|
@@ -35,6 +37,9 @@ import java.awt.event.MouseEvent;
|
35
|
37
|
import java.util.Collection;
|
36
|
38
|
import java.util.List;
|
37
|
39
|
|
|
40
|
+import javax.inject.Inject;
|
|
41
|
+import javax.inject.Provider;
|
|
42
|
+import javax.inject.Singleton;
|
38
|
43
|
import javax.swing.Icon;
|
39
|
44
|
import javax.swing.JLabel;
|
40
|
45
|
import javax.swing.JMenuItem;
|
|
@@ -46,20 +51,22 @@ import javax.swing.SwingUtilities;
|
46
|
51
|
*
|
47
|
52
|
* @since 0.6.3m1
|
48
|
53
|
*/
|
|
54
|
+@Singleton
|
49
|
55
|
public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
|
50
|
56
|
ErrorListener, ActionListener {
|
51
|
57
|
|
52
|
58
|
/** Serial version UID. */
|
53
|
59
|
private static final long serialVersionUID = 2;
|
54
|
60
|
/** non error state image icon. */
|
55
|
|
- private final Icon DEFAULT_ICON;
|
|
61
|
+ private final Icon defaultIcon;
|
56
|
62
|
/** Status controller. */
|
57
|
63
|
private final MainFrame mainFrame;
|
58
|
64
|
/** Swing status bar. */
|
59
|
|
- private final SwingStatusBar statusBar;
|
|
65
|
+ private final Provider<SwingStatusBar> statusBar;
|
|
66
|
+ /** The manager to use to retrieve icons. */
|
|
67
|
+ private final IconManager iconManager;
|
60
|
68
|
/** Error manager. */
|
61
|
|
- private final transient ErrorManager errorManager = ErrorManager
|
62
|
|
- .getErrorManager();
|
|
69
|
+ private final transient ErrorManager errorManager = ErrorManager.getErrorManager();
|
63
|
70
|
/** Dismiss menu. */
|
64
|
71
|
private final JPopupMenu menu;
|
65
|
72
|
/** Dismiss menu item. */
|
|
@@ -74,23 +81,29 @@ public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
|
74
|
81
|
/**
|
75
|
82
|
* Creates a new ErrorPanel for the specified status bar.
|
76
|
83
|
*
|
77
|
|
- * @param controller Swing controller
|
78
|
|
- * @param mainFrame Main frame
|
79
|
|
- * @param statusBar Status bar
|
|
84
|
+ * @param swingController Swing controller
|
|
85
|
+ * @param iconManager The manager to use to retrieve icons.
|
|
86
|
+ * @param mainFrame Main frame
|
|
87
|
+ * @param statusBar Status bar
|
80
|
88
|
*/
|
81
|
|
- public ErrorPanel(final SwingController controller,
|
82
|
|
- final MainFrame mainFrame, final SwingStatusBar statusBar) {
|
|
89
|
+ @Inject
|
|
90
|
+ public ErrorPanel(
|
|
91
|
+ final SwingController swingController,
|
|
92
|
+ @GlobalConfig final IconManager iconManager,
|
|
93
|
+ final MainFrame mainFrame,
|
|
94
|
+ final Provider<SwingStatusBar> statusBar) {
|
83
|
95
|
super(new JLabel());
|
84
|
96
|
|
85
|
|
- this.controller = controller;
|
|
97
|
+ this.controller = swingController;
|
86
|
98
|
this.mainFrame = mainFrame;
|
87
|
99
|
this.statusBar = statusBar;
|
88
|
|
- DEFAULT_ICON = controller.getIconManager().getIcon("normal");
|
|
100
|
+ this.iconManager = iconManager;
|
|
101
|
+ defaultIcon = iconManager.getIcon("normal");
|
89
|
102
|
|
90
|
103
|
menu = new JPopupMenu();
|
91
|
104
|
dismiss = new JMenuItem("Clear All");
|
92
|
105
|
show = new JMenuItem("Open");
|
93
|
|
- label.setIcon(DEFAULT_ICON);
|
|
106
|
+ label.setIcon(defaultIcon);
|
94
|
107
|
setVisible(errorManager.getErrorCount() > 0);
|
95
|
108
|
menu.add(show);
|
96
|
109
|
menu.add(dismiss);
|
|
@@ -102,12 +115,12 @@ public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
|
102
|
115
|
|
103
|
116
|
@Override
|
104
|
117
|
protected StatusbarPopupWindow getWindow() {
|
105
|
|
- return new ErrorPopup(controller.getIconManager(), this, mainFrame);
|
|
118
|
+ return new ErrorPopup(iconManager, this, mainFrame);
|
106
|
119
|
}
|
107
|
120
|
|
108
|
121
|
/** Clears the error. */
|
109
|
122
|
public void clearError() {
|
110
|
|
- label.setIcon(DEFAULT_ICON);
|
|
123
|
+ label.setIcon(defaultIcon);
|
111
|
124
|
errorLevel = null;
|
112
|
125
|
}
|
113
|
126
|
|
|
@@ -141,8 +154,7 @@ public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
|
141
|
154
|
for (final ProgramError error : errors) {
|
142
|
155
|
if (errorLevel == null || !error.getLevel().moreImportant(errorLevel)) {
|
143
|
156
|
errorLevel = error.getLevel();
|
144
|
|
- label.setIcon(controller.getIconManager()
|
145
|
|
- .getIcon(errorLevel.getIcon()));
|
|
157
|
+ label.setIcon(iconManager.getIcon(errorLevel.getIcon()));
|
146
|
158
|
}
|
147
|
159
|
}
|
148
|
160
|
setVisible(true);
|
|
@@ -153,7 +165,7 @@ public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
|
153
|
165
|
|
154
|
166
|
@Override
|
155
|
167
|
public boolean isReady() {
|
156
|
|
- return statusBar.isValid();
|
|
168
|
+ return statusBar.get().isValid();
|
157
|
169
|
}
|
158
|
170
|
|
159
|
171
|
/**
|