はい、ビューの表示と非表示を切り替えることができます。
1) 各ビューには一意の ID が必要です。この ID は、plugin.xml のビュー拡張の ID と一致する必要があります。
これは私の plugin.xml ビュー拡張の 1 つです。
<view
class="gov.bop.rabid.ui.views.PrefetchView"
icon="icons/folder_user.png"
id="gov.bop.rabid.ui.views.PrefetchView"
name="Prefetch"
restorable="true">
</view>
の ID 定義は次のとおりPrefetchView
です。
public static final String ID = "gov.bop.rabid.ui.views.PrefetchView";
通常、ID はクラス名と同じにします。私にとっては混乱が少ないです。
2)Perspective
クラス、createInitialLayout
メソッドでは、プレースホルダーを使用して IFolderLayout を定義する必要があります。繰り返しますが、これが私のコードです。
IFolderLayout consoleFolder = layout.createFolder(CONSOLE_ID,
IPageLayout.BOTTOM, 0.75f, editorArea);
consoleFolder.addPlaceholder(PrefetchedInmatesView.ID);
consoleFolder.addPlaceholder(FoundInmatesView.ID);
consoleFolder.addView(ProcessedInmatesView.ID);
setClosable(layout, FoundInmatesView.ID, false);
setClosable(layout, PrefetchedInmatesView.ID, false);
setClosable(layout, ProcessedInmatesView.ID, false);
3) 他のビュー内から任意のビューにアクセスできる静的メソッドが必要です。この静的メソッドをActivator
クラスに配置しましたが、好きな場所に配置できます。
public static IViewPart getView(IWorkbenchWindow window, String viewId) {
IViewReference[] refs = window.getActivePage().getViewReferences();
for (IViewReference viewReference : refs) {
if (viewReference.getId().equals(viewId)) {
return viewReference.getView(true);
}
}
return null;
}
4) 最後に、イベント コードからビューを表示および非表示にします。これが例です。
final PhotoView view = (PhotoView) RabidPlugin.getView(window,
PhotoView.ID);
if (view == null)
return;
*** Do stuff with the other view ***
IWorkbenchPage page = window.getActivePage();
page.hideView(page.findView(FoundInmatesView.ID));