diff options
| author | Benjamin Culkin <scorpress@gmail.com> | 2025-12-07 17:48:20 -0500 |
|---|---|---|
| committer | Benjamin Culkin <scorpress@gmail.com> | 2025-12-07 17:48:20 -0500 |
| commit | 09cd8befff4c8b9110ae5ad629cecb39fc2624cc (patch) | |
| tree | 0f6d93e0d2c6d711b58faeec1053abc6976b4eb0 /base/src/examples | |
| parent | 98d563b55a5f756573d23a4fd82978d17742332c (diff) | |
Add BatchTaskProgressPanel
Adds BatchTaskProgressPanel, a augmented/specialized version of
MultiTaskProgressPanel that uses CollapsiblePanel to allow tracking of
batches of related tasks using SwingWorkers
Diffstat (limited to 'base/src/examples')
| -rw-r--r-- | base/src/examples/java/bjc/utils/examples/gui/panels/BatchTaskProgressPanelDemo.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/base/src/examples/java/bjc/utils/examples/gui/panels/BatchTaskProgressPanelDemo.java b/base/src/examples/java/bjc/utils/examples/gui/panels/BatchTaskProgressPanelDemo.java new file mode 100644 index 0000000..9d2312c --- /dev/null +++ b/base/src/examples/java/bjc/utils/examples/gui/panels/BatchTaskProgressPanelDemo.java @@ -0,0 +1,62 @@ +package bjc.utils.examples.gui.panels; + +import java.awt.BorderLayout; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; + +import bjc.utils.gui.panels.BatchTaskProgressPanel; +import bjc.utils.gui.panels.BatchTaskProgressPanel.BatchHandle; + +/** + * Demo for {@link BatchTaskProgressPanel} + */ +public class BatchTaskProgressPanelDemo { + /** + * Main method + * @param args Unused CLI args + */ + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + JFrame frame = new JFrame("BatchTaskProgressPanel Demo"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(new BorderLayout()); + + BatchTaskProgressPanel panel = new BatchTaskProgressPanel(); + frame.add(panel, BorderLayout.CENTER); + + JButton addBatch = new JButton("Start fake batch"); + addBatch.addActionListener(e -> { + // Simulate a batch with 3 SwingWorkers + BatchHandle batch = panel.startBatch("Save batch at " + System.currentTimeMillis()); + + for (int i = 1; i <= 3; i++) { + final int idx = i; + SwingWorker<Void, Void> worker = new SwingWorker<>() { + @Override + protected Void doInBackground() { + for (int p = 0; p <= 100; p++) { + if (isCancelled()) break; + setProgress(p); + try { + Thread.sleep(30 + idx * 10L); + } catch (InterruptedException ignored) { + } + } + return null; + } + }; + batch.monitorSwingWorker(worker, "Collection " + idx, true); + worker.execute(); + } + }); + + frame.add(addBatch, BorderLayout.SOUTH); + frame.setSize(600, 400); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + } +} |
