• 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

Revision25 (tree)
Time2014-05-13 21:28:50
Authoryu-tang

Log Message

新しい MoeConfig が機能するよう各クラスを調整

Change Summary

Incremental Difference

--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeConfig.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeConfig.java (revision 25)
@@ -14,7 +14,7 @@
1414 along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 **************************************************************************/
1616
17-package jp.sourceforge.users.yutang.omegat.plugin.moenizer.config;
17+package jp.sourceforge.users.yutang.omegat.plugin.moenizer;
1818
1919 import groovy.util.ConfigObject;
2020 import groovy.util.ConfigSlurper;
@@ -32,9 +32,6 @@
3232 import java.util.Map;
3333 import java.util.Set;
3434 import java.util.TreeSet;
35-import java.util.logging.Level;
36-import java.util.logging.Logger;
37-import jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeUtil;
3835 import org.omegat.util.Log;
3936
4037 /**
@@ -42,7 +39,7 @@
4239 *
4340 * @author Yu-Tang
4441 */
45-public class ConfigSet {
42+public class MoeConfig {
4643
4744 public enum ProviderType {
4845 Color, SimpleImage
@@ -65,7 +62,7 @@
6562 });
6663 ;
6764
68- public ConfigSet(File file) throws IOException {
65+ public MoeConfig(File file) throws IOException {
6966 this.file = file;
7067 if (file.isFile()) {
7168 config = new ConfigSlurper().parse(file.toURI().toURL());
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/Moenizer.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/Moenizer.java (revision 25)
@@ -20,13 +20,12 @@
2020 import java.util.concurrent.TimeUnit;
2121 import javax.swing.SwingUtilities;
2222 import javax.swing.SwingWorker;
23-
23+import jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader.IImageLoader;
24+import jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader.ImageLoader;
25+import org.omegat.core.Core;
2426 import org.omegat.core.CoreEvents;
2527 import org.omegat.core.events.IApplicationEventListener;
2628 import org.omegat.core.events.IProjectEventListener;
27-import jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader.IImageLoader;
28-import jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader.ImageLoader;
29-import org.omegat.core.Core;
3029 import org.omegat.util.Log;
3130
3231 /**
@@ -40,7 +39,8 @@
4039
4140 private IImageLoader imageLoader;
4241 private MoeUI ui;
43-
42+ private MoeConfig config;
43+
4444 public static void loadPlugins() {
4545 try {
4646 // Not initialize in console mode
@@ -67,13 +67,14 @@
6767 CoreEvents.registerProjectChangeListener(this);
6868
6969 ui = null;
70- imageLoader = ImageLoader.getInstance();
70+ config = new MoeConfig(MoeUtil.getMoeConfigFile());
71+ imageLoader = ImageLoader.getInstance(config.getCurrentConfig());
7172 // この時点ではまだウィンドウがインスタンス化されていないので、
7273 // ウィンドウに対する処理は少し待つ。
7374
7475 (new SlideShow()).execute();
7576
76- ui = MoeUI.getMoeUI();
77+ ui = MoeUI.getInstance();
7778
7879 // この時点でコンポーネントの透過設定をしても反映されない(タイミング?)。
7980 // Workaround として、invokeLater でキューに突っ込んで、後で処理する。
@@ -87,6 +88,7 @@
8788 //CoreEvents.unregisterApplicationEventListener(this); // ここで発行すると、スレッドエラーになるので注意
8889 } catch(Exception e) {
8990 Log.log("Error raised at " + this.getClass().getCanonicalName() + ".onApplicationStartup()\n" + e);
91+ e.printStackTrace();
9092 }
9193 }
9294
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/imageloader/ImageLoader.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/imageloader/ImageLoader.java (revision 25)
@@ -16,9 +16,9 @@
1616
1717 package jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader;
1818
19+import groovy.util.ConfigObject;
1920 import java.lang.reflect.Method;
20-import java.net.URL;
21-import static jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeConfig.*;
21+import java.net.MalformedURLException;
2222 import org.omegat.util.Log;
2323
2424 /**
@@ -27,15 +27,15 @@
2727 */
2828 public class ImageLoader {
2929
30- public static IImageLoader getInstance() {
31- Object[] sources = getSources();
30+ public static IImageLoader getInstance(ConfigObject config) throws MalformedURLException {
31+ /*Object[] sources = getSources();
3232
3333 if (sources.length == 0) {
3434 return null; // no source, no need loader
35- }
35+ }*/
3636
3737 // default
38- return new DefaultImageLoader();
38+ return new DefaultImageLoader(config);
3939 }
4040
4141 private static Object getAcceptableSource(Class<?> c, Object[] sources) {
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/imageloader/DefaultImageLoader.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/imageloader/DefaultImageLoader.java (revision 25)
@@ -16,12 +16,13 @@
1616
1717 package jp.sourceforge.users.yutang.omegat.plugin.moenizer.imageloader;
1818
19+import groovy.util.ConfigObject;
1920 import java.awt.image.BufferedImage;
2021 import java.io.File;
22+import java.net.MalformedURLException;
2123 import java.net.URL;
2224 import java.util.regex.Pattern;
2325 import javax.imageio.ImageIO;
24-import static jp.sourceforge.users.yutang.omegat.plugin.moenizer.MoeConfig.*;
2526 import org.omegat.util.Log;
2627
2728 /**
@@ -39,7 +40,13 @@
3940 public class DefaultImageLoader implements IImageLoader {
4041
4142 private static final Pattern RE_HAS_IMAGE_EXTENSION = Pattern.compile(".+\\.(?:bmp|png|jpg|jpeg|gif)");
42- private long interval;
43+ private final String CONF_KEY_INTERVAL = "interval";
44+ private final String CONF_KEY_ENABLED = "enabled";
45+ private final String CONF_KEY_IMAGE = "image";
46+
47+ private final int DEFAULT_INTERVAL = 0;
48+
49+ private final long interval;
4350 private Object[] sources;
4451 private Object currentSource;
4552 private int sourceIndex;
@@ -46,9 +53,9 @@
4653
4754 protected BufferedImage image;
4855
49- public DefaultImageLoader() {
50- interval = getInterval();
51- sources = getSources();
56+ public DefaultImageLoader(ConfigObject config) throws MalformedURLException {
57+ interval = getInterval(config);
58+ sources = getSources(config);
5259 currentSource = null;
5360 image = null;
5461 sourceIndex = -1;
@@ -93,6 +100,7 @@
93100 */
94101 @Override
95102 public BufferedImage getNextImage() {
103+ Log.log("DefaultImageLoader.getNextImage() called.");
96104 return image;
97105 }
98106
@@ -159,4 +167,32 @@
159167 }
160168 }
161169
170+ private long getInterval(ConfigObject config) {
171+ if (config.containsKey(CONF_KEY_INTERVAL)) {
172+ return (Integer) config.get(CONF_KEY_INTERVAL);
173+ } else {
174+ return DEFAULT_INTERVAL;
175+ }
176+ }
177+
178+ private Object[] getSources(ConfigObject config) throws MalformedURLException {
179+ boolean enabled = false;
180+ if (config.containsKey(CONF_KEY_ENABLED)) {
181+ enabled = (Boolean) config.get(CONF_KEY_ENABLED);
182+ }
183+
184+ if (enabled) {
185+ if (config.containsKey(CONF_KEY_IMAGE)) {
186+ String s = (String) config.get(CONF_KEY_IMAGE);
187+ if (s.startsWith("http://") || s.startsWith("https://")) {
188+ return new Object[]{new URL(s)};
189+ } else {
190+ return new Object[]{new File(s)};
191+ }
192+ }
193+ }
194+
195+ return new Object[]{};
196+ }
197+
162198 }
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeLayeredPane.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeLayeredPane.java (revision 25)
@@ -42,23 +42,14 @@
4242 */
4343 public class MoeLayeredPane extends JLayeredPane {
4444
45- private BufferedImage image;
46- private TexturePaint paint;
47- private float alpha;
45+ private BufferedImage image = null;
46+ private TexturePaint paint = null;
47+ private float alpha = 0.5f; //@@TODO replace literal to constant
4848
4949 public MoeLayeredPane() {
5050 super();
51- this.image = null;
52- this.paint = null;
53- this.alpha = MoeConfig.getOpacity();
5451 }
5552
56- public MoeLayeredPane(BufferedImage image) {
57- super();
58- setPicture(image);
59- this.alpha = MoeConfig.getOpacity();
60- }
61-
6253 public void setBackground(BufferedImage image) {
6354 setPicture(image);
6455 this.repaint();
--- trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeUI.java (revision 24)
+++ trunk/src/jp/sourceforge/users/yutang/omegat/plugin/moenizer/MoeUI.java (revision 25)
@@ -35,7 +35,6 @@
3535 import javax.swing.JMenuBar;
3636 import javax.swing.JPanel;
3737 import javax.swing.JScrollPane;
38-import javax.swing.JTextPane;
3938 import org.omegat.core.Core;
4039 import org.omegat.util.gui.UIThreadsUtil;
4140
@@ -57,33 +56,20 @@
5756 moeUI = null;
5857 }
5958
60- // Singleton. Not allow to Instanciate from outside. Use getMoeUI() to get instance.
61- private MoeUI(BufferedImage image) {
59+ // Singleton. Not allow to Instanciate from outside. Use getInstance() to get instance.
60+ private MoeUI() {
6261 UIThreadsUtil.mustBeSwingThread();
6362
64- initUI(image);
63+ initUI();
6564 }
6665
67- private MoeUI() {
68- UIThreadsUtil.mustBeSwingThread();
69-
70- initUI(null);
71- }
72-
73- public static MoeUI getMoeUI(BufferedImage image) {
66+ public static MoeUI getInstance() {
7467 if (moeUI == null) {
75- moeUI = new MoeUI(image);
76- }
77- return moeUI;
78- }
79-
80- public static MoeUI getMoeUI() {
81- if (moeUI == null) {
8268 moeUI = new MoeUI();
8369 }
8470 return moeUI;
8571 }
86-
72+
8773 public void transparent() {
8874 UIThreadsUtil.mustBeSwingThread();
8975
@@ -134,13 +120,9 @@
134120 });
135121 }
136122
137- private void initUI(BufferedImage image) {
123+ private void initUI() {
138124 frame = Core.getMainWindow().getApplicationFrame();
139- if (image == null) {
140- layeredPane = new MoeLayeredPane();
141- } else {
142- layeredPane = new MoeLayeredPane(image);
143- }
125+ layeredPane = new MoeLayeredPane();
144126 contentPane = frame.getContentPane();
145127 menuBar = frame.getJMenuBar();
146128 desktop = getDockingDesktop(contentPane);