Платформа NetBeans - как получить обратный вызов, когда недвижимость начинается / заканчивается редактирование

StackOverflow https://stackoverflow.com/questions/2906823

Вопрос

В моем домене у меня есть объекты, которые постоянно обновляются отдельным процессом, и я хочу, чтобы PropertySheetView отображать изменяющиеся свойства. Текущая реализация устанавливается таким образом, что основной объект модели домена неизменен, и, таким образом, когда он изменяется, существует новый объект, опубликованный с соответствующим идентификатором. В этот момент мой узел, упаковочный объект, подписался, получает обновленный объект с идентификатором сопоставления и воссоздает лист (через CreateSeet ()) и вызовов SEETSHEET с обновленной информацией. Это работает нормально, всегда показывая самую последнюю версию объекта модели домена.

Однако некоторые свойства не только нечитаются, но вместо этого можно установить. Я хотел бы заблокировать лист от обновления / перезаписания, либо на основе ряд или листа, в то время как свойство редактируется. Для этого мне нужно слушать редактировать начало и конечные звонки, чтобы я мог знать, когда безопасно обновлять лист снова.

Это имеет решающее значение для моего приложения; Когда он стоит сейчас, вы не можете пройти через новое значение до обновления листа, и ваше редактирование исчезнет.

Если это важно, я использую настраиваемый PropertyEditorsupport, но по умолчанию Inseleditor.

Я сделал много поиска через источник NetBeans, и я не вижу никаких открытых настроек API для прослушивания этого материала.

Лист (org.openide.explorer.propertysheet) обнажает метод AddCelleditorListener, но а) я не могу понять, как я получаю ручку на экземпляре листового стекла, а б) методы, подверженные воздействию листа, представляют собой редактирование и редактирование - нет Обратный вызов для редактирования начался! Кажется очень глупым. Мравнируемый и базельщик также будет разоблачить это свойство, поскольку они продлевают JTable, но я не могу выяснить, как получить его ручку.

Я замечаю, что Соревнований Интерфейс требует метода несущественно(), который предположительно возвращает True, если ячейка может быть отредактирована, и, таким образом, редактирование начинается. Но опять же, это реализуется листежным элементом, который не является публичным классом, и я не знаю, как получить ссылку на него.

Спасибо за помощь.

Это было полезно?

Решение

Лучшее решение, которое я мог придумать, был следующим:

Создайте пользовательский редактор недвижимости. Сделайте этот редактор реализовать InlaceEditor. Верните StringInfaceEditor, который является текстовым полем. Прикрепите фокус-прослушиватель к этому текстовому поле. Когда фокус находится в текстовом поле, он редактируется. В противном случае это нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top