/** * Обновление данных о состоянии модуля (в объекте <code>JepScopeStack</code>, отражающем * состояние приложения). * * @param workstate новое рабочее состояние */ protected void updateScope(WorkstateEnum workstate) { JepScope scope = JepScopeStack.instance.peek(); // Только в случае, если действительно изменяется текущая область видимости модулей // Для поэлементного сравнение массивов, а не по ссылкам в памяти, следует использовать метод // equals утилитарного класса Arrays if (scopes != null && !Arrays.equals( scope.getModuleIds(), scopes)) { // и указаны родительский и дочерние модули ... if (scope.isMainActive()) { // Если текущий модуль является родительским ... scope.setModuleIds(scopes); scope.getModuleStates()[0] = workstate; // Обновление рабочего состояния родительского модуля. // Если текущий модуль на данном уровне иерархии является дочерним, но сам содержит дочерние // модули, то создадим новый уровень иерархии // модулей и добавим его в стек (в объект JepScopeStack, отражающий состояние приложения). } else { JepScope newScope = new JepScope(scopes); newScope.getModuleStates()[0] = workstate; JepScopeStack.instance.push(newScope); eventBus .adjustExitScope(); // Выполним действия по настройке перехода на вышележащий уровень // иерархии (на родительский уровень). // Обработчик установки текущей записи устанавливает в JepScopeStack заначение первичного // ключа текущего модуля. eventBus.setCurrentRecord(currentRecord); } // Уведомим приложение об изменении состояния модуля (например для скрытия/отображения вкладок // перехода на родительские/дочерние модули). eventBus.updateScope(new UpdateScopeEvent(JepScopeStack.instance.peek())); } }
/** * Установка данных о состоянии модуля в исходное положение (скрытие вкладок перехода на дочерние * модули). */ protected void resetScope() { JepScope scope = JepScopeStack.instance.peek(); scope.collapseIfMain(); eventBus.updateScope(new UpdateScopeEvent(scope)); }