OSDN Git Service

AbstractCommandを削除
[coroid/inqubus.git] / frontend / src / saccubus / ConvertStopFlag.java
1 package saccubus;
2
3 /**
4  * <p>
5  * タイトル: さきゅばす
6  * </p>
7  *
8  * <p>
9  * 説明: ニコニコ動画の動画をコメントつきで保存
10  * </p>
11  *
12  * <p>
13  * 著作権: Copyright (c) 2007 PSI
14  * </p>
15  *
16  * <p>
17  * 会社名:
18  * </p>
19  *
20  * @author 未入力
21  * @version 1.0
22  */
23 // TODO 不要になる予定
24 public class ConvertStopFlag {
25
26     public interface StateChangeListener {
27
28         void changeState(State s);
29         /**
30          * StateChangeListenerの何もしないバージョンの実装.
31          */
32         static final ConvertStopFlag.StateChangeListener EMPTY_LISTENER = new ConvertStopFlag.StateChangeListener() {
33
34             public void changeState(State s) {
35             }
36         };
37     }
38
39     public enum State {
40
41         STOPPING, FINISHED;
42     }
43     private volatile boolean needStop = false;
44     private volatile boolean finished = false;
45     private final StateChangeListener listener;
46
47     public ConvertStopFlag(StateChangeListener listener) {
48         this.listener = listener;
49     }
50
51     public void requestStop() {
52         needStop = true;
53         listener.changeState(State.STOPPING);
54     }
55
56     public boolean needStop() {
57         return needStop;
58     }
59
60     public boolean isFinished() {
61         return finished;
62     }
63
64     public void finished() {
65         finished = true;
66         listener.changeState(State.FINISHED);
67     }
68 }