Я работаю над eclipse RCP/RAP с одним источником. мне нужно выполнить некоторый код в методах resotreState()
и saveState()
класса ApplicationWorkbenchAdvisor
, который нужен только для RCP, но не для RAP. Каков наилучший способ реализовать это?
Мне нужно выполнить некоторый код только для RCP, а не для RAP, как я могу это сделать?
Ответы (1)
Если код, который должен выполняться только в RCP, компилируется на обеих платформах, вы можете запросить SWT#getPlatform()
следующим образом:
if( !SWT.getPlatform().startsWith( "rap" ) ) {
// execute RCP code
}
Если код RCP использует API, недоступный на обеих платформах, я рекомендую извлечь код во фрагмент и развернуть только этот фрагмент с приложениями RCP. Чтобы узнать больше об этом, поищите «рэп из одного источника».
person
Rüdiger Herrmann
schedule
25.01.2015
См. следующий код:
@Override
public IStatus saveState(IMemento memento) {
TerminalCompatibility.saveState(memento);
ServerStorageController.getInstance().saveState(memento);
return super.saveState(memento);
}
— этот код зависит от IMemento. Могу ли я переместить этот код в конкретный фрагмент RCP. я не хочу писать пустые классы совместимости.
- person Sharif; 28.01.2015
IMemento
доступен на обеих платформах, так что вы можете использовать первый подход и защитить код, который сохраняет состояние с условием if.
- person Rüdiger Herrmann; 28.01.2015