2010-05-25 2 views
0

내 도메인에는 끊임없이 개별 프로세스에 의해 업데이트되는 객체가 있으며 PropertySheetView에 변경 속성을 표시하려고합니다. 현재 구현은 기본 도메인 모델 객체가 불변이므로 설정이 변경되면 해당 객체 모델 객체가 해당 ID로 게시됩니다. 이 시점에서 객체를 래핑하는 노드가 가입하고 일치하는 ID로 업데이트 된 객체를 가져오고 createSheet()를 통해 시트를 다시 만들고 업데이트 된 정보로 setSheet를 호출합니다. 이것은 도메인 모델 객체의 가장 최신 버전을 항상 보여 주므로 잘 작동합니다.NetBeans 플랫폼 - 속성 편집 시작/종료시 콜백을 얻는 방법

그러나 일부 속성은 읽기 전용이 아니며 대신 설정할 수 있습니다. 속성을 편집하는 동안 행 또는 시트 단위로 시트를 업데이트/덮어 쓰지 않도록 잠그고 싶습니다. 이렇게하려면 시트를 다시 업데이트하는 것이 안전한지를 알 수 있도록 편집 시작 및 종료 호출을 수신 대기해야합니다.

이것은 내 애플리케이션에 매우 중요합니다. 시트가 새로 고침되고 편집이 끝나기 전에 새로운 값을 입력 할 수 없습니다.

중요한 경우 사용자 정의 PropertyEditorSupport를 사용하지만 기본 InplaceEditor를 사용하고 있습니다.

NetBeans 소스를 통해 많은 검색을했는데이 항목을 수신 대기중인 API 설정이 없습니다.

SheetCellEditor (org.openide.explorer.propertysheet)의 addCellEditorListener 방법을 노출하지만 A) 내가 editingCanceled된다) SheetCellEditor에 의해 노출되는 방법을 SheetCellEditor 인스턴스에 대한 핸들을 얻고, B 얼마나 알아낼 수 없으며, editingStopped - 편집 시작 콜백이 없습니다! 매우 어리석은 것 같습니다. SheetTable과 BaseTable은 JTable을 확장하므로이 속성도 노출되지만 핸들을 얻는 방법을 알 수는 없습니다.

CellEditor 인터페이스에 isCellEditable() 메소드가 필요하다는 것을 알게되었습니다.이 셀은 셀을 편집 할 수 있고 편집이 시작되면 true를 반환합니다. 그러나 다시 이것은 공용 클래스가 아닌 SheetCellEditor에 의해 구현되며이를 참조하는 방법을 알지 못합니다.

도움 주셔서 감사합니다.

답변

0

내가 제시 할 수있는 가장 좋은 해결책은 다음과 같습니다.

사용자 지정 속성 편집기를 만듭니다. 해당 편집기로 InplaceEditor를 구현하십시오. 텍스트 필드 인 StringInplaceEditor를 반환합니다. 해당 텍스트 필드에 포커스 수신기를 연결하십시오. 포커스가 텍스트 필드에 있으면 편집 중입니다. 그렇지 않으면 그렇지 않습니다.

관련 문제