4961 some comments added some clean up

This commit is contained in:
William Schaefer 2019-05-10 18:29:41 -04:00
parent 6feed3db22
commit 01cb54a03e
4 changed files with 65 additions and 18 deletions

View File

@ -59,7 +59,7 @@ final class HexView extends JPanel {
private static final long serialVersionUID = 1L;
private final int bytesPerLine;
private final ByteBuffer buf;
private final HexViewListener listener = new HexViewListener();
private final HexViewListener hexViewListener = new HexViewListener();
private final JTextComponent offsetView;
private final JTextComponent hexView;
private final JTextComponent asciiView;
@ -156,8 +156,8 @@ final class HexView extends JPanel {
this.offsetView.setText(offsetSB.toString());
this.hexView.setText(hexSB.toString());
this.asciiView.setText(asciiSB.toString());
this.hexView.addCaretListener(listener);
this.asciiView.addCaretListener(listener);
this.hexView.addCaretListener(hexViewListener);
this.asciiView.addCaretListener(hexViewListener);
this.asciiView.setSelectedTextColor(this.asciiView.getForeground());
this.hexView.setSelectedTextColor(this.asciiView.getForeground());
this.highlightColor = this.hexView.getSelectionColor();

View File

@ -21,7 +21,10 @@
*/
package org.sleuthkit.autopsy.rejview;
/**
* Interface for listeners of tree node selection events
*/
public interface RejTreeNodeSelectionListener {
public abstract void nodeSelected(RejTreeNodeSelectionEvent e);
public abstract void nodeSelected(RejTreeNodeSelectionEvent event);
}

View File

@ -38,35 +38,40 @@ import javax.swing.JTree;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
/**
* Tree view for registry hive information
*/
final class RejTreeView extends JScrollPane {
private static final Logger logger = Logger.getLogger(HexView.class.getName());
private static final long serialVersionUID = 1L;
private final DefaultTreeModel treeModel;
private final RejTreeViewListener listener = new RejTreeViewListener();
private final RejTreeViewListener rejTreeViewListener = new RejTreeViewListener();
private final RegistryHive hive;
private final CopyOnWriteArrayList<RejTreeNodeSelectionListener> nodeSelectionListeners;
private final JTree tree;
/**
* Construct a new RejTreeView given the RegistrHive object
*
* @param hive the registryhive to construct the RejTreeView for
*/
@NbBundle.Messages({"RejTreeView.failureValueName.text=PARSE FAILED"})
RejTreeView(RegistryHive hive) {
this.hive = hive;
DefaultMutableTreeNode rootNode;
this.nodeSelectionListeners = new CopyOnWriteArrayList<>();
try {
rootNode = getTreeNode(new RejTreeKeyNode(this.hive.getRoot()));
} catch (RegistryParseException ex) {
logger.log(Level.WARNING, "Failed to parse root key", ex);
rootNode = new DefaultMutableTreeNode(Bundle.RejTreeView_failureValueName_text());
}
this.treeModel = new DefaultTreeModel(rootNode);
this.treeModel.setAsksAllowsChildren(true);
this.tree = new JTree(this.treeModel);
this.tree.addTreeExpansionListener(listener);
this.tree.addTreeSelectionListener(listener);
this.tree.addTreeExpansionListener(rejTreeViewListener);
this.tree.addTreeSelectionListener(rejTreeViewListener);
// here's a bit of a hack to force the children to be loaded and shown
this.tree.collapsePath(new TreePath(rootNode.getPath()));
this.tree.expandPath(new TreePath(rootNode.getPath()));
@ -85,14 +90,29 @@ final class RejTreeView extends JScrollPane {
return ret;
}
void addRejTreeNodeSelectionListener(RejTreeNodeSelectionListener l) {
this.nodeSelectionListeners.add(l);
/**
* Add a RejTreeNodeSelectionListener to the list of node selection
* listeners the RejTreeView has
*
* @param selListener the RejTreeNodeSelectionListener to add
*/
void addRejTreeNodeSelectionListener(RejTreeNodeSelectionListener selListener) {
this.nodeSelectionListeners.add(selListener);
}
void removeRejTreeNodeSelectionListener(RejTreeNodeSelectionListener l) {
this.nodeSelectionListeners.remove(l);
/**
* Remove a RejTreeNodeSelectionListener from the list of node selection
* listeners the RejTreeView has
*
* @param selListener the RejTreeNodeSelectionListener to remove
*/
void removeRejTreeNodeSelectionListener(RejTreeNodeSelectionListener selListener) {
this.nodeSelectionListeners.remove(selListener);
}
/**
* Private listener for TreeExpansionEvents and TreeSelectionEvents
*/
private class RejTreeViewListener implements TreeExpansionListener, TreeSelectionListener {
@Override
@ -120,6 +140,9 @@ final class RejTreeView extends JScrollPane {
this.triggerRejTreeNodeSelection((RejTreeNode) node.getUserObject());
}
/**
* Call each of the node selection listeners for a given node
*/
void triggerRejTreeNodeSelection(RejTreeNode n) {
RejTreeNodeSelectionEvent e = new RejTreeNodeSelectionEvent(n);
for (RejTreeNodeSelectionListener listener : nodeSelectionListeners) {

View File

@ -29,6 +29,9 @@ import java.nio.ByteBuffer;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
/**
* A panel for displaying information from a registry hive file
*/
public final class RejView extends JPanel implements RejTreeNodeSelectionListener {
private static final long serialVersionUID = 1L;
@ -36,6 +39,11 @@ public final class RejView extends JPanel implements RejTreeNodeSelectionListene
private final RejTreeView treeView;
private final JSplitPane splitPane;
/**
* Create a new RejView panel given a RegistryHive object
*
* @param hive the hive file to display information for
*/
public RejView(RegistryHive hive) {
super(new BorderLayout());
this.hive = hive;
@ -46,6 +54,11 @@ public final class RejView extends JPanel implements RejTreeNodeSelectionListene
this.setupUI();
}
/**
* Create a new RejView panel given a ByteBuffer object
*
* @param buf the ByteBuffer which represents the Reigstry Hive file
*/
public RejView(ByteBuffer buf) {
super(new BorderLayout());
this.hive = new RegistryHiveBuffer(buf);
@ -57,6 +70,9 @@ public final class RejView extends JPanel implements RejTreeNodeSelectionListene
this.setupUI();
}
/**
* Set up the ui elements of the panel
*/
private void setupUI() {
this.splitPane.setResizeWeight(0);
this.splitPane.setOneTouchExpandable(true);
@ -66,11 +82,16 @@ public final class RejView extends JPanel implements RejTreeNodeSelectionListene
this.treeView.addRejTreeNodeSelectionListener(this);
}
/**
* Update the the right side of the panel to display the selected node
*
* @param event the selection event indicating what node was selecteds
*/
@Override
public void nodeSelected(RejTreeNodeSelectionEvent e) {
RejTreeNodeView v = e.getNode().getView();
public void nodeSelected(RejTreeNodeSelectionEvent event) {
RejTreeNodeView view = event.getNode().getView();
int curDividerLocation = this.splitPane.getDividerLocation();
this.splitPane.setRightComponent(v);
this.splitPane.setRightComponent(view);
this.splitPane.setDividerLocation(curDividerLocation);
}
}