diff options
| author | Benjamin Culkin <scorpress@gmail.com> | 2025-12-07 17:31:40 -0500 |
|---|---|---|
| committer | Benjamin Culkin <scorpress@gmail.com> | 2025-12-07 17:31:40 -0500 |
| commit | 8608cb13602d8df3cd3d2f96b1cc3a14d488fe7d (patch) | |
| tree | ca0cccf81040f1fee22236fda38cfb9a05d5899f /base/src/examples | |
| parent | 15b66b44c3beaf64d58e39870b62eee5a48ba2b3 (diff) | |
Add MultiTaskProgressPanel
Adds MultiTaskProgressPanel. This is a Swing component usable for
monitoring background tasks similar to the way ProgressMonitor works,
but instead of opening a dialog for each tasks, it displays them like a
browser download manager
Diffstat (limited to 'base/src/examples')
| -rw-r--r-- | base/src/examples/java/bjc/utils/examples/gui/panels/MultiTaskProgressPanelDemo.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/base/src/examples/java/bjc/utils/examples/gui/panels/MultiTaskProgressPanelDemo.java b/base/src/examples/java/bjc/utils/examples/gui/panels/MultiTaskProgressPanelDemo.java new file mode 100644 index 0000000..f417903 --- /dev/null +++ b/base/src/examples/java/bjc/utils/examples/gui/panels/MultiTaskProgressPanelDemo.java @@ -0,0 +1,55 @@ +package bjc.utils.examples.gui.panels; + +import java.awt.BorderLayout; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; + +import bjc.utils.gui.panels.MultiTaskProgressPanel; +import bjc.utils.gui.panels.MultiTaskProgressPanel.TaskHandle; + +/** + * Demo for {@link MultiTaskProgressPanel} + */ +public class MultiTaskProgressPanelDemo { + /** + * Main method + * @param args Unused CLI args + */ + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + JFrame frame = new JFrame("MultiTaskProgressPanel demo"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + MultiTaskProgressPanel panel = new MultiTaskProgressPanel(); + frame.add(panel, BorderLayout.CENTER); + + JButton addTask = new JButton("Start fake task"); + addTask.addActionListener(e -> { + TaskHandle handle = panel.startTask("Saving large collection", + 0, 100, null); + + // Simulate background work + new Thread(() -> { + for (int i = 0; i <= 100; i++) { + if (handle.isCancelled()) break; + handle.setProgress(i); + handle.setNote("Step " + i + " of 100"); + try { + Thread.sleep(50); + } catch (InterruptedException ignored) { + } + } + handle.done(); + }, "FakeWorker").start(); + }); + + frame.add(addTask, BorderLayout.SOUTH); + + frame.setSize(500, 400); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + } +} |
