NetBeans 7.0의 "새 동작"마법사는 ActionListener
인터페이스를 구현하는 클래스를 생성하며 몇 가지 주석이 있습니다. 이 주석은 마법사에 지정된 도구 모음/메뉴에이 작업에 대한 참조를 배치합니다. 이것의 대부분은 NetBeans wiki에서 설명하고 예상대로 작동합니다.NetBeans 선언적 동작 등록 대 노드 팝업 메뉴
노드의 컨텍스트 메뉴에 이러한 동작을 추가하려고 할 때 문제가 발생합니다. 여기에 작업 표시는 Node.getActions(..) 메서드에서 구체적인 작업 인스턴스를 반환해야 함을 의미합니다. 누락 된 부분은 여기에 멋진 주석이있는 ActionListener
이 있지만이 리스너가 뒷받침하는 Action
인스턴스가 필요합니다. 어떻게 든 관련 보인다 블로그 post by Geertjan, 우연히이 격차를 채우기 위해 노력하고 내 ActionListener
에 추가 한 정적 방법을 주도 할 때이 작동하는 동안
public static Action findAction() throws Exception {
final FileObject fo = FileUtil.getConfigFile(
"Actions/Tools/foo-bar-Action.instance");
final DataObject dob = DataObject.find(fo);
final InstanceCookie ic = dob.getLookup().lookup(InstanceCookie.class);
if (ic != null) {
final Object instance = ic.instanceCreate();
if (instance instanceof Action) {
return (Action) instance;
}
}
return null;
}
, 그것은 확실히의 가장 아름다운 조각 아니다 코드와 파일 시스템 API 및 그 추악한 액션 이름 문자열 상수를 통과하는 코드. 나에게는 매우 부서지기 쉬운 것처럼 보입니다.
마법사의 생성 된 동작을 노드의 상황에 맞는 메뉴로 가져 오는 가장 좋은 방법은 무엇입니까? 그게 중요하다면 내 작업은 컨텍스트 인식 (그래서 그것은 특정 인터페이스를 활성화해야합니다)에 언급하고 싶습니다.