19 package org.sleuthkit.autopsy.casemodule;
21 import java.awt.Dimension;
22 import java.awt.Toolkit;
23 import java.awt.event.ActionEvent;
24 import java.beans.PropertyChangeEvent;
25 import java.beans.PropertyChangeListener;
26 import javax.swing.Action;
27 import javax.swing.JDialog;
28 import javax.swing.SwingUtilities;
29 import org.openide.util.HelpCtx;
30 import org.openide.util.NbBundle;
31 import org.openide.util.actions.CallableSystemAction;
32 import org.openide.windows.WindowManager;
38 final class CasePropertiesAction
extends CallableSystemAction {
40 private static final long serialVersionUID = 1L;
41 private static JDialog casePropertiesDialog;
43 CasePropertiesAction() {
44 putValue(Action.NAME, NbBundle.getMessage(CasePropertiesAction.class,
"CTL_CasePropertiesAction"));
45 this.setEnabled(
false);
46 Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(),
new PropertyChangeListener() {
48 public void propertyChange(PropertyChangeEvent evt) {
49 setEnabled(null != evt.getNewValue());
55 public void performAction() {
56 SwingUtilities.invokeLater(() -> {
57 if (null == casePropertiesDialog) {
58 String title = NbBundle.getMessage(this.getClass(),
"CasePropertiesAction.window.title");
59 casePropertiesDialog =
new JDialog(WindowManager.getDefault().getMainWindow(), title,
false);
60 CaseInformationPanel caseInformationPanel =
new CaseInformationPanel();
61 caseInformationPanel.addCloseButtonAction((ActionEvent e) -> {
62 casePropertiesDialog.setVisible(
false);
64 casePropertiesDialog.add(caseInformationPanel);
65 casePropertiesDialog.setResizable(
true);
66 casePropertiesDialog.pack();
68 Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
69 double w = casePropertiesDialog.getSize().getWidth();
70 double h = casePropertiesDialog.getSize().getHeight();
71 casePropertiesDialog.setLocation((
int) ((screenDimension.getWidth() - w) / 2), (int) ((screenDimension.getHeight() - h) / 2));
72 casePropertiesDialog.setVisible(
true);
74 casePropertiesDialog.setVisible(
true);
75 casePropertiesDialog.toFront();
80 public String getName() {
81 return NbBundle.getMessage(CasePropertiesAction.class,
"CTL_CasePropertiesAction");
85 public HelpCtx getHelpCtx() {
86 return HelpCtx.DEFAULT_HELP;
89 static void closeCasePropertiesWindow() {
90 casePropertiesDialog.setVisible(
false);