У меня есть часть просмотра с закрываемым значением true. Пользователь нажимает x. Я хочу скрыть область просмотра, а не закрыть ее. Как это может быть сделано?
Скрыть вместо удаления видовую часть при нажатии x
Ответы (4)
Если ваше приложение было создано на основе шаблона, вносящего вклад в пользовательский интерфейс, оно должно иметь файл WorkbenchWindowAdvisor в одном из предварительно созданных пакетов. Не уверен в точных деталях реализации, чтобы скрыть окно при закрытии, но похоже, что вам нужно будет изменить метод preWindowShellClose в реализации WorkbenchWindowAdvisor вашего приложения.
Это возможно, но это сложно!
Закрытие представления фактически «скрывает» его от текущей точки зрения. Если вид нигде не отображается, он удаляется.
Вы можете проверить это, добавив две перспективы в ваше приложение RCP, включив в них один и тот же вид. Теперь закрытие вида в перспективе A не удалит его, потому что он все еще открыт в перспективе B.
Поэтому, чтобы избежать удаления представления, вы должны просто убедиться, что оно включено в другую перспективу. Если ваше приложение RCP не использует перспективы, вы можете использовать «скрытую» перспективу, которая никогда не отображается, но где вы храните все «скрытые» представления, чтобы они не удалялись.
См. также Как закрыть ViewPart в Eclipse?, где полная противоположность запрашивается.
Вы можете попробовать это:
shell.addShellListener(new ShellListener() {
public void shellIconified(ShellEvent e) {
}
public void shellDeiconified(ShellEvent e) {
}
public void shellDeactivated(ShellEvent e) {
}
public void shellClosed(ShellEvent e) {
shell.setVisible(false);
e.doit = false;
}
public void shellActivated(ShellEvent e) {
}
});
Где shell
— это непосредственная родительская оболочка Viewpart. Главное, на что следует обратить внимание, это e.doit=false
, который по существу сводит на нет событие закрытия.
Насколько мне известно, это вообще невозможно. По сути, часть рабочей среды совместно используется всеми перспективами окна рабочей среды, в которых редактор или представление «открыты». Поэтому, когда вы переключаете перспективу, размер части на Composite
просто изменяется, чтобы соответствовать новому сайту презентации, на котором должна отображаться часть.
Когда часть закрыта для определенной перспективы, она скрыта, как вы хотите. Когда деталь скрыта для всех перспектив окна, она удаляется. И, насколько я понимаю, предотвратить это невозможно.