From df4eae1d66be5ad326957ceef2c6d0a26f36083e Mon Sep 17 00:00:00 2001 From: Matt Jenkins Date: Mon, 3 Feb 2020 11:24:22 +0000 Subject: [PATCH] Add cancel button to queue monitor --- .../majenko/audiobookrecorder/icons/close.png | Bin 0 -> 1175 bytes .../co/majenko/audiobookrecorder/Icons.java | 1 + .../audiobookrecorder/QueueMonitor.java | 49 ++++++++++++++++-- 3 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 resources/uk/co/majenko/audiobookrecorder/icons/close.png diff --git a/resources/uk/co/majenko/audiobookrecorder/icons/close.png b/resources/uk/co/majenko/audiobookrecorder/icons/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a95a7d75db97d71fb58a19ee5e3fa310b5f691 GIT binary patch literal 1175 zcmV;I1Zew-P)0dl<9l*OEd_55I z8U+Wy9})08&p1af_$Cy_n)Kul&`5W8jrQ`=Fp$ZwhC^y^DA5c&c#<^*zdq34gx4p8 zgeap-8SNM{L`NbcbtF1k`zBA;$|g-T`=gIE2owqnyTQkglLm)E%1}`JPd{nTuwgnp zWr~j6!(rp#q)A#@p@PPGcqjsn_k>@0&~kyNmChdyO8oX)?GEdsy?sNquV1M4_Y2d$ z2qWAG3)5a>PiUwNtt?+&;~fr@bF?eG&pmT=gW7{Y^Mix6rAd8lYEw`9r;XL7P7SrQ zYh&&1(p0-TG}VsQO|-s2J?$DXLTl}mY;N3G>EC^)(XP{y^gFoUvX+FPa5y*#wD|X* zwY+*E?VLScayoTl?NTjmSXkTIl+=z^rR{$OwQ=|WId9(7sf`7A&aQc1i|< z(*pC{s_hJAhk)kUA+0I+yOK-(qQk3~=>I#kJWYv}e^Gj+AGKmYXOrHLY*)^nQFPJ5 zTJrZ_N__r#jd4}a0o=gS`@r~dpjZ#I>aRepDf6!86#hv2S7zLj?_QXo)UcMfq?gW| z*36PQmGr~ATKLw>O0=kHpaF3DU+@L+>JKX>gOUQ!>OaxOLJqAf@1+U3pV!W%>AH6p z&z#b@Vt**%cP}mb#!U-fM=4&&QZ)>mZQ&Cz`%u_91C$zq*8GDu6-7I0pmlXn_n(7w zaO>tb6Y@BwB}#5>g_g0Y$#TyCT zOnM{pLY+UQ!<%niP;F0()SP_2T3Z~g$!f(fxx`c8T3L7d&P};jF<_G)U zxu%?%(yJy-ZvTs->jdi9rnFn~JsFXT&g-LPCXV+<^FWheJ((BJtup*R7p~6-Mf#!X zpLprSh84G@8LfZS+Gf~;f)+Lj(#g#(`Hd?Vm0J5pC4PYxI9%f4&;{@ybHU>wDhf2$ zfo4C4=KuPVjx9^o!g{}GQ7N>cF51!*Z8DbD57Mc%v0B|Fr;`7*_xP9?15Or(4*&<5 z^C%3z#lk6*Yo^06`Mgh1{I4iICt6elEh~doRJ89E?Dvu=`EQE|bd@H6a}YEJyt!xo zt)X%XT#f-!unun`2#dXofct8l?;GQ{*;1*CN z4Nj!sDw*a$6Fm$c!yirZHi?^+g5r&ZaAP724u)3%Hy${bJn%pG%ZleMf-C7*p%ICz zF4{;o7K1Yh*0hFl!1E83K0xkey!I#j7YaQlK-6?tF#}dlf#hK@v<4J6)7ya00}lVO pAK+;O;yTQ?GI`YqHoPBI`9I>!06{fVJkS6D002ovPDHLkV1lQ#KI;Gg literal 0 HcmV?d00001 diff --git a/src/uk/co/majenko/audiobookrecorder/Icons.java b/src/uk/co/majenko/audiobookrecorder/Icons.java index c258770..01b0e79 100644 --- a/src/uk/co/majenko/audiobookrecorder/Icons.java +++ b/src/uk/co/majenko/audiobookrecorder/Icons.java @@ -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")); } diff --git a/src/uk/co/majenko/audiobookrecorder/QueueMonitor.java b/src/uk/co/majenko/audiobookrecorder/QueueMonitor.java index ebad589..4fb0db5 100644 --- a/src/uk/co/majenko/audiobookrecorder/QueueMonitor.java +++ b/src/uk/co/majenko/audiobookrecorder/QueueMonitor.java @@ -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 threadList = new ArrayList(); - Queue queue; + Queue queue; - public QueueMonitor(Queue q) { + public QueueMonitor(Queue 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(); + } } }