2013-10-11 4 views
1

Я сделал две страницы мастера в плагине eclipse, на самом деле я добавил другой тип проекта, называемый MyProject, поэтому, когда пользователь делает New-> MyProject (аналогично New-> Java), появляется страница мастера для MyProject. Этот MyProject имеет две страницы, заполните страницу1 и нажмите «Далее», чтобы перейти на страницу2. Я добавил контекстную помощь в общественного недействительными CreateControl (Composite родителю) страницы, которая создает страницу мастера с помощью, {Первая линия для Page1.java и второй линии для page2.java}Как отобразить контекстно-зависимую справку для нашего собственного мастера?

PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "my.plugin.id.context_id_page1"); 

и

PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "my.plugin.id.context_id_page2"); 

plugin.xml имеет:

<extension 
     point="org.eclipse.help.contexts"> 
     <contexts 
      file="contexts.xml" 
      plugin="my.plugin.id"> 
     </contexts> 
    </extension> 

И contexts.xml имеет:

<contexts> 
    <context id="my.plugin.id.context_id_page1"> 
     <description>This wizard helps you in creating MyProject.</description> 
     <topic href="http://www.google.com" label="Google it!" /> 
    </context> 
    <context id="my.plugin.id.context_id_page2"> 
      <description>This wizard helps you in creating MyProject Page2.</description> 
      <topic href="http://www.google.com" label="Google it!" /> 
    </context> 
</contexts> 

Справка появляется, когда я использую F1 или знак вопроса на левой стороне, но если я перейду на страницу2, а затем вернусь на страницу1, помощь не появится! То есть, New-> MyProject, в Page1 и Page2 в первый раз он работает, теперь, если я перемещаюсь в обратном направлении, контекстная справка не работает!
Как это решить?
И все остальные функции работают нормально!
Спасибо за вашу помощь заранее.

ответ

2

Я думаю, вам нужно установить справку на Composite, которую вы создаете для страницы мастера, не на исходном композите.

Вы могли бы использовать:

PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), "context id"); 

может уверенному это после вызова setControl().

+1

это помогло, но по-прежнему существует проблема, что, когда я ударяю назад, помощь не меняется, пока я не сосредоточусь на одном из полей. Вы узнаете об этом, дайте мне знать. Благодаря! – Destructor

+2

Попробуйте переопределить 'public void setVisible (final boolean visible)' на странице мастера и сделать фокус, когда страница станет видимой. –

Смежные вопросы