Skip to content

Commit 28169d2

Browse files
committed
Button Handler
1 parent 9f8241c commit 28169d2

File tree

5 files changed

+129
-2
lines changed

5 files changed

+129
-2
lines changed

META-INF/MANIFEST.MF

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
Manifest-Version: 1.0
2+
Main-Class: com.company.Main
23

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.company;
2+
3+
import javax.swing.*;
4+
import java.awt.*;
5+
import java.awt.event.FocusEvent;
6+
import java.awt.event.FocusListener;
7+
import java.awt.event.KeyEvent;
8+
import java.awt.event.KeyListener;
9+
import java.util.Queue;
10+
import java.util.concurrent.ArrayBlockingQueue;
11+
12+
/**
13+
* Created by senior on 20.06.15.
14+
*/
15+
public class KeyboardObserver extends Thread {
16+
private Queue<KeyEvent> keyEvents = new ArrayBlockingQueue<KeyEvent>(100);
17+
18+
private JFrame frame;
19+
20+
@Override
21+
public void run()
22+
{
23+
frame = new JFrame("KeyPress Tester");
24+
frame.setTitle("Transparent JFrame Demo");
25+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
26+
27+
frame.setUndecorated(true);
28+
frame.setSize(400, 400);
29+
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
30+
frame.setLayout(new GridBagLayout());
31+
32+
frame.setOpacity(0.0f);
33+
frame.setVisible(true);
34+
35+
frame.addFocusListener(new FocusListener()
36+
{
37+
@Override
38+
public void focusGained(FocusEvent e)
39+
{
40+
//do nothing
41+
}
42+
43+
@Override
44+
public void focusLost(FocusEvent e)
45+
{
46+
System.exit(0);
47+
}
48+
});
49+
50+
51+
frame.addKeyListener(new KeyListener()
52+
{
53+
54+
public void keyTyped(KeyEvent e)
55+
{
56+
//do nothing
57+
}
58+
59+
public void keyReleased(KeyEvent e)
60+
{
61+
//do nothing
62+
}
63+
64+
public void keyPressed(KeyEvent e)
65+
{
66+
keyEvents.add(e);
67+
}
68+
});
69+
}
70+
71+
72+
public boolean hasKeyEvents()
73+
{
74+
return !keyEvents.isEmpty();
75+
}
76+
77+
public KeyEvent getEventFromTop()
78+
{
79+
return keyEvents.poll();
80+
}
81+
}

src/com/company/Main.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.company;
22

33

4+
import java.awt.event.KeyEvent;
45
import java.io.BufferedReader;
56
import java.io.File;
67
import java.io.FileReader;
@@ -16,6 +17,8 @@ public class Main {
1617
public static void main(String[] args) throws IOException, InterruptedException {
1718
File fileR = new File(args[0]);
1819
File fileW = new File(args[1]);
20+
KeyboardObserver keyboardObserver = new KeyboardObserver();
21+
keyboardObserver.start();
1922

2023
BufferedReader reader = new BufferedReader(new FileReader(fileR));
2124

@@ -28,17 +31,40 @@ public static void main(String[] args) throws IOException, InterruptedException
2831
}
2932

3033
ThreadGroup threadGroup = new ThreadGroup("myGroup");
34+
3135
for (int i = 0; i < strings.size(); i++) {
3236
threads.add(new Thread(threadGroup,new MyThreads(strings.get(i), new FileVisitCounter(), fileW.getName()),String.valueOf(i+1)));
3337
}
3438

3539
for (Thread t : threads) {
40+
41+
// if (!MyThreads.isFlag()) break;
42+
//// t.start();
43+
// if (keyboardObserver.hasKeyEvents()) {
44+
// KeyEvent event = keyboardObserver.getEventFromTop();
45+
// if (event.getKeyCode() == KeyEvent.VK_ESCAPE) {
46+
// threadGroup.interrupt();
47+
// MyThreads.setFlag(false);
48+
// break;
49+
// }
50+
// }
3651
t.start();
52+
3753
}
3854

3955
while (threadGroup.activeCount() > 0) {
40-
Thread.sleep(1);
56+
if (keyboardObserver.hasKeyEvents()) {
57+
KeyEvent event = keyboardObserver.getEventFromTop();
58+
if (event.getKeyCode() == KeyEvent.VK_ESCAPE) {
59+
threadGroup.interrupt();
60+
break;
61+
}
62+
}
4163
}
64+
65+
// while (threadGroup.activeCount() > 0) {
66+
// Thread.sleep(1);
67+
// }
4268
new MyCSVWriter(fileW.getName()).writerToCSV();
4369

4470

src/com/company/MyThreads.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,20 @@
1010
*/
1111
public class MyThreads implements Runnable {
1212

13+
private static boolean flag = true;
1314
private String path;
1415
private FileVisitCounter fileVisitor;
1516
private String fileForWrite;
1617
private long count;
1718

19+
public static boolean isFlag() {
20+
return flag;
21+
}
22+
23+
public static void setFlag(boolean flag) {
24+
MyThreads.flag = flag;
25+
}
26+
1827
public String getPath() {
1928
return path;
2029
}
@@ -37,7 +46,14 @@ public void run() {
3746
try {
3847
Files.walkFileTree(p, fileVisitor);
3948
count = fileVisitor.getCount();
40-
System.out.println(Thread.currentThread().getName() + "\t" + this.getCount() + "\t" + this.getPath());
49+
50+
if (!Thread.currentThread().isInterrupted()) {
51+
System.out.println(Thread.currentThread().getName() + "\t" + this.getCount() + "\t" + this.getPath());
52+
}
53+
else {
54+
flag = false;
55+
System.out.println("Подсчет прерванн!");
56+
}
4157
new MyCSVWriter(fileForWrite).putResults(path,count);
4258

4359
} catch (IOException e) {

src/com/company/test.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@
33
/home/senior/Видео
44
/home/senior/Загрузки
55
/lib
6+
/media/senior/yyy/Windows
7+
/media/senior/yyy/Program Files
8+
/media/senior/yyy/Users

0 commit comments

Comments
 (0)