• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

OmegaT の背景に画像を表示します。


Commit MetaInfo

Revision64 (tree)
Time2014-05-27 18:35:24
Authoryu-tang

Log Message

必要であれば Effect をスケジューリングできるように拡張

Change Summary

Incremental Difference

--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/ThemeChanger.java (revision 63)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/ThemeChanger.java (revision 64)
@@ -19,6 +19,8 @@
1919 import groovy.util.ConfigObject;
2020 import java.util.List;
2121 import java.util.Map;
22+import java.util.concurrent.Executors;
23+import java.util.concurrent.ScheduledThreadPoolExecutor;
2224 import jp.sourceforge.users.yutang.omegat.plugin.moenizer.effect.Effect;
2325 import org.omegat.util.Log;
2426
@@ -28,11 +30,14 @@
2830 */
2931 public class ThemeChanger {
3032
31- private MoeUI model = null;
33+ private final int THREAD_NUM = 2;
34+ private final MoeUI model;
3235 private ConfigObject theme = null;
36+ private final ScheduledThreadPoolExecutor service;
3337
3438 public ThemeChanger(MoeUI ui) {
3539 this.model = ui;
40+ this.service = new ScheduledThreadPoolExecutor(THREAD_NUM);
3641 }
3742
3843 public void setTheme(ConfigObject theme) {
@@ -44,6 +49,9 @@
4449 }
4550
4651 public void apply() {
52+ // shutdown old tasks
53+ this.service.shutdown();
54+
4755 // no theme, no effects
4856 if (theme == null || !theme.containsKey("effects")) { //@@TODO literal to const
4957 return;
@@ -61,7 +69,7 @@
6169 Effect.Type type = conf.containsKey("type") ?
6270 (Effect.Type) conf.get("type") : Effect.Type.Basic;
6371 Effect effect = Effect.create(type, conf);
64- effect.invoke(model);
72+ effect.invoke(this.model, this.service);
6573 } catch (Exception ex) {
6674 ex.printStackTrace();
6775 Log.log("Error on ThemeChanger#apply(): " + ex.getMessage());
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/effect/Effect.java (revision 63)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/effect/Effect.java (revision 64)
@@ -17,6 +17,7 @@
1717
1818 import java.lang.reflect.Constructor;
1919 import java.util.Map;
20+import java.util.concurrent.ScheduledThreadPoolExecutor;
2021 import jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeUI;
2122
2223 /**
@@ -44,5 +45,12 @@
4445 return config.containsKey(key) ? (T) config.get(key) : valueDefault;
4546 }
4647
47- public abstract void invoke(MoeUI ui);
48+ /**
49+ * Effect を適用します。
50+ * @param ui 操作対象となる UI モデルです。
51+ * @param service 繰り返しの処理が必要となる場合は、この service を使って
52+ * タスクを登録します。テーマが変更になった場合は、service
53+ * 側でタスクを終了します。
54+ */
55+ public abstract void invoke(MoeUI ui, ScheduledThreadPoolExecutor service);
4856 }
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/effect/BasicEffect.java (revision 63)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/effect/BasicEffect.java (revision 64)
@@ -25,6 +25,7 @@
2525 import java.util.EnumSet;
2626 import java.util.List;
2727 import java.util.Map;
28+import java.util.concurrent.ScheduledThreadPoolExecutor;
2829 import javax.imageio.ImageIO;
2930 import jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeUI;
3031 import jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeUI.Parts;
@@ -64,7 +65,7 @@
6465 }
6566
6667 @Override
67- public void invoke(MoeUI ui) {
68+ public void invoke(MoeUI ui, ScheduledThreadPoolExecutor service) {
6869 EnumSet<Parts> excludeParts = EnumSet.noneOf(Parts.class);
6970 for (Parts part: EnumSet.allOf(Parts.class)) {
7071 if (exclude.contains(part)) {