예,보기를 표시하거나 숨길 수 있습니다.
1) 각보기에는 고유 한 ID가 있어야합니다. 이 ID는 plugin.xml의보기 확장에있는 ID와 일치해야합니다.
여기 내 plugin.xml보기 확장 중 하나입니다.
<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));
이 질문에 봐 -이 대답 - - (http://stackoverflow.com/q/171824/150166) 프로그래밍 이클립스 플러그인에서보기 표시] 을 [보기 볼 수 있도록하는 방법/런타임에 보이지 않는] (http://stackoverflow.com/a/8295692/150166). –