1 19 20 package org.netbeans.modules.javacore; 21 22 import java.awt.Dialog ; 23 import javax.swing.JDialog ; 24 import javax.swing.SwingUtilities ; 25 import javax.swing.WindowConstants ; 26 import org.netbeans.modules.javacore.internalapi.ProgressEvent; 27 import org.netbeans.modules.javacore.internalapi.ProgressListener; 28 import org.netbeans.modules.javacore.internalapi.UndoManager; 29 import org.openide.DialogDescriptor; 30 import org.openide.DialogDisplayer; 31 import org.openide.util.NbBundle; 32 33 37 public class UndoProgressListener implements ProgressListener { 38 39 UndoProgressPanel progressPanel = null; 40 Dialog dialog = null; 41 42 private String getString(String key) { 43 return NbBundle.getMessage(UndoProgressListener.class, key); 44 } 45 46 private void createProgressPanel() { 47 progressPanel = new UndoProgressPanel(); 48 DialogDescriptor desc = new DialogDescriptor(progressPanel, "", true, new Object []{}, null, 0, null, null); 49 50 desc.setClosingOptions(new Object []{}); 51 52 dialog = DialogDisplayer.getDefault().createDialog(desc); 53 ((JDialog ) dialog).setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 54 55 dialog.validate(); 56 } 57 58 public void start(final ProgressEvent event) { 59 final boolean isUndo = event.getOperationType() == 0; 60 final String description = isUndo?((UndoManager) event.getSource()).getUndoDescription(): ((UndoManager) event.getSource()).getRedoDescription(); 61 SwingUtilities.invokeLater(new Runnable () { 62 public void run() { 63 createProgressPanel(); 64 dialog.setTitle(getString(isUndo?"LBL_UndoOf": "LBL_RedoOf") + ' ' + description); 65 progressPanel.progress.start(event.getCount()); 66 dialog.setVisible(true); 67 } 68 }); 69 } 70 71 public void step(final ProgressEvent event) { 72 SwingUtilities.invokeLater(new Runnable () { 73 public void run() { 74 progressPanel.progress.progress(event.getCount()); 75 } 76 }); 77 } 78 79 public void stop(ProgressEvent event) { 80 SwingUtilities.invokeLater(new Runnable () { 81 public void run() { 82 progressPanel.progress.finish(); 83 progressPanel = null; 84 dialog.dispose(); 85 dialog = null; 86 } 87 }); 88 } 89 } 90 | Popular Tags |