summaryrefslogtreecommitdiff
path: root/base/src/examples
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2025-12-07 17:48:20 -0500
committerBenjamin Culkin <scorpress@gmail.com>2025-12-07 17:48:20 -0500
commit09cd8befff4c8b9110ae5ad629cecb39fc2624cc (patch)
tree0f6d93e0d2c6d711b58faeec1053abc6976b4eb0 /base/src/examples
parent98d563b55a5f756573d23a4fd82978d17742332c (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.java62
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);
+ });
+ }
+}