Я занимаюсь разработкой приложения Rcl для Eclipse, в которое входят различные плагины.Каждый плагин имеет свой собственный процессор, который программно вставляет дополнительные элементы в возможно существующие MToolBars (с существующими MToolBarElements).Порядок вставленных элементов зависит от порядка инициализации плагинов, который не является детерминированным, за исключением зависимостей между плагинами.Но создание искусственной зависимости между плагинами для наведения порядка инициализации плагинов не является альтернативой.
Существует ли нестандартный способ размещения элементов относительно друг друга?Например, элемент X всегда должен вставляться в панель инструментов после элемента Y с идентификатором «foo.bar».Или я должен сам управлять порядком, в котором элементы добавляются на панель инструментов?
Каждый из плагинов определяет свой собственный процессор
public class ApplicationModelProcessor {
@Execute
public void execute(
final MApplication application,
final ToolBarBuilder toolbarBuilder) {
// ToolBarBuilder is a class providing methods to configure toolbar
// elements and appending them to existing toolbars. So after the
// configuration of the builder "build" is called and toolbar elements
// are added to (existing) toolbars according to the configuration of
// the builder
toolbarBuilder.doSomeConfiguration();
toolbarBuilder.build();
}
В классе ToolBarBuilder существует метод updateToolItemкоторый эффективно добавляет MToolBarElement к MToolBar
public class TooBarBuilder {
public MToolBarElement build() {
// The code happening here basically searches for existing MToolBar or
// creates a new MToolBar according to a given configuration of the
// builder
MToolBar toolbar = findOrCreateToolBar();
// and adds a new MToolBarElement to the given MToolBar
return updateToolItem(toolbar);
}
// This method is invoked at some point during the execution of the provided processor. The toolBar is looked up before and provided to the method-
private MToolBarElement updateToolItem(final MToolBar toolBar) {
final MToolBarElement result = createHandleToolItem();
// At this point I could manage the order by myself but is there a better way to do this?
toolBar.getChildren().add(result);
return result;
}
}
Некоторые плагины предоставляют MToolBarElements для того же MToolBar, хотя их собственный ApplicationModelProcessor зарегистрирован в точке расширения "org.eclipse.e4.workbench.model".
GIVEN плагин, обеспечивающий элементы панели инструментов 1 и 2
И еще один плагин, обеспечивающий панель инструментов элементов 3
WHEN запускВ приложении
THEN порядок элементов панели инструментов должен быть постоянным (абсолютный порядок элементов не так важен, но порядок всегда должен оставаться неизменным)
В настоящее время иногда это 1,2,3 или 3,2,1