View Javadoc

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>&lt;プラグインID&gt;.context</code> となります。<br />
182      * 
183      * @return デフォルトコンテクスト ID
184      */
185     public String getDefaultContextId();
186 }