19 package org.sleuthkit.autopsy.casemodule;
 
   21 import java.beans.PropertyChangeEvent;
 
   22 import java.beans.PropertyChangeListener;
 
   23 import java.util.HashSet;
 
   24 import java.util.Iterator;
 
   26 import java.util.logging.Level;
 
   27 import org.openide.util.NbBundle;
 
   29 import javax.swing.event.ChangeEvent;
 
   30 import javax.swing.event.ChangeListener;
 
   31 import org.openide.WizardDescriptor;
 
   32 import org.openide.util.HelpCtx;
 
   33 import org.openide.util.Lookup;
 
   34 import org.openide.windows.WindowManager;
 
   35 import java.awt.Cursor;
 
   41 class AddImageWizardChooseDataSourcePanel 
implements WizardDescriptor.Panel<WizardDescriptor>, PropertyChangeListener {
 
   47     private AddImageWizardAddingProgressPanel progressPanel;
 
   48     private AddImageWizardChooseDataSourceVisual component;
 
   49     private boolean isNextEnable = 
false;
 
   50     private static final String PROP_LASTDATASOURCE_PATH = 
"LBL_LastDataSource_PATH"; 
 
   51     private static final String PROP_LASTDATASOURCE_TYPE = 
"LBL_LastDataSource_TYPE"; 
 
   53     private String NSRLPath, knownBadPath;
 
   55     AddImageWizardChooseDataSourcePanel(AddImageWizardAddingProgressPanel proPanel) {
 
   57         this.progressPanel = proPanel;
 
   70     public AddImageWizardChooseDataSourceVisual getComponent() {
 
   71         if (component == null) {
 
   72             WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 
   73             component = 
new AddImageWizardChooseDataSourceVisual(
this);
 
   75         component.addPropertyChangeListener(
this);
 
   86     public HelpCtx getHelp() {
 
   88         return HelpCtx.DEFAULT_HELP;
 
  101     public boolean isValid() {
 
  108     void moveFocusToNext() {
 
  111             Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton(
 
  112                     NbBundle.getMessage(
this.getClass(), 
"AddImageWizardChooseDataSourcePanel.moveFocusNext"));
 
  121     public void enableNextButton(
boolean isEnabled) {
 
  122         isNextEnable = isEnabled;
 
  125     private final Set<ChangeListener> listeners = 
new HashSet<ChangeListener>(1); 
 
  133     public final void addChangeListener(ChangeListener l) {
 
  134         synchronized (listeners) {
 
  145     public final void removeChangeListener(ChangeListener l) {
 
  146         synchronized (listeners) {
 
  155     protected final void fireChangeEvent() {
 
  156         Iterator<ChangeListener> it;
 
  157         synchronized (listeners) {
 
  158             it = 
new HashSet<ChangeListener>(listeners).iterator();
 
  160         ChangeEvent ev = 
new ChangeEvent(
this);
 
  161         while (it.hasNext()) {
 
  162             it.next().stateChanged(ev);
 
  179     public void readSettings(WizardDescriptor settings) {
 
  187             this.NSRLPath = null;
 
  188             this.knownBadPath = null;
 
  194             AddImageAction.CleanupTask cleanupTask = (AddImageAction.CleanupTask) settings.getProperty(AddImageAction.IMAGECLEANUPTASK_PROP);
 
  195             if (cleanupTask != null) {
 
  197                     cleanupTask.cleanup();
 
  198                 } 
catch (Exception ex) {
 
  199                     Logger logger = Logger.getLogger(AddImageWizardChooseDataSourcePanel.class.getName());
 
  200                     logger.log(Level.WARNING, 
"Error cleaning up image task", ex); 
 
  202                     cleanupTask.disable();
 
  205         } 
catch (Exception e) {
 
  220     public void storeSettings(WizardDescriptor settings) {
 
  232     public void propertyChange(PropertyChangeEvent evt) {