1 32 33 package com.jeantessier.dependencyfinder.gui; 34 35 import java.awt.event.*; 36 import java.util.*; 37 38 import javax.swing.*; 39 40 import org.apache.oro.text.perl.*; 41 42 public class ClosureQueryAction extends AbstractAction implements Runnable { 43 private DependencyFinder model = null; 44 45 public ClosureQueryAction(DependencyFinder model) { 46 this.model = model; 47 48 putValue(Action.LONG_DESCRIPTION, "Compute transitive closure"); 49 putValue(Action.NAME, "Closure"); 50 putValue(Action.SMALL_ICON, new ImageIcon(getClass().getResource("icons/closure-query.gif"))); 51 } 52 53 public void actionPerformed(ActionEvent e) { 54 new Thread (this).start(); 55 } 56 57 public void run() { 58 try { 59 model.getStatusLine().showInfo("Processing closure query ..."); 60 61 Date start = new Date(); 62 63 model.clearClosureResult(); 64 model.doClosureQuery(); 65 66 Date stop = new Date(); 67 68 model.getStatusLine().showInfo("Closure query done (" + ((stop.getTime() - start.getTime()) / (double) 1000) + " secs)."); 69 } catch (MalformedPerl5PatternException ex) { 70 JOptionPane dialog = new JOptionPane(); 71 dialog.showMessageDialog(model, ex.getMessage(), "Malformed pattern", JOptionPane.ERROR_MESSAGE); 72 model.getStatusLine().showInfo("Ready."); 73 } catch (Exception ex) { 74 JOptionPane dialog = new JOptionPane(); 75 dialog.showMessageDialog(model, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); 76 model.getStatusLine().showInfo("Ready."); 77 } 78 } 79 } 80 | Popular Tags |