Что является гладким (легко и удобно по дизайну) Способ обновления всех данных после некоторых изменений? У меня есть приложение, где может быть открыт несколько окон, отображающих те же данные. Пользователь может редактировать один узел в одном из окон, но Мне нужно обновить этот узел (или его дочерние элементы) во всех представлениях.Как обновить все ExplorerView, показывающие одни и те же данные?
Пример: У меня есть ExplorerView используя OutlineView в моем TopComponent и он показывает все главы в древовидной структуре. Но я могу открыть это окно много раз (например, «новое окно» в MS Word, что является еще одним «представлением» по тем же данным). Когда я меняю заголовок одной главы, мне нужно обновить ее везде, где она видна (во всех расширенных узлах).
Я вижу одно решение, но у него есть некоторые плюсы и минусы: сделать свой собственный поиск и хранить в нем все открытые корневые узлы всех открытых ExplorerViews. Затем на каждом редактировании просто пройдите через все открытые корневые узлы и вызовите на них некоторый метод, чтобы воссоздать просматриваемую структуру (вызов setChildren ... как при первом показе). Но древовидное представление рушится. И если бы я создал какой-то механизм, некоторые мои реализации OutlineView, которые будут помнить все расширенные узлы, поэтому он воссоздает расширенное дерево (но не все дерево, только так, как было), это может занять некоторое время, когда имея слишком много данных, не так ли?
Я пробовал немного другое решение, но я не решил большой проблемы. Я сделал свой поиск и сохранил там все узлы (хорошо реализовав интерфейсы, которые были подклассами этих узлов, - вдохновленные статьей возможностей перезагрузки Geertjan). Затем я мог обновить только тот узел, который изменился (прокручивать их и проверять данные, он показывает) или его родительский элемент. Проблема заключалась в том, что я не знаю, как удалить эти объекты из поиска при воссоздании дочерних узлов какого-либо узла (setChildren). Таким образом, поиск только вырос, потому что я не знал, что узлы удаляют их из него после каждого изменения. –