Откройте Eclipse Welcome Page на страницу, отличную от «home-page-id» - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть правильно работающая программа Eclipse RCP, которая открывает расширение org.eclipse.ui.intro до идентификатор домашней страницы из root.xhtml .Внутри домашней страницы root.xhtml есть ссылки на другие страницы XHTML, на которых можно получить помощь.

Я пытаюсь создать кнопки через мой графический интерфейс, которые при нажатии на них будутоткроет вам правильную страницу документации по XHTML.Пока что я могу понять, как заставить кнопки перейти на страницу root.xhtml , но я не могу понять, как заставить вступительную страницу перейти на другую страницу.Вот код, который я использую сейчас, чтобы открыть вводную страницу:

help_button.addSelectionListener(new SelectionAdapter()<br> {<br> public void widgetSelected(SelectionEvent event)<br> {<br> ActionFactory.INTRO.create(DataStore.getInstance().getCurrentWorkbenchPage().getWorkbenchWindow()).run();<br> }<br> })

Например, я пытаюсь сделать что-то вроде этого, где строка гиперссылки в кавычках точно такая жев качестве гиперссылки в файле root.xhtml :

 ActionFactory.INTRO.create(DataStore.getInstance().getCurrentWorkbenchPage().getWorkbenchWindow()).run().navigateTo("http://org.eclipse.ui.intro/showPage?id=setuplogging");

1 Ответ

0 голосов
/ 22 ноября 2011

Я смог понять это, это было довольно трудоемким и болезненным - надеюсь, это кому-нибудь поможет.По крайней мере, ответ - несколько строк кода.

Вы должны показать вступительный сайт getIntroSite () , прежде чем изменять URL, иначе вы получите исключение нулевого указателя в IntroURL.Если вы получаете исключение нулевого указателя при вызове createIntroURL () , это может быть связано с тем, что интро-сайт еще не открыт в вашем графическом интерфейсе, не обязательно, что ваша ссылка плохая.Кроме того, если вступление уже открыто, не пытайтесь открыть его снова, потому что оно изменит страницу на домашнюю, а не на страницу, идентифицированную с page_id.Итак, для этого класса я сделал кнопку помощи переключателем, означающим, что если окно вступления открыто, то кнопка нажата.В некоторых случаях я закрываю вводный сайт, если он уже открыт при нажатии кнопки (пример ниже), в других случаях я просто не обновляю вводный сайт, чтобы он не переходил на домашнюю страницу (пример не показан,но просто опустите первую часть блока if ).

Если вы попробуете код ActionFactory run () в моем вопросе, он отобразит сайт вступления ввсе окно.Я хотел, чтобы вводный сайт был подокном в перспективе, поэтому я использовал метод ниже, установив showIntro (null, true) - истинное значение не занимает все окно (они вызываютЛогический режим ожидания).

Идентификатор страницы соответствует настройке идентификатора страницы в XML-файле документации при настройке точки расширения org.eclipse.ui.intro.config content переменная.

</p> <pre> final IIntroPart intro = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(). getWorkbenchWindow().getWorkbench().getIntroManager(). getIntro(); if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(). getWorkbenchWindow().getWorkbench().getIntroManager(). isIntroStandby(intro)) { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(). getWorkbenchWindow().getWorkbench().getIntroManager(). closeIntro(intro); help_button.setSelection(false); } else { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(). getWorkbenchWindow().getWorkbench().getIntroManager(). showIntro(null, true).getIntroSite(); IIntroURL introURL = IntroURLFactory.createIntroURL( "http://org.eclipse.ui.intro/showPage?id=" + page_id); introURL.execute(); help_button.setSelection(true); }

...