mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Added blocking dialog box 'TimelineProgressDialog' that comes up when
timeline processing begins and closes when it is finished. This is to prevent users from starting another timeline processing job while one is already underway.
This commit is contained in:
parent
cfaa710501
commit
b19f8d99af
@ -1,2 +1,3 @@
|
|||||||
OpenIDE-Module-Name=Timeline
|
OpenIDE-Module-Name=Timeline
|
||||||
CTL_MakeTimeline="Make Timeline (Beta)"
|
CTL_MakeTimeline="Make Timeline (Beta)"
|
||||||
|
TimelineProgressDialog.jLabel1.text=Computing timeline . . .
|
||||||
|
@ -137,6 +137,7 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
private List<YearEpoch> data;
|
private List<YearEpoch> data;
|
||||||
private boolean listeningToAddImage = false;
|
private boolean listeningToAddImage = false;
|
||||||
private long lastObjectId = -1;
|
private long lastObjectId = -1;
|
||||||
|
private TimelineProgressDialog dialog;
|
||||||
|
|
||||||
//Swing components and JavafX components don't play super well together
|
//Swing components and JavafX components don't play super well together
|
||||||
//Swing components need to be initialized first, in the swing specific thread
|
//Swing components need to be initialized first, in the swing specific thread
|
||||||
@ -299,6 +300,9 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
} finally {
|
} finally {
|
||||||
// stop the progress bar
|
// stop the progress bar
|
||||||
progress.finish();
|
progress.finish();
|
||||||
|
|
||||||
|
// close the dialog
|
||||||
|
dialog.doClose(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -975,6 +979,15 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
listeningToAddImage = true;
|
listeningToAddImage = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create the modal dialog
|
||||||
|
SwingUtilities.invokeLater(new Runnable () {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
dialog = new TimelineProgressDialog(jf, true);
|
||||||
|
dialog.setVisible(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// initialize mactimeFileName
|
// initialize mactimeFileName
|
||||||
mactimeFileName = Case.getCurrentCase().getName() + "-MACTIME.txt";
|
mactimeFileName = Case.getCurrentCase().getName() + "-MACTIME.txt";
|
||||||
|
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
|
||||||
|
</Events>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="51" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="121" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="37" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="64" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/timeline/Bundle.properties" key="TimelineProgressDialog.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
@ -0,0 +1,114 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package org.sleuthkit.autopsy.timeline;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
|
import javax.swing.ActionMap;
|
||||||
|
import javax.swing.InputMap;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.KeyStroke;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mciver
|
||||||
|
*/
|
||||||
|
public class TimelineProgressDialog extends javax.swing.JDialog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A return status code - returned if Cancel button has been pressed
|
||||||
|
*/
|
||||||
|
public static final int RET_CANCEL = 0;
|
||||||
|
/**
|
||||||
|
* A return status code - returned if OK button has been pressed
|
||||||
|
*/
|
||||||
|
public static final int RET_OK = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form TimelineProgressDialog
|
||||||
|
*/
|
||||||
|
public TimelineProgressDialog(java.awt.Frame parent, boolean modal) {
|
||||||
|
super(parent, modal);
|
||||||
|
initComponents();
|
||||||
|
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
// Close the dialog when Esc is pressed
|
||||||
|
String cancelName = "cancel";
|
||||||
|
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||||
|
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName);
|
||||||
|
ActionMap actionMap = getRootPane().getActionMap();
|
||||||
|
actionMap.put(cancelName, new AbstractAction() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
doClose(RET_CANCEL);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the return status of this dialog - one of RET_OK or RET_CANCEL
|
||||||
|
*/
|
||||||
|
public int getReturnStatus() {
|
||||||
|
return returnStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from within the constructor to initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
|
* regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
jLabel1 = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
addWindowListener(new java.awt.event.WindowAdapter() {
|
||||||
|
public void windowClosing(java.awt.event.WindowEvent evt) {
|
||||||
|
closeDialog(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(TimelineProgressDialog.class, "TimelineProgressDialog.jLabel1.text")); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(51, 51, 51)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addContainerGap(121, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(37, 37, 37)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addContainerGap(64, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the dialog
|
||||||
|
*/
|
||||||
|
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
|
||||||
|
doClose(RET_CANCEL);
|
||||||
|
}//GEN-LAST:event_closeDialog
|
||||||
|
|
||||||
|
public void doClose(int retStatus) {
|
||||||
|
returnStatus = retStatus;
|
||||||
|
setVisible(false);
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JLabel jLabel1;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
private int returnStatus = RET_CANCEL;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user