Как связать страницу родительских предпочтений со страницей дочерних предпочтений в Eclipse RCP? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть страница настроек в Eclipse, которая содержит флажок.Это родительская страница предпочтений.

Дочерняя страница предпочтений должна содержать разные редакторы полей, основанные на значениях некоторых флажков на родительской странице.

Пример: если флажок в родительском флажке установлен, создать текстовое полеу ребенка.

Я хочу обновить / перерисовать дочернюю страницу, когда я нажимаю Применить.

Я пытался сделать это следующим образом:

Мой класс дочерней страницывыглядит следующим образом:

public class MyChildPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage

Перезапись метода setVisible:

@Override
public void setVisible(final boolean visible)
{        
    super.setVisible(visible);        
    if (visible)
        createFieldEditors();            
}

Мой метод createFieldEditors каждый раз создает поля с использованием одного и того же Composite.

Тем не менее обновление не происходит,

Есть ли способ повторно инициировать создание страницы предпочтений при изменении фокуса / видимости?

На этот вопрос не ответили, и он похож: Обновление содержимого предпочтения затмениястраница

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Редакторы полей следует создавать только один раз.

Вы можете переопределить метод propertyChange для FieldEditorPreferencePage, чтобы получать информацию о каждом изменении свойства предпочтения:

@Override
public void propertyChange(PropertyChangeEvent event) {

  String propertyId = event.getProperty();

  ... 

  super.propertyChange();
}
0 голосов
/ 19 сентября 2018

Вы могли бы попробовать позвонить FieldEditorPreferencePage#initialize() вместо этого?Это вызывает load() для каждого из редакторов полей.

...