일반 환경 설정에서 사용자는 보기에서 오브젝트를 여는 데 한 번 또는 두 번 클릭 여부를 지정할 수 있습니다.
왜 이 환경 설정이 모든 보기에 적용되지 않는다는 거부 표시가 있는 이유는 무엇입니까? 플러그인에서 제공한 보기는 구현에 있는 이 환경 설정을 명시적으로 지원해야 하기 때문입니다.
낮은 레벨의 세부사항을 처리하기 위해 SWT 제어를 작성하고 표준 SWT 코드를 기록하거나 JFace 표시기를 사용하여 보기를 구현할 수 있습니다. 두 레벨 중 하나에서 단일 클릭 환경 설정을 허용할 수 있습니다. 다른 오브젝트를 여는 대부분의 보기는 목록과 유사한 구조화 보기로 오브젝트를 나타냅니다. 지금은 이런 종류의 보기에 초점을 지정합니다. 보기가 다른 방식으로 오브젝트를 표시하는 경우 SWT 레벨 개념을 사용하여 단일 클릭을 지원합니다.
JFace 목록 지향 표시기를 사용하여 오브젝트를 나타내는 경우 단일 클릭 지원은 간단합니다. 보기에서 항목을 열려면 addDoubleClickListener를 사용하는 대신 addOpenListener를 사용하십시오. 열기 리스너는 현재의 Workbench 환경 설정을 허용하므로 지정된 마우스 이벤트가 발생하면 열기 이벤트를 트리거합니다.
두 번 클릭으로 트리에서 항목을 펼치는 것 같이 열기가 아닌 조치에 대해 addDoubleClickListener를 사용할 수도 있습니다.
JFace는 유틸리티 클래스 OpenStrategy를 제공하여 SWT 제어 레벨의 한 번 클릭 및 두 번 클릭의 논리를 처리합니다. OpenStrategy는 현재 Workbench의 열기 환경 설정을 허용하도록 일반 환경 설정 대화 상자에서 구성됩니다. 사실 JFace 표시기는 이 클래스를 사용하여 열기 리스너를 구현합니다.
OpenStrategy를 작성하여 SWT 제어에 연관시켜야 합니다. OpenStrategy는 적절한 이벤트를 후크하여 사용자 환경 설정을 기초로 이를 해석합니다. 사용자가 할 일은 열기에 대한 코드를 구현하는 계획에 열기 리스너를 추가하는 것입니다. 따라서 사용자는 열기 이벤트를 트리거한 위지트(widget) 이벤트에 대한 정보를 알 수 없습니다.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // code to handle the open event. ... } }
열기에 대한 기타 Workbench 환경 설정(풍선 도움말에서 선택, 화살표키를 사용하여 열기)도 OpenStrategy에서 처리됩니다. 따라서 JFace 표시기나 OpenStrategy 클래스를 사용하여 열기 작동을 구현하는 경우 "정확한 작업"이 수행됩니다.
열기 이벤트를 처리할 때 OpenStrategy.activateOnOpen()을 사용하여 열린 편집기가 기본으로 활성화 여부를 결정해야 합니다. 편집기를 활성화하면 보기에서 편집기로 초점이 이동하는데 이는 단일 클릭 모드에서 특히 혼동을 줄 수 있으므로 바람직하지 않습니다.