| Method from org.apache.log4j.lf5.viewer.categoryexplorer.CategoryNodeEditor Detail: |
protected void collapse(CategoryNode node) {
_tree.collapsePath(getTreePath(node));
}
|
protected void collapseDescendants(CategoryNode node) {
Enumeration descendants = node.depthFirstEnumeration();
CategoryNode current;
while (descendants.hasMoreElements()) {
current = (CategoryNode) descendants.nextElement();
collapse(current);
}
}
|
protected JMenuItem createCollapseMenuItem(CategoryNode node) {
JMenuItem result = new JMenuItem("Collapse All Descendant Categories");
result.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
collapseDescendants(node);
}
});
return result;
}
|
protected JMenuItem createExpandMenuItem(CategoryNode node) {
JMenuItem result = new JMenuItem("Expand All Descendant Categories");
result.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
expandDescendants(node);
}
});
return result;
}
|
protected JMenuItem createPropertiesMenuItem(CategoryNode node) {
JMenuItem result = new JMenuItem("Properties");
result.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showPropertiesDialog(node);
}
});
return result;
}
|
protected JMenuItem createRemoveMenuItem() {
JMenuItem result = new JMenuItem("Remove All Empty Categories");
result.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
while (removeUnusedNodes() > 0) ;
}
});
return result;
}
This featured was moved from the LogBrokerMonitor class
to the CategoryNodeExplorer so that the Category tree
could be pruned from the Category Explorer popup menu.
This menu option only appears when a user right clicks on
the Category parent node.
See removeUnusedNodes() |
protected JMenuItem createSelectDescendantsMenuItem(CategoryNode node) {
JMenuItem selectDescendants =
new JMenuItem("Select All Descendant Categories");
selectDescendants.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
_categoryModel.setDescendantSelection(node, true);
}
}
);
return selectDescendants;
}
|
protected JMenuItem createUnselectDescendantsMenuItem(CategoryNode node) {
JMenuItem unselectDescendants =
new JMenuItem("Deselect All Descendant Categories");
unselectDescendants.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
_categoryModel.setDescendantSelection(node, false);
}
}
);
return unselectDescendants;
}
|
protected void expand(CategoryNode node) {
_tree.expandPath(getTreePath(node));
}
|
protected void expandDescendants(CategoryNode node) {
Enumeration descendants = node.depthFirstEnumeration();
CategoryNode current;
while (descendants.hasMoreElements()) {
current = (CategoryNode) descendants.nextElement();
expand(current);
}
}
|
public Object getCellEditorValue() {
return _lastEditedNode.getUserObject();
}
|
protected Object getDisplayedProperties(CategoryNode node) {
ArrayList result = new ArrayList();
result.add("Category: " + node.getTitle());
if (node.hasFatalRecords()) {
result.add("Contains at least one fatal LogRecord.");
}
if (node.hasFatalChildren()) {
result.add("Contains descendants with a fatal LogRecord.");
}
result.add("LogRecords in this category alone: " +
node.getNumberOfContainedRecords());
result.add("LogRecords in descendant categories: " +
node.getNumberOfRecordsFromChildren());
result.add("LogRecords in this category including descendants: " +
node.getTotalNumberOfRecords());
return result.toArray();
}
|
public Component getTreeCellEditorComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row) {
_lastEditedNode = (CategoryNode) value;
_tree = tree;
return _renderer.getTreeCellRendererComponent(tree,
value, selected, expanded,
leaf, row, true);
// hasFocus ignored
}
|
protected TreePath getTreePath(CategoryNode node) {
return new TreePath(node.getPath());
}
|
protected int removeUnusedNodes() {
int count = 0;
CategoryNode root = _categoryModel.getRootCategoryNode();
Enumeration enumeration = root.depthFirstEnumeration();
while (enumeration.hasMoreElements()) {
CategoryNode node = (CategoryNode) enumeration.nextElement();
if (node.isLeaf() && node.getNumberOfContainedRecords() == 0
&& node.getParent() != null) {
_categoryModel.removeNodeFromParent(node);
count++;
}
}
return count;
}
Removes any inactive nodes from the Category tree. |
protected void showPopup(CategoryNode node,
int x,
int y) {
JPopupMenu popup = new JPopupMenu();
popup.setSize(150, 400);
//
// Configure the Popup
//
if (node.getParent() == null) {
popup.add(createRemoveMenuItem());
popup.addSeparator();
}
popup.add(createSelectDescendantsMenuItem(node));
popup.add(createUnselectDescendantsMenuItem(node));
popup.addSeparator();
popup.add(createExpandMenuItem(node));
popup.add(createCollapseMenuItem(node));
popup.addSeparator();
popup.add(createPropertiesMenuItem(node));
popup.show(_renderer, x, y);
}
|
protected void showPropertiesDialog(CategoryNode node) {
JOptionPane.showMessageDialog(
_tree,
getDisplayedProperties(node),
"Category Properties: " + node.getTitle(),
JOptionPane.PLAIN_MESSAGE
);
}
|