diff --git a/src/org/hwo/fifo/FiFo.java b/src/org/hwo/fifo/FiFo.java new file mode 100644 index 0000000..eaa8eac --- /dev/null +++ b/src/org/hwo/fifo/FiFo.java @@ -0,0 +1,45 @@ +package org.hwo.fifo; + +import java.util.LinkedList; +import java.util.List; + +public class FiFo { + + private LinkedList elements; + + public FiFo() + { + elements = new LinkedList(); + } + + public void push(T element) + { + elements.add(element); + } + + public T pull() + { + return elements.poll(); + } + + public T peek() + { + return elements.peek(); + } + + public List getElements() + { + return elements; + } + + public boolean isEmpty() + { + return elements.isEmpty(); + } + + public boolean hasElements() + { + return !elements.isEmpty(); + } + +} diff --git a/src/org/hwo/tasklet/Tasklet.java b/src/org/hwo/tasklet/Tasklet.java new file mode 100644 index 0000000..a493e40 --- /dev/null +++ b/src/org/hwo/tasklet/Tasklet.java @@ -0,0 +1,7 @@ +package org.hwo.tasklet; + +public interface Tasklet { + + public void run(Object arg); + +} diff --git a/src/org/hwo/tasklet/TaskletThread.java b/src/org/hwo/tasklet/TaskletThread.java new file mode 100644 index 0000000..2861c63 --- /dev/null +++ b/src/org/hwo/tasklet/TaskletThread.java @@ -0,0 +1,70 @@ +package org.hwo.tasklet; + +import java.util.LinkedList; +import java.util.List; +import java.util.Stack; + +import org.hwo.fifo.FiFo; + +public class TaskletThread extends Thread { + + private class QueuedTasklet + { + private Tasklet tasklet; + private Object argument; + + public QueuedTasklet(Tasklet tasklet,Object argument) + { + this.tasklet = tasklet; + this.argument = argument; + } + } + + private FiFo queuedTasklets = new FiFo(); + + public TaskletThread() { + start(); + } + + public void queue(Tasklet tasklet,Object arg) + { + synchronized (queuedTasklets) { + queuedTasklets.push(new QueuedTasklet(tasklet,arg)); + } + queuedTasklets.notify(); + } + + @Override + public void run() { + while (true) + { + QueuedTasklet queuedTasklet = null; + + synchronized (queuedTasklets) { + try { + queuedTasklets.wait(100); + queuedTasklet = queuedTasklets.pull(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + if (queuedTasklet != null) + { + try + { + queuedTasklet.tasklet.run(queuedTasklet.argument); + } catch (Exception ex) + { + System.err.println("Tasklet throwed Exception: " + ex.toString()); + ex.printStackTrace(); + } + } + + if (isInterrupted()) + return; + } + } + + +} diff --git a/src/org/hwo/ui/shapes/Rectangle.java b/src/org/hwo/ui/shapes/Rectangle.java new file mode 100644 index 0000000..23fa86a --- /dev/null +++ b/src/org/hwo/ui/shapes/Rectangle.java @@ -0,0 +1,13 @@ +package org.hwo.ui.shapes; + +import java.awt.Polygon; + +public class Rectangle extends Polygon { + + public Rectangle(int left,int top,int width,int height) + { + super(new int[]{left,left + width - 1,left + width - 1,left},new int[]{ top,top,top + height - 1,top + height - 1 },4); + } + + +} diff --git a/src/org/hwo/ui/shapes/Triangle.java b/src/org/hwo/ui/shapes/Triangle.java index 407f6b2..af9bb15 100644 --- a/src/org/hwo/ui/shapes/Triangle.java +++ b/src/org/hwo/ui/shapes/Triangle.java @@ -9,5 +9,4 @@ public class Triangle extends Polygon { super(new int[]{x1,x2,x3},new int[]{y1,y2,y3},3); } - }