Workbench를 사용하여 플러그인 기능의 모양을 제어할 수 있는 몇 가지 방법을 살펴보았습니다. 창>보기 표시 메뉴를 사용하여 보기를 숨기거나 표시할 수 있습니다. 창->Perspective 사용자 정의... 메뉴를 사용하여 조치 세트를 숨기거나 표시할 수 있습니다. 이 기능은 사용자가 Workbench를 구성하는 데 도움이 됩니다.
Perspective는 Workbench 창에서 조직의 추가 레이어를 제공합니다. 사용자는 타스크에서 이동하면서 Perspective 사이를 전환할 수 있습니다. Perspective는 보기의 콜렉션, 보기의 레이아웃 및 사용자가 Perspective를 처음 열 때 사용해야 하는 가시적 조치 세트를 정의합니다.
Perspective는 IPerspectiveFactory를 사용하여 구현됩니다. IPerspectiveFactory의 구현자가 Perspective와 Perspective 페이지 레이아웃을 설명하는 정보를 사용하여 IPageLayout을 구성하게 됩니다.
IPageLayout의 주요 작업 중 하나는 Workbench 창의 편집기 및 보기의 위치를 설명하는 것입니다. 이 레이아웃은 SWT의 Layout 클래스와 다릅니다. IPageLayout 및 Layout에서 유사한 문제(더 큰 영역에 위지트(widget)를 배치하고 크기 조정하는 문제)를 해결하지만 Perspective 페이지 레이아웃을 제공하기 위해 SWT 레이아웃을 이해할 필요는 없습니다.
Perspective 페이지 레이아웃은 편집기를 표시하기 위한 하나의 영역으로 초기화됩니다. Perspective 팩토리는 편집기에 관련된 다른 보기를 추가해야 합니다. 보기는 다른 파트(맨 위, 맨 아래, 왼쪽, 오른쪽)에 관련된 레이아웃에 추가됩니다. 처음에는 표시되지 않는 항목에 대해 위치 표시기(빈 공간)를 추가할 수도 있습니다.
관련 보기를 구성하고 혼잡을 줄이기 위해 IFolderLayout을 사용하여 보기를 탭 폴더로 그룹화할 수 있습니다. 예를 들어, 자원 Perspective에서는 자원 네비게이터를 Workbench의 왼쪽 위 모서리에 있는 폴더 안에 배치합니다. 위치 표시기는 대개 폴더 레이아웃과 함께 사용합니다. 자원 Perspective에서는 자원 네비게이터와 같은 폴더에 책갈피 보기를 위한 위치 표시기를 정의합니다. 사용자가 책갈피 보기를 표시하면 네비게이터와 같은 폴더에 각 보기에 대한 탭을 사용하여 표시됩니다.
IPageLayout을 사용하여 Perspective의 사용 가능한 조치 및 바로 가기를 정의할 수도 있습니다.
Perspective가 제공하는 다른 유용한 서비스 및 IPageLayout은 편집기 및 관련 보기 간의 탐색을 지원합니다. 일반적으로 보기는 편집기에서 함께 작업할 오브젝트를 찾을 수 있도록 지원하는 것으로 생각됩니다. 그러나, 이외 반대되는 조작도 유용합니다. 편집기에서 오브젝트로 작업하는 사용자는 보기 내부의 해당 오브젝트를 탐색해야 합니다. 이 작업은 Workbench 탐색 > 표시 메뉴를 사용하여 수행될 수 있습니다. 이 명령을 사용하여 현재 편집된(또는 선택된) 오브젝트의 컨텍스트에서 관련 보기 중의 하나로 점프할 수 있습니다. 예를 들어, 파일을 편집하는 사용자는 자원 네비게이터의 해당 파일로 점프할 수 있습니다.
Workbench의 플러그인 아키텍처를 사용하여 개발자는 서로 간에 인식조차 못하는 다른 플러그인에 보기 및 편집기를 제공할 수 있습니다. "표시"에 대한 지원을 구현하여 보기 또는 편집기는 다른 플러그인에서 제공된 보기 및 편집기 간에 편리한 탐색을 지원할 수 있습니다.
이 탐색을 사용하여 일반적으로 특정 Perspective에 표시되지 않는 보기를 쉽게 열 수 있고 보기 간에 빠르게 이동할 수 있습니다. 예를 들면, Java Perspective에서 작업하는 사용자가 네비게이터 보기에서 현재 편집된 Java 파일을 보려면 탐색 > 표시를 사용할 수 있습니다.
사용자가 편집기 또는 보기에서 다른 보기로 점프할 수 있도록 탐색 > 표시를 사용할 수 있게 하려면 IShowInSource를 구현해야 합니다. 사용자의 파트는 프로토콜(getShowInSource())을 직접 사용하거나 어댑터로 IShowInSource를 제공할 수 있습니다. IShowInSource를 사용하여 사용자 파트는 소스 표시 방법을 결정하기 위해 대상에서 사용하는 컨텍스트(ShowInContext)를 제공할 수 있습니다. 편집기에 대한 컨텍스트의 표시는 일반적으로 해당 입력 요소입니다. 보기의 경우 컨텍스트가 일반적으로 해당 선택사항입니다. 선택사항 및 입력 요소 모두 ShowInContext에서 제공되며 소스 표시 방법 결정에 있어 대상 융통성을 제공합니다.
편집기에 대한 기본 컨텍스트가 제공되므로 편집기는 특별 코딩 없이 "표시"에 참여할 수 있습니다. 편집기의 경우 입력 요소 및 선택사항은 적절한 컨텍스트를 작성하는 데 사용됩니다.
보기의 경우 IShowInSource는 탐색 > 표시 기능을 제공할 수 있도록 보기에서 구현되어야 합니다.
보기가 "표시" 조작에 올바른 대상이 되게 하려면 IShowInTarget을 구현해야 합니다. 대상은 해당 프리젠테이션에 적절한 방식으로 제공된 컨텍스트를 표시해야 합니다. 예를 들어, 네비게이터 보기는 트리를 펼쳐 컨텍스트에 지정된 자원을 선택하여 표시합니다.
이것은 더욱 특정한 정보이므로 대상은 우선 ShowInContext에서 선택사항을 확인하여 표시 내용을 결정해야 합니다. 선택사항이 표시되지 않는 경우에만 입력 요소를 표시합니다.
사용 가능한 대상 목록을 결정하는 방법은 무엇입니까? IPageLayout에서 사용자의 Perspective에 사용 가능한 대상을 지정할 수 있습니다. "표시" 탐색은 Perspective에 아직 없는 보기를 열 수 있습니다. IPageLayout.addShowInPart를 사용하여, ID별로 올바른 "표시" 대상을 지정할 수 있습니다. 이런 방법으로 불필요한 보기를 작성하지 않고 올바른 대상을 설정할 수 있습니다.