Как заставить Custom View полностью занимать перспективу в приложении RCP - PullRequest
0 голосов
/ 25 ноября 2011

Я создал приложение RCP с представлением в качестве шаблона. Первоначально после создания проекта мой класс перспективы выглядит следующим образом

import org.eclipse.ui.IPageLayout;

public class Perspective implements IPerspectiveFactory {

    public void createInitialLayout(IPageLayout layout) {
        layout.setEditorAreaVisible(false);
        layout.setFixed(true);

    }

}

Я создал новое представление и добавил его в org.eclipse.uiРасширение .views с именем ErrorView и сгенерировало соответствующий класс этого представления.Я внес небольшое изменение в класс перспективы

public class Perspective implements IPerspectiveFactory {
     private URL u;
        private HttpURLConnection huc;
    public void createInitialLayout(IPageLayout layout) {
        try{
            u= new URL("https://google.com/");
            huc = ( HttpURLConnection )u.openConnection ();
            huc.setRequestMethod("GET");
            huc.connect();
        if(huc.getResponseCode()==200){
        layout.setEditorAreaVisible(false);
        layout.setFixed(true);
         }
         else{
             layout.addStandaloneView(View1.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
             layout.getViewLayout(View1.ID).setCloseable(false);
             layout.setEditorAreaVisible(false);
         }
        }
         catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                layout.addStandaloneView(View1.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
                layout.getViewLayout(View1.ID).setCloseable(false);
                layout.setEditorAreaVisible(false);
            }
    }
}

Определенно выполняется блок else / catch

output

Как заставить ErrorView занимать всю перспективу, не показываяБазовый вид или просто скрыть базу (вид по умолчанию) Полностью.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Вы не можете сделать это в IPerspectiveFactory, поскольку экземпляр этого класса выполняется только один раз, чтобы определить макет при первом открытии перспективы.После этого макет известен и экземпляр не запускается повторно.

Но во время выполнения, если вы можете определить, что хотите, чтобы ваш ErrorView доминировал над вашей перспективой, вы можете использовать org.eclipse.ui.IWorkbenchPage.setPartState(IWorkbenchPartReference, int) для МАКСИМАЦИИ этой части.1004 *

РЕДАКТИРОВАТЬ: API информация

См. Подключение к Workbench для получения дополнительной информации.Вы можете получить IWorkbenchPage из своего представления или сайта редактора, если вы являетесь частью, или из IWorkbenchWindow, которое вы можете получить из ExecutionEvent, если вы находитесь в обработчике команд.Вы также можете получить активное IWorkbenchWindow из статики на org.eclipse.ui.PlatformUI, хотя это наименее предпочтительный метод.

1 голос
/ 25 ноября 2011

Представление определяется либо в вашем классе Perspective, либо в plugin.xml.Откройте MANIFEST.MF, перейдите на вкладку Extensions и выберите org.eclipse.ui.perspectiveExtensions.Вот виды перспективы, определяемой конфигурацией.Удалить ваш «вид по умолчанию».Затем вы также можете удалить представление в узле org.eclipse.ui.views

...