Я хочу сделать валидацию, когда кнопка закрытия импульса вкладки в приложении Eclipse RCP 4, и если какая-либо проверка не удалась, то предотвратите ее.Как работать с закрывающей вкладкой в eclipse RCP 4
ответ
Если вы не хотите использовать part.setDirty(true)
вместе с ISaveHandler
, так как greg-449 montioned, вы можете прослушивать модельные события и исправлять их там. Что-то в направлении этого:
public class PreventCloseAddon {
@PostConstruct
public void init(final IEventBroker eventBroker, final EPartService partService) {
EventHandler tbrHandler = new EventHandler() {
@Override
public void handleEvent(Event event) {
if (!UIEvents.isSET(event))
return;
Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
if (element instanceof MPart) {
MPart part = (MPart) element;
if (!part.isToBeRendered()) {
// ... validate here ...
part.setToBeRendered(true);
partService.activate(part);
}
}
}
};
eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED, tbrHandler);
}
}
Вы должны знать, что часть вновь будет оказана с этим кодом.
К сожалению, при вызове 'setToBeRendered' в этом случае не работает. –
Я изменил свой код выше, чтобы сделать его «работающим», как и следовало ожидать, с помощью «EPartService» для активации части снова после установки «toBeRendered» в true. Вы можете щелкнуть по 'x' части, но она не будет закрыта. Это, конечно, не имеет практического смысла, но является хорошим примером того, что вы могли бы сделать. –
Является ли это e4 RCP с использованием модели приложения или совместимости с RX 3.x? –
Я использую модель приложения e4 – gustavofersan
Вы просто хотите узнать о закрытии части или пытаетесь ли вы предотвратить закрытие? –