diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED
index a9a4571ed2..4d7a376395 100644
--- a/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED
+++ b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED
@@ -4,4 +4,7 @@
CTIntegrationMissingDialog.title=Cyber Triage Importer Module Required
-CTIntegrationMissingDialog.descriptionLabel.text=jLabel1
+CTIntegrationMissingDialog.descriptionLabel.text=
The Cyber Triage Importer Module is required to open this case.
To open this case:
- Extract the module from the Integrations tab in the Cyber Triage options panel.
- Select the 'Plugins' option from the 'Tools' menu, and go to the 'Downloaded' tab.
- Click 'Add Plugins...' and select the path of the plugin.
- Press 'Install' to finish the installation.
+CTIntegrationMissingDialog.link.text=http://docs.cybertriage.com
+CTIntegrationMissingDialog.docsLabel.text=For more information, refer to the Cyber Triage Users Guide
+CTIntegrationMissingDialog.okButton.text=OK
diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form
index 6005c35acc..59955cb3dd 100644
--- a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form
+++ b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form
@@ -7,19 +7,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -35,7 +23,7 @@
-
+
@@ -46,7 +34,7 @@
-
+
@@ -64,6 +52,9 @@
+
+
+
@@ -93,7 +84,7 @@
-
+
diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java
index dbac6f9f55..98690ced57 100644
--- a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java
+++ b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java
@@ -33,9 +33,9 @@ import org.sleuthkit.autopsy.coreutils.Logger;
public class CTIntegrationMissingDialog extends javax.swing.JDialog {
private static final String DOCS_PAGE_URL = "http://docs.cybertriage.com";
-
+
private static final Logger LOGGER = Logger.getLogger(CTIntegrationMissingDialog.class.getName());
-
+
/**
* Creates new form CTIntegrationMissingDialog
*/
@@ -63,15 +63,11 @@ public class CTIntegrationMissingDialog extends javax.swing.JDialog {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.title")); // NOI18N
setAlwaysOnTop(true);
- setMaximumSize(new java.awt.Dimension(500, 190));
- setMinimumSize(new java.awt.Dimension(500, 190));
- setPreferredSize(new java.awt.Dimension(500, 190));
setResizable(false);
- setSize(new java.awt.Dimension(500, 190));
getContentPane().setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(descriptionLabel, org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.descriptionLabel.text")); // NOI18N
- descriptionLabel.setMinimumSize(new java.awt.Dimension(123, 116));
+ descriptionLabel.setMinimumSize(new java.awt.Dimension(483, 116));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
@@ -83,6 +79,7 @@ public class CTIntegrationMissingDialog extends javax.swing.JDialog {
getContentPane().add(descriptionLabel, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(docsLabel, org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.docsLabel.text")); // NOI18N
+ docsLabel.setMinimumSize(new java.awt.Dimension(312, 16));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
@@ -102,6 +99,7 @@ public class CTIntegrationMissingDialog extends javax.swing.JDialog {
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+ gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
getContentPane().add(link, gridBagConstraints);
@@ -156,7 +154,8 @@ public class CTIntegrationMissingDialog extends javax.swing.JDialog {
}//GEN-LAST:event_okButtonActionPerformed
public void showDialog(JComponent parentComp) {
- setLocationRelativeTo(parentComp);
+ setLocationRelativeTo(parentComp == null ? getParent() : parentComp);
+ pack();
setVisible(true);
}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
index 61e6897393..45a4d6dff6 100644
--- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
@@ -18,6 +18,7 @@
*/
package org.sleuthkit.autopsy.casemodule;
+import com.basistech.df.cybertriage.autopsy.CTIntegrationMissingDialog;
import org.sleuthkit.autopsy.featureaccess.FeatureAccessUtils;
import com.google.common.annotations.Beta;
import com.google.common.eventbus.Subscribe;
@@ -177,6 +178,7 @@ public class Case {
private static final String CASE_ACTION_THREAD_NAME = "%s-case-action";
private static final String CASE_RESOURCES_THREAD_NAME = "%s-manage-case-resources";
private static final String NO_NODE_ERROR_MSG_FRAGMENT = "KeeperErrorCode = NoNode";
+ private static final String CT_PROVIDER_PREFIX = "CTCustomContentProvider_";
private static final Logger logger = Logger.getLogger(Case.class.getName());
private static final AutopsyEventPublisher eventPublisher = new AutopsyEventPublisher();
private static final Object caseActionSerializationLock = new Object();
@@ -2739,6 +2741,9 @@ public class Case {
ContentStreamProvider contentProvider = loadContentProvider(metadata.getContentProviderName());
if (StringUtils.isNotBlank(metadata.getContentProviderName()) && contentProvider == null) {
+ if (metadata.getContentProviderName().trim().toUpperCase().startsWith(CT_PROVIDER_PREFIX.toUpperCase())) {
+ new CTIntegrationMissingDialog(WindowManager.getDefault().getMainWindow(), true).showDialog(null);
+ }
throw new CaseActionException(Bundle.Case_exceptionMessage_contentProviderCouldNotBeFound());
}