preWindowShellClose() для ActionFactory.QUIT

2 views
Skip to first unread message

sk

unread,
May 8, 2009, 12:26:30 AM5/8/09
to eclipse-dev-rus
Всем привет.
В классе ApplicationWorkbenchWindowAdvisor есть метод
preWindowShellClose(), переопределив который можно перехватить момент
закрытия Workbench, т.е. переспросить пользователя о его намерении
закрыть приложение, спросить про сохранение и пр. Так вот, этот метод
вызывается при нажатии на кнопку закрытия диалога (типа "Х"), но не
вызывается при других способах закрытия окна, таких как обработка
экшена ActionFactory.QUIT и пр. Об этом совершенно однозначно написано
в JavaDoc к этому методу и у меня вопрос: а как перехватить событие
закрытия окна посылаемые другими командами, собственно
ActionFactory.QUIT и ему подобных?

P.S. Небольшой оффтопик: забавную вещь нашел пока гуглил этот вопрос -
наткнулся на сырцы RSSOwl (http://www.rssowl.org/):
public boolean preWindowShellClose() {
final boolean[] res = new boolean[] { true };
.... blach-blach-blach...
if ( чего-то )
res[0] = false;
.... blach-blach-blach...
return res[0];
}

Вот любопытно мне стало - нафига массив нужен? Это теперь модно так
boolean использовать или всё таки WTF? Полный код можно посмотреть
тут:
http://www.google.com/codesearch/p?hl=en#ABBYt4EsxlY/trunk/org.rssowl.ui/src/org/rssowl/ui/internal/ApplicationWorkbenchWindowAdvisor.java&q=preWindowShellClose

Ilya Shinkarenko

unread,
May 8, 2009, 8:21:18 AM5/8/09
to eclipse...@googlegroups.com
(не особо углубляясь в код) 
а почему вы перехватываете момент закрытия Workbench в WorkbenchWindowAdvisor, а не в WorkbenchAdvisor#preShutdown / WorkbenchAdvisor#postShutdown?

2009/5/8 sk <Kape...@gmail.com>

sk

unread,
May 8, 2009, 8:28:58 AM5/8/09
to eclipse-dev-rus
аррррг! /* злится на себя */
Действительно - чой-то я?! Протупил... действительно это работает,
даже в доке цитируемом мной выше написано:
See Also: - мол, смотри:
org.eclipse.ui.IWorkbenchWindow.close
WorkbenchAdvisor.preShutdown()

... а я не посмотрел :)

Спасибо, огромное!

On 8 май, 16:21, Ilya Shinkarenko <shin...@gmail.com> wrote:
> (не особо углубляясь в код) а почему вы перехватываете момент закрытия
> Workbench в WorkbenchWindowAdvisor, а не в WorkbenchAdvisor#preShutdown
> / WorkbenchAdvisor#postShutdown?
>

> 2009/5/8 sk <Kaperu...@gmail.com>


>
> > Всем привет.
> > В классе ApplicationWorkbenchWindowAdvisor есть метод
> > preWindowShellClose(), переопределив который можно перехватить момент
> > закрытия Workbench, т.е. переспросить пользователя о его намерении
> > закрыть приложение, спросить про сохранение и пр. Так вот, этот метод
> > вызывается при нажатии на кнопку закрытия диалога (типа "Х"), но не
> > вызывается при других способах закрытия окна, таких как обработка
> > экшена ActionFactory.QUIT и пр. Об этом совершенно однозначно написано
> > в JavaDoc к этому методу и у меня вопрос: а как перехватить событие
> > закрытия окна посылаемые другими командами, собственно
> > ActionFactory.QUIT и ему подобных?
>
> > P.S. Небольшой оффтопик: забавную вещь нашел пока гуглил этот вопрос -
> > наткнулся на сырцы RSSOwl (http://www.rssowl.org/):
> > public boolean preWindowShellClose() {
> >    final boolean[] res = new boolean[] { true };
> >    .... blach-blach-blach...
> >    if ( чего-то )
> >        res[0] = false;
> >    .... blach-blach-blach...
> >    return res[0];
> > }
>
> > Вот любопытно мне стало - нафига массив нужен? Это теперь модно так
> > boolean  использовать или всё таки WTF? Полный код можно посмотреть
> > тут:
>

> >http://www.google.com/codesearch/p?hl=en#ABBYt4EsxlY/trunk/org.rssowl...
>
>

Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages