еще нового Eclipse, скаутов вопрос от меня:Eclipse, Scout (пере) активировать форму в SWT Client
В моем скаутского приложение, которое примерно на основе шаблона «Структуру дерева и таблицы формы» мне удалось добавить новый экземпляры формы (поиска) с щелчком на узле. свойства отображения моей формы сконфигурированы так:
@Override
protected int getConfiguredDisplayHint() { return DISPLAY_HINT_VIEW; }
@Override
protected String getConfiguredDisplayViewId() { return VIEW_ID_PAGE_DETAIL; }
Я не добавлять формы на страницы с встроенными методами (например, setDetailForm (форма IForm)), но я поставил их в качестве нового атрибута к страниц и запускать их через свой FormHandler. Таким образом, я достигаю того, что визуализатор Scout отображает формы рядом друг с другом, и это именно то, что я хочу. Добавление их в виде форм на страницу заставляет визуализатор закрывать другие формы всякий раз, когда страница активируется, поэтому только одна форма отображается одновременно.
Мои проблемы с этой реализации:
- реактивации вкладок возможно только в клиенте RAP. Для клиента RAP достаточно вызвать метод activate() формы для повторной активации и сфокусировать соответствующую вкладку. С другой стороны, клиент SWT (от которого я зависим), похоже, совсем не заботится об вызове activate() и, следовательно, не активирует страницу. Итак, я ищу безопасный и простой способ убедить SWT-рендеринга
- , набирая формы рядом друг с другом, предпочтительно без использования табло-табло. Как описано выше, это уже работает, но я не уверен, что это рекомендуемый способ.
- реактивировать язычки в NodeClick, как клиент RAP уже делает
- Получать события при нажатии на вкладку закрытия вкладки (X-кнопку в SWT, нет кнопки в РПД -.-), или любой другой. Я думаю, что этот вопрос немного широк, поскольку в Скаутской ситуации возникает общая проблема, заключающаяся в том, чтобы перейти к специфическим для продукта процессам, которые не являются частью абстрактной модели программирования Scout. Тем не менее, было бы неплохо обработать эти события и другие из глобального клиента без необходимости настройки конкретных продуктов рендеринга.
Скриншот интерфейса моей программы, чтобы сделать вещи проще следовать:
В скриншоте пятая форма активируется как вид и соответствующий узел в дереве контур слева также отмечен. Как вы видите, добавлено несколько форм, которые все принадлежат узлу в дереве контуров. Когда я нажимаю узел в дереве, я хочу, чтобы соответствующая форма активировалась и фокусировалась, если раньше она не была открыта. Кроме того, вкладки должны оставаться неизменными. Я не хочу повторно инициализировать формы, которые уже существуют.
Я использую Scout версии 5.0
Спасибо за ответ. Насколько я вижу, то, что вы описываете, я на самом деле делаю. При вызове FormHandler с startNew() в экземпляре новой формы, похоже, нет необходимости в вызове activate(). Я хочу использовать функцию activate() только для повторной активации формы, которая была запущена ранее. Может быть, другой ключ FormHandler может быть ключом, но я точно не знаю, как это сделать. – MannikJ