OmegaT の背景に画像を表示します。
Separate a plugin loader
@@ -6,5 +6,5 @@ | ||
6 | 6 | Permissions: all-permissions |
7 | 7 | Class-Path: lib/lib-mnemonics.jar |
8 | 8 | OmegaT-Plugins: |
9 | - jp.sourceforge.users.yutang.omegat.plugin.moenizer.Moenizer | |
9 | + jp.sourceforge.users.yutang.omegat.plugin.moenizer.PluginLoader | |
10 | 10 | OmegaT-Plugin: true |
@@ -16,122 +16,23 @@ | ||
16 | 16 | |
17 | 17 | package jp.osdn.users.yutang.omegat.plugin.moenizer; |
18 | 18 | |
19 | -import groovy.util.ConfigObject; | |
20 | -import java.util.Set; | |
21 | -import javax.swing.SwingUtilities; | |
22 | -import jp.osdn.users.yutang.omegat.plugin.moenizer.gui.ConfigEditDialog; | |
23 | -import org.omegat.core.Core; | |
24 | -import org.omegat.core.CoreEvents; | |
25 | -import org.omegat.core.events.IApplicationEventListener; | |
26 | -import org.omegat.util.Log; | |
27 | - | |
28 | 19 | /** |
29 | 20 | * allow to set background image |
30 | 21 | * |
31 | 22 | * @author Yu-Tang |
32 | 23 | */ |
33 | -public class Moenizer implements IApplicationEventListener { | |
24 | +public class Moenizer { | |
34 | 25 | |
35 | - private static boolean instantiated = false; | |
36 | - | |
37 | 26 | private MoeUI ui; |
38 | 27 | private MoeConfig config; |
39 | 28 | private ThemeChanger themeChanger; |
40 | 29 | private MenuHandler menu; |
41 | 30 | |
42 | - public static void loadPlugins() { | |
43 | - try { | |
44 | - // Not initialize in console mode | |
45 | - if (instantiated) { | |
46 | - throw new RuntimeException("Moenizer plugin could be instantiated only once."); | |
47 | - } else if (!isSupportedVLDockingFramework()) { | |
48 | - throw new RuntimeException("Moenizer plugin is not compatibled " | |
49 | - + "with current VLDocking framework library.\n" | |
50 | - + "Please update to OmegaT 3.1.2u1 or later."); | |
51 | - } else if (isRunningJavaWebStart()) { | |
52 | - // Just log it, no error. | |
53 | - Log.log("Moenizer plugin is not working with Java Web Start."); | |
54 | - } else { | |
55 | - CoreEvents.registerApplicationEventListener(new Moenizer()); | |
56 | - instantiated = true; | |
57 | - } | |
58 | - } catch (Throwable ex) { | |
59 | - String msg = ex.getMessage(); | |
60 | - Log.logErrorRB("LD_ERROR", msg); | |
61 | - Core.pluginLoadingError(msg); | |
62 | - } | |
63 | - } | |
64 | - | |
65 | - private static boolean isSupportedVLDockingFramework() { | |
66 | - return !"2.1.4".equals(com.vlsolutions.swing.docking.DockingDesktop | |
67 | - .getDockingFrameworkVersion()); | |
31 | + public Moenizer(MoeUI ui, MoeConfig config, ThemeChanger themeChanger, MenuHandler menu) { | |
32 | + this.ui = ui; | |
33 | + this.config = config; | |
34 | + this.themeChanger = themeChanger; | |
35 | + this.menu = menu; | |
68 | 36 | } |
69 | 37 | |
70 | - public static void unloadPlugins() { | |
71 | - // do nothing | |
72 | - } | |
73 | - | |
74 | - @Override | |
75 | - public void onApplicationStartup() { | |
76 | - try { | |
77 | - config = new MoeConfig(MoeUtil.getMoeConfigFile()); | |
78 | - ui = MoeUI.getInstance(); | |
79 | - /* | |
80 | - menu = new MenuHandler(new Runnable() { | |
81 | - @Override | |
82 | - public void run() { | |
83 | - showSettingDialog(); | |
84 | - } | |
85 | - }); | |
86 | - */ | |
87 | - themeChanger = new ThemeChanger(ui); | |
88 | - themeChanger.setTheme(config.getCurrentConfig()); | |
89 | - | |
90 | - // この時点でコンポーネントの透過設定をしても反映されない(タイミング?)。 | |
91 | - // Workaround として、invokeLater でキューに突っ込んで、後で処理する。 | |
92 | - SwingUtilities.invokeLater(new Runnable() { | |
93 | - @Override | |
94 | - public void run() { | |
95 | - CoreEvents.unregisterApplicationEventListener(Moenizer.this); | |
96 | - themeChanger.apply(); | |
97 | - } | |
98 | - }); | |
99 | - //CoreEvents.unregisterApplicationEventListener(this); // ここで発行すると、スレッドエラーになるので注意 | |
100 | - } catch (Exception e) { | |
101 | - Log.log("Error raised at " + this.getClass().getCanonicalName() + ".onApplicationStartup()\n" + e); | |
102 | - e.printStackTrace(); | |
103 | - } | |
104 | - } | |
105 | - | |
106 | - @Override | |
107 | - public void onApplicationShutdown() { | |
108 | - // not used. | |
109 | - } | |
110 | - | |
111 | - private void showSettingDialog() { | |
112 | - //@@TODO 前処理 -- 自動保存中断など | |
113 | - Set<ConfigObject> sortedConfigs = config.getSortedConfigs(); | |
114 | - //MoeConfigEditDialog dialog = new MoeConfigEditDialog(sortedConfigs, themeChanger); | |
115 | - ConfigEditDialog dialog = new ConfigEditDialog(sortedConfigs, themeChanger); | |
116 | - //dialog.setSize(400, 200); //@@TODO remain size | |
117 | - //dialog.setLocationRelativeTo(null); // positioning at the center of the screen | |
118 | - dialog.setVisible(true); | |
119 | - onConfigUpdate(); | |
120 | - //@@TODO 後処理 -- 自動保存再開など | |
121 | - } | |
122 | - | |
123 | - private void onConfigUpdate() { | |
124 | - //Log.log("-- onConfigUpdate()"); //@@TODO 要・実装 | |
125 | - } | |
126 | - | |
127 | - private static boolean isRunningJavaWebStart() { | |
128 | - try { | |
129 | - Class.forName("javax.jnlp.ServiceManager"); | |
130 | - return true; | |
131 | - } catch (ClassNotFoundException ex) { | |
132 | - // ignore | |
133 | - } | |
134 | - return false; | |
135 | - } | |
136 | - | |
137 | 38 | } |
@@ -0,0 +1,118 @@ | ||
1 | +/************************************************************************** | |
2 | + Moenizer - Allow to set background image for OmegaT. | |
3 | + | |
4 | + Copyright (C) 2017 Yu Tang | |
5 | + Home page: http://osdn.jp/users/yu-tang/ | |
6 | + Support center: http://osdn.jp/users/yu-tang/pf/Moenizer/ | |
7 | + | |
8 | + This file is part of plugin for OmegaT. | |
9 | + http://www.omegat.org/ | |
10 | + | |
11 | + License: GNU GPL version 3 or (at your option) any later version. | |
12 | + | |
13 | + You should have received a copy of the GNU General Public License | |
14 | + along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | + **************************************************************************/ | |
16 | + | |
17 | +package jp.osdn.users.yutang.omegat.plugin.moenizer; | |
18 | + | |
19 | +import javax.swing.SwingUtilities; | |
20 | +import org.omegat.core.Core; | |
21 | +import org.omegat.core.CoreEvents; | |
22 | +import org.omegat.core.events.IApplicationEventListener; | |
23 | +import org.omegat.util.Log; | |
24 | + | |
25 | +/** | |
26 | + * loading and unloading a plugin | |
27 | + * | |
28 | + * @author Yu-Tang | |
29 | + */ | |
30 | +public class PluginLoader implements IApplicationEventListener { | |
31 | + | |
32 | + private static boolean instantiated = false; | |
33 | + | |
34 | + private static Moenizer moenizer; | |
35 | + | |
36 | + public static void loadPlugins() { | |
37 | + try { | |
38 | + // Not initialize in console mode | |
39 | + if (instantiated) { | |
40 | + throw new RuntimeException("Moenizer plugin could be instantiated only once."); | |
41 | + } else if (!isSupportedVLDockingFramework()) { | |
42 | + throw new RuntimeException("Moenizer plugin is not compatibled " | |
43 | + + "with current VLDocking framework library.\n" | |
44 | + + "Please update to OmegaT 3.1.2u1 or later."); | |
45 | + } else if (isRunningJavaWebStart()) { | |
46 | + // Just log it, no error. | |
47 | + Log.log("Moenizer plugin is not working with Java Web Start."); | |
48 | + } else { | |
49 | + CoreEvents.registerApplicationEventListener(new PluginLoader()); | |
50 | + instantiated = true; | |
51 | + } | |
52 | + } catch (Throwable ex) { | |
53 | + String msg = ex.getMessage(); | |
54 | + Log.logErrorRB("LD_ERROR", msg); | |
55 | + Core.pluginLoadingError(msg); | |
56 | + } | |
57 | + } | |
58 | + | |
59 | + public static void unloadPlugins() { | |
60 | + // do nothing | |
61 | + } | |
62 | + | |
63 | + private static boolean isSupportedVLDockingFramework() { | |
64 | + return !"2.1.4".equals(com.vlsolutions.swing.docking.DockingDesktop | |
65 | + .getDockingFrameworkVersion()); | |
66 | + } | |
67 | + | |
68 | + @Override | |
69 | + public void onApplicationStartup() { | |
70 | + try { | |
71 | + MoeConfig config = new MoeConfig(MoeUtil.getMoeConfigFile()); | |
72 | + MoeUI ui = MoeUI.getInstance(); | |
73 | + /* | |
74 | + menu = new MenuHandler(new Runnable() { | |
75 | + @Override | |
76 | + public void run() { | |
77 | + showSettingDialog(); | |
78 | + } | |
79 | + }); | |
80 | + */ | |
81 | + ThemeChanger themeChanger = new ThemeChanger(ui); | |
82 | + themeChanger.setTheme(config.getCurrentConfig()); | |
83 | + | |
84 | + MenuHandler menu = null; | |
85 | + | |
86 | + // この時点でコンポーネントの透過設定をしても反映されない(タイミング?)。 | |
87 | + // Workaround として、invokeLater でキューに突っ込んで、後で処理する。 | |
88 | + SwingUtilities.invokeLater(new Runnable() { | |
89 | + @Override | |
90 | + public void run() { | |
91 | + moenizer = new Moenizer(ui, config, themeChanger, menu); | |
92 | + CoreEvents.unregisterApplicationEventListener(PluginLoader.this); | |
93 | + themeChanger.apply(); | |
94 | + } | |
95 | + }); | |
96 | + //CoreEvents.unregisterApplicationEventListener(this); // ここで発行すると、スレッドエラーになるので注意 | |
97 | + } catch (Exception e) { | |
98 | + Log.log("Error raised at " + this.getClass().getCanonicalName() + ".onApplicationStartup()\n" + e); | |
99 | + e.printStackTrace(); | |
100 | + } | |
101 | + } | |
102 | + | |
103 | + @Override | |
104 | + public void onApplicationShutdown() { | |
105 | + // not used. | |
106 | + } | |
107 | + | |
108 | + private static boolean isRunningJavaWebStart() { | |
109 | + try { | |
110 | + Class.forName("javax.jnlp.ServiceManager"); | |
111 | + return true; | |
112 | + } catch (ClassNotFoundException ex) { | |
113 | + // ignore | |
114 | + } | |
115 | + return false; | |
116 | + } | |
117 | + | |
118 | +} |