Code improvement, more comments and added a ToolTip to the label.
This commit is contained in:
Fabian Becker 2012-05-30 14:02:16 +00:00
parent 4462dd6e3d
commit 37589f8d4f

View File

@ -13,24 +13,26 @@ import java.util.logging.Logger;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
/** /**
* This is a JLabel that shows the current logging level
* depending on the Logger provided. It creates a popup
* menu on left-click to change the logging level. Logging
* levels are as specified by "java.util.logging.Level.*"
* *
* @author becker * @author becker
*/ */
public final class LoggingLevelLabel extends JLabel { public final class LoggingLevelLabel extends JLabel {
private JPopupMenu menu; private JPopupMenu menu;
private String[] options; private String[] options;
private String selected;
private Logger logger; private Logger logger;
public LoggingLevelLabel(Logger logger) { public LoggingLevelLabel(final Logger logger) {
options = new String[]{"Info", "Warning", "Severe", "Fine", "Finer", "Finest", "All"}; options = new String[]{"Info", "Warning", "Severe", "Fine", "Finer", "Finest", "All"};
this.logger = logger; this.logger = logger;
setToolTipText("Click to change current logging level");
createPopupMenu(); createPopupMenu();
updateText(); updateText();
} }
@ -61,13 +63,18 @@ public final class LoggingLevelLabel extends JLabel {
} }
}); });
JMenuItem menuItem;
ActionListener menuAction = new MenuActionListener();
for (String option : options) { for (String option : options) {
JMenuItem menuItem = new JMenuItem(option); menuItem = new JMenuItem(option);
menuItem.addActionListener(new MenuActionListener()); menuItem.addActionListener(menuAction);
menu.add(menuItem); menu.add(menuItem);
} }
} }
/**
* Updates the visible text on the label.
*/
private void updateText() { private void updateText() {
/* Get the current logging Level */ /* Get the current logging Level */
Level lvl = logger.getLevel(); Level lvl = logger.getLevel();
@ -79,6 +86,11 @@ public final class LoggingLevelLabel extends JLabel {
setText("<html><b>Level</b>: " + lvl.getName()); setText("<html><b>Level</b>: " + lvl.getName());
} }
/**
* Sets the level of the logger to a new level.
*
* @param level The new level for the logger
*/
private void setLoggerLevel(Level level) { private void setLoggerLevel(Level level) {
logger.setLevel(level); logger.setLevel(level);
logger.log(Level.INFO, "Logging Level changed to {0}", level.getName()); logger.log(Level.INFO, "Logging Level changed to {0}", level.getName());
@ -103,7 +115,5 @@ public final class LoggingLevelLabel extends JLabel {
LoggingLevelLabel.this.updateText(); LoggingLevelLabel.this.updateText();
} }
} }
} }