From 01d514b82d0f8a9fd9df9f404826351f4a1e242e Mon Sep 17 00:00:00 2001 From: servertood Date: Mon, 20 Oct 2008 01:52:56 +0000 Subject: [PATCH] add generic progress indicator to status bar --- extra/jheidi/progressWaiter.ajl | 95 +++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 extra/jheidi/progressWaiter.ajl diff --git a/extra/jheidi/progressWaiter.ajl b/extra/jheidi/progressWaiter.ajl new file mode 100644 index 00000000..b4bc64b1 --- /dev/null +++ b/extra/jheidi/progressWaiter.ajl @@ -0,0 +1,95 @@ + import java.awt.BorderLayout; + import javax.swing.*; + import javax.swing.border.*; + + log.debug("task is long running!"); + + WindowContext context = argObj("windowContext"); + Worker worker = argObj("worker"); + + String message = arg("waitOperation"); + + Panel statusBar = context.get("/statusBar"); + JLabel text = statusBar.getProperty("text"); + ProgressBar pbar = statusBar.getProperty("pbar"); + Stack messages = statusBar.getProperty("messages"); + + + synchronized (this.getClass()) + { + if ( text == null ) + { + text = (JLabel)statusBar.getComponent(0); + statusBar.setProperty("text", text); + } + + if ( messages == null ) + { + messages = new Stack(); + statusBar.setProperty("messages", messages); + } + + if ( pbar == null ) + { + pbar = new ProgressBar(); + pbar.setIndeterminate(true); + pbar.setPreferredSize(new java.awt.Dimension(75, 10)); + pbar.setBorder(new BevelBorder(BevelBorder.LOWERED)); + statusBar.setProperty("pbar", pbar); + } + + messages.push(message); + + text.setText("Waiting for " + (String)messages.pop()); + + try + { + statusBar.getComponent(1); + } + catch (Exception e) + { + statusBar.add(pbar, BorderLayout.EAST); + } + statusBar.updateUI(); + } + + while (!worker.isDone()) {}; + + synchronized(this.getClass()) + { + if ( messages.size() > 0) + { + text.setText("Waiting for " + (String) messages.pop()); + } + else + { + text.setText("Ready"); + statusBar.remove(1); + statusBar.updateUI(); + } + } + + + + + + + + + + + + + + + + + + + + + + + + +