1 /*
2 * Copyright 2004-2008 the Seasar Foundation and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.seasar.uruma.rcp;
17
18 import java.util.List;
19 import java.util.ResourceBundle;
20
21 import org.eclipse.ui.IWorkbench;
22 import org.osgi.framework.Bundle;
23 import org.seasar.framework.container.S2Container;
24 import org.seasar.uruma.component.Template;
25 import org.seasar.uruma.component.rcp.ViewPartComponent;
26 import org.seasar.uruma.component.rcp.WorkbenchComponent;
27 import org.seasar.uruma.context.WindowContext;
28 import org.seasar.uruma.rcp.binding.CommandRegistry;
29 import org.seasar.uruma.rcp.configuration.Extension;
30
31 /**
32 * RCP 環境で Uruma が提供するサービスです。<br />
33 *
34 * @author y-komori
35 */
36 public interface UrumaService {
37 /**
38 * Uruma アプリケーションのバンドルを返します。<br />
39 *
40 * @return {@link Bundle} オブジェクト
41 */
42 public Bundle getBundle();
43
44 /**
45 * 現在のプラグイン ID を返します。<br />
46 *
47 * @return プラグイン ID
48 */
49 public String getPluginId();
50
51 /**
52 * 画面コンポーネントのIDをRCP上のIDに変換します。<br />
53 * RCP上のIDは、画面コンポーネントのIDにサフィックスとしてプラグインIDを追加したものになります。<br />
54 * <p>
55 * 【例】プラグインID: <code>org.seasar.uruma.example</code>、コンポーネントID:
56 * <code>button</code> の場合、本メソッドの戻り値は、
57 * <code>org.seasar.uruma.example.button</code> となります。
58 * </p>
59 *
60 * @param id
61 * 画面コンポーネントのID
62 * @return RCP上のID
63 */
64 public String createRcpId(String id);
65
66 /**
67 * RCP上のIDから画面コンポーネントのIDを取得します。<br />
68 *
69 * @param rcpId
70 * RCP上のID
71 * @return 画面コンポーネントのID
72 * @see #createRcpId(String)
73 */
74 public String getLocalId(String rcpId);
75
76 /**
77 * 指定されたパスの画面定義XMLを読み込み、{@link Template} オブジェクトを生成します。<br />
78 *
79 * @param path
80 * 画面定義XMLのパス
81 * @return {@link Template} オブジェクト
82 */
83 public Template getTemplate(String path);
84
85 /**
86 * {@link IWorkbench} のインスタンスを返します。<br />
87 *
88 * @return {@link IWorkbench} のインスタンス
89 */
90 public IWorkbench getWorkbench();
91
92 /**
93 * {@link WorkbenchComponent} を返します。<br />
94 *
95 * @return {@link WorkbenchComponent} オブジェクト
96 */
97 public WorkbenchComponent getWorkbenchComponent();
98
99 /**
100 * {@link ViewPartComponent} のリストを返します。<br />
101 *
102 * @return {@link ViewPartComponent} オブジェクト
103 */
104 public List<ViewPartComponent> getViewPartComponent();
105
106 /**
107 * 現在登録されている拡張ポイントのリストを返します。<br />
108 *
109 * @return 拡張ポイントのリスト
110 */
111 public List<Extension> getExtensions();
112
113 /**
114 * 指定した名前の拡張ポイントを返します。<br />
115 *
116 * @param point
117 * 拡張ポイントの名称
118 * @return 拡張ポイント。見つからなかった場合は <code>null</code>。
119 */
120 public Extension getExtension(String point);
121
122 /**
123 * ワークベンチウィンドウに対応する {@link WindowContext} を返します。<br />
124 *
125 * @return {@link WindowContext}
126 */
127 public WindowContext getWorkbenchWindowContext();
128
129 /**
130 * {@link S2Container} のインスタンスを返します。<br />
131 *
132 * @return {@link S2Container} のインスタンス
133 */
134 public S2Container getContainer();
135
136 /**
137 * Urumaアプリケーションバンドルのクラスローダを返します。<br />
138 *
139 * @return Urumaアプリケーションバンドルのクラスローダ
140 */
141 public ClassLoader getAppClassLoader();
142
143 /**
144 * Urumaバンドルのクラスローダを返します。<br />
145 *
146 * @return Urumaバンドルのクラスローダ
147 */
148 public ClassLoader getUrumaClassLoader();
149
150 /**
151 * コンテクストクラスローダを Uruma アプリケーションのクラスローダに切り替えます。<br />
152 */
153 public void switchToAppClassLoader();
154
155 /**
156 * コンテクストクラスローダを Uruma バンドルのクラスローダに切り替えます。<br />
157 */
158 public void switchToUrumaClassLoader();
159
160 /**
161 * イメージ定義を保持する {@link ResourceBundle} を返します。<br /> デフォルトは
162 * <code>urumaImages.properties</code> の内容となります。
163 *
164 * @return {@link ResourceBundle} オブジェクト
165 */
166 public ResourceBundle getImageBundle();
167
168 /**
169 * 直前に使用していたクラスローダに切り替えます。<br /> 直前に実行された {@link #switchToUrumaClassLoader()
170 * } メソッドまたは、 {@link #switchToAppClassLoader()} メソッド実行前のクラスローダに切り替えます。
171 */
172 public void restoreClassLoader();
173
174 /**
175 * {@link CommandRegistry} のインスタンスを返します。<br />
176 */
177 public CommandRegistry getCommandRegistry();
178
179 /**
180 * Uruma アプリケーションのためのデフォルトコンテクスト ID を返します。<br /> デフォルト値は
181 * <code><プラグインID>.context</code> となります。<br />
182 *
183 * @return デフォルトコンテクスト ID
184 */
185 public String getDefaultContextId();
186 }