2014-05-09 1 views
2

GEF 편집기를 구현 중이며 다음 문제에 직면하고 있습니다.GEF 편집기에서 사용자 정의 FlowLayout을 구현하는 방법은 무엇입니까?

두 가지 유형의 EditPart가 있습니다. 1) GraphEditPart, 2) NodeEditPart. 팔레트가 전혀 필요하지 않으므로 내 편집기가 GraphicalEditor까지 확장됩니다. GraphicalViewerSimpleRootEditPart을 사용합니다.

GraphEditPartFlowLayout으로 레이 아웃되어 Layer 유형의도있다. 노드 모델 (Label)이 GraphicalViewer의 보이는 부분을 벗어나 이동할 때, 모델의 자식 노드는 FlowLayout에 따라 표시되어야합니다. 즉, 하나씩 차례대로 "줄 바꿈"이 표시되어야합니다. 이것은 보통 수평 스크롤바가 나타나는 지점 일 것입니다. 스크롤바를 표시하지 않으려면 layer.setPreferredSize(new Dimension(getViewer().getControl().getSize()))을 설정해야합니다. 이것은 충분히 잘 작동하므로, 어플리케이션 윈도우의 크기를 더 작은 사이즈로 변경하면, 에디터는 작아지고, 노드 수치는 FlowLayout에서 준 "줄 바꿈"을 수행합니다.

그러나 그래프에 노드가 많으면 세로 스크롤 막대를 표시하고 싶습니다. 이제 노드가 화면 맨 아래에서만 사라지기 때문입니다.

그래서 기본적으로 내가 달성하고자하는 행동이 방금 (유래에 여기 WYSIWYG 텍스트 편집기 등) 충분한 텍스트를 입력하면 아래로 스크롤 텍스트 편집기의처럼

은 ...

나는 시도 ((FigureCanvas) getViewer()).getControl.setVerticalScrollbarVisibility(FigureCanvas.AUTOMATIC))을 호출하여 스크롤 바를 표시하도록 설정했지만 아무런 효과가 없습니다.

답변

0

나는 문제가 스크롤을 지원하지 않는 SimpleRootEditPart을 사용하고 있다고 생각합니다. 이것을 ScalableRootEditPart 또는 심지어 ScalableFreeformRootEditPart으로 변경해보십시오 (즉, 내가 사용하고있는 것임). 현재 수행중인 호출은 편집 부분이 포함 된 컨트롤에 영향을 미치지 만 GEF가 자체 뷰를 관리하므로 호출이 아무런 효과가 없습니다.

+0

'GraphicalViewer'의'Control' 기능을 스크롤하고 있지 않습니까? 만약 내가 맞다면,'ScrollingGraphicalViewer'에 대한 디폴트'Control' (차례로 타입 계층의 모든 GEF 편집기에 대한 기본 뷰어는'Graphical Editor'에서 아래로 생각합니다)는'FigureCanvas'입니다 (API 문서는 이것을 " 캔버스 스크롤 "어쨌든). 음, 적어도 FigureCanvas는 스크롤바 가시성을위한 정적 필드를 제공합니다. @QueNuevo : vainolo는 귀하의 전화가 아무런 효과가 없다고 생각합니다. 자녀의 'Bounds'에 따라 원하는 크기를 동적으로 계산해 보셨습니까? 이것이 효과가 있습니까? –

+0

코드 @ s.d에서 파고 들었습니다. GEF는 Eclipse UI에 의해 제어되지 않는 자체 스크롤 메커니즘을 가지고 있다고 생각합니다. 그러나 나는 식식에 녹슬지 만 요즘은 틀릴 수도 있습니다. 어쨌든, 나는 항상 위의 클래스를 사용하고 스크롤 작업을합니다. – vainolo

관련 문제