mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 07:56:16 +00:00
Add support for custom content viewer responding to sel. events from custom result viewer
This commit is contained in:
parent
b5714cf4b4
commit
f29f48d34b
@ -80,4 +80,11 @@ public interface DataResultViewer {
|
||||
* @return True if supported, else false
|
||||
*/
|
||||
public boolean isSupported(Node selectedNode);
|
||||
|
||||
/**
|
||||
* Set a custom content viewer to respond to selection events from this result viewer.
|
||||
* If not set, the default content viewer is user
|
||||
* @param contentViewer content viewer to respond to selection events from this viewer
|
||||
*/
|
||||
public void setContentViewer(DataContent contentViewer);
|
||||
}
|
||||
|
@ -43,9 +43,19 @@ public abstract class AbstractDataResultViewer extends JPanel implements
|
||||
private static final Logger logger = Logger.getLogger(AbstractDataResultViewer.class.getName());
|
||||
protected transient ExplorerManager em = new ExplorerManager();
|
||||
private PropertyChangeListener nodeSelListener;
|
||||
|
||||
/**
|
||||
* Content viewer to respond to selection events
|
||||
* Either the main one, or custom one if set
|
||||
*/
|
||||
protected DataContent contentViewer;
|
||||
|
||||
public AbstractDataResultViewer() {
|
||||
|
||||
//DataContent is designed to return only the default viewer from lookup
|
||||
//use the default one unless set otherwise
|
||||
contentViewer = Lookup.getDefault().lookup(DataContent.class);
|
||||
|
||||
//property listener to send nodes to content viewer
|
||||
nodeSelListener = new PropertyChangeListener() {
|
||||
|
||||
@ -70,17 +80,16 @@ public abstract class AbstractDataResultViewer extends JPanel implements
|
||||
|
||||
nodeSelected(selectedNode);
|
||||
|
||||
// DataContent is designed to return only the default viewer
|
||||
DataContent dataContent = Lookup.getDefault().lookup(DataContent.class);
|
||||
|
||||
|
||||
if (selectedNode != null) {
|
||||
// there's a new/changed node to display
|
||||
Node newSelectedNode = selectedNode; // get the selected Node on the table
|
||||
// push the node to default "DataContent"
|
||||
dataContent.setNode(newSelectedNode);
|
||||
contentViewer.setNode(newSelectedNode);
|
||||
} else {
|
||||
// clear the node viewer
|
||||
dataContent.setNode(null);
|
||||
contentViewer.setNode(null);
|
||||
}
|
||||
} finally {
|
||||
setCursor(null);
|
||||
@ -155,4 +164,9 @@ public abstract class AbstractDataResultViewer extends JPanel implements
|
||||
logger.log(Level.WARNING, "Couldn't set selected nodes.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentViewer(DataContent contentViewer) {
|
||||
this.contentViewer = contentViewer;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.corecomponents;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Cursor;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
|
||||
@ -33,6 +32,7 @@ import org.openide.windows.TopComponent;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.util.Lookup;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
|
||||
/**
|
||||
@ -52,7 +52,15 @@ public final class DataResultTopComponent extends TopComponent implements DataRe
|
||||
public static String REMOVE_FILESEARCH = "RemoveFileSearchTopComponent";
|
||||
// Different DataResultsViewers
|
||||
private List<UpdateWrapper> viewers = new ArrayList<UpdateWrapper>();
|
||||
|
||||
//custom content viewer to send selections to, or null if the main one
|
||||
private DataContent customContentViewer;
|
||||
|
||||
/**
|
||||
* Create a new data result top component
|
||||
* @param isMain whether it is the main, application default result viewer, there can be only 1 main result viewer
|
||||
* @param title title of the data result window
|
||||
*/
|
||||
public DataResultTopComponent(boolean isMain, String title) {
|
||||
initComponents();
|
||||
setToolTipText(NbBundle.getMessage(DataResultTopComponent.class, "HINT_NodeTableTopComponent"));
|
||||
@ -65,6 +73,19 @@ public final class DataResultTopComponent extends TopComponent implements DataRe
|
||||
|
||||
this.dataResultTabbedPanel.addChangeListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new, custom data result top component, in addition to the application main one
|
||||
* @param title title of the data result window
|
||||
* @param customContentViewer custom content viewer to send selection events to
|
||||
*/
|
||||
public DataResultTopComponent(String title, DataContentTopComponent customContentViewer) {
|
||||
this(false, title);
|
||||
|
||||
//custom content viewer tc to setup for every result viewer
|
||||
this.customContentViewer = customContentViewer;
|
||||
}
|
||||
|
||||
|
||||
private static class UpdateWrapper {
|
||||
|
||||
@ -102,6 +123,10 @@ public final class DataResultTopComponent extends TopComponent implements DataRe
|
||||
boolean isSupported(Node selectedNode) {
|
||||
return this.wrapped.isSupported(selectedNode);
|
||||
}
|
||||
|
||||
void setContentViewer(DataContent contentViewer) {
|
||||
this.wrapped.setContentViewer(contentViewer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -191,8 +216,14 @@ public final class DataResultTopComponent extends TopComponent implements DataRe
|
||||
// find all dataContentViewer and add them to the tabbed pane
|
||||
for (DataResultViewer factory : Lookup.getDefault().lookupAll(DataResultViewer.class)) {
|
||||
DataResultViewer drv = factory.getInstance();
|
||||
this.viewers.add(new UpdateWrapper(drv));
|
||||
UpdateWrapper resultViewer = new UpdateWrapper(drv);
|
||||
if (customContentViewer != null) {
|
||||
//set custom content viewer to respond to events from this result viewer
|
||||
resultViewer.setContentViewer(customContentViewer);
|
||||
}
|
||||
this.viewers.add(resultViewer);
|
||||
this.dataResultTabbedPanel.addTab(drv.getTitle(), drv.getComponent());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user