Add cancel button to queue monitor

This commit is contained in:
2020-02-03 11:24:22 +00:00
parent 4d435b4fc1
commit df4eae1d66
3 changed files with 45 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -42,4 +42,5 @@ public class Icons {
static public final ImageIcon tooltip = new ImageIcon(Icons.class.getResource("icons/tooltip.png"));
static public final ImageIcon queued = new ImageIcon(Icons.class.getResource("icons/queued.png"));
static public final ImageIcon processing = new ImageIcon(Icons.class.getResource("icons/processing.png"));
static public final ImageIcon close = new ImageIcon(Icons.class.getResource("icons/close.png"));
}

View File

@@ -7,15 +7,18 @@ import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class QueueMonitor extends JPanel {
public class QueueMonitor extends JPanel implements MouseListener {
ArrayList<WorkerThread> threadList = new ArrayList<WorkerThread>();
Queue queue;
Queue<Runnable> queue;
public QueueMonitor(Queue q) {
public QueueMonitor(Queue<Runnable> q) {
super();
queue = q;
addMouseListener(this);
}
public void addThread(WorkerThread t) {
@@ -23,15 +26,22 @@ public class QueueMonitor extends JPanel {
}
public void purgeQueue() {
Runnable work;
synchronized (queue) {
queue.clear();
while (queue.size() > 0) {
work = queue.remove();
if (work instanceof SentenceJob) {
SentenceJob sj = (SentenceJob)work;
sj.setDequeued();
}
}
repaint();
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(100 + (24 * threadList.size()), 24);
return new Dimension(150 + (24 * threadList.size()), 24);
}
@Override
@@ -65,6 +75,35 @@ public class QueueMonitor extends JPanel {
g.setColor(getForeground());
g.drawString("Queued: " + queue.size(), threadList.size() * 24 + 4, 16);
if (queue.size() > 0) {
Icons.close.paintIcon(this, g, size.width - 23, 1);
}
}
@Override
public void mouseEntered(MouseEvent evt) {
}
@Override
public void mouseExited(MouseEvent evt) {
}
@Override
public void mousePressed(MouseEvent evt) {
}
@Override
public void mouseReleased(MouseEvent evt) {
}
@Override
public void mouseClicked(MouseEvent evt) {
if (queue.size() == 0) return; // No button - ignore it
Dimension size = getPreferredSize();
if (evt.getX() > (size.width - 24)) {
purgeQueue();
}
}
}