Как сделать вкладку детали неактивной (отключить) в Eclipse RCP?

У меня есть partStack с большим количеством частей во вкладках. Я хотел бы знать, как я могу сделать вкладки неактивными, когда они мне не нужны, и активными, когда они мне нужны.

Под неактивным я подразумеваю вкладку, которая видна, но я не могу щелкнуть по ней, и это похоже на отключение функции (например, текст на ней серый, а не черный).

Я использую e4 RCP (с Application.e4xmi).

Спасибо за помощь.


person xav9211    schedule 07.12.2015    source источник
comment
Это RCP e4 (с использованием Application.e4xmi) или RCP совместимости с 3.x?   -  person greg-449    schedule 07.12.2015
comment
Я использую e4 RCP (обновлено в вопросе).   -  person xav9211    schedule 07.12.2015


Ответы (3)


Обработка выбора частей в стеке деталей осуществляется средством визуализации стека частей org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer, которое в основном использует CTabFolder.

Вы можете использовать фабрику средств визуализации, чтобы переопределить средство визуализации стека см. здесь

Вы можете расширить существующий класс StackRenderer и переопределить методы, чтобы изменить его поведение. В этом случае, вероятно, метод hookControllerLogic. Но вам придется внимательно изучить источник, чтобы увидеть, что нужно сделать.

person greg-449    schedule 07.12.2015

Вы можете попробовать использовать EPartService для управления частью, но я думаю, что активная/неактивная часть просто означает видимость или нет.

Или вы можете просто вручную отключить все элементы управления swt ????

person Community    schedule 30.01.2016

Используйте фабрику Renderer для переопределения средства визуализации стека. Расширьте существующий класс StackRenderer и переопределите методы hookControllerLogic() или активировать() с пустой реализацией.

Пример-

public class MyE4Part extends ContributedPartRenderer {

/*
 * Don't activate the Part on part selection. part should not be gain the focus on any
 * selection on part .
 */

@Override
public void hookControllerLogic( MUIElement me )
{
    //Don't do anything.
    //super.hookControllerLogic( me );
}

}

person Yogesh Bitake    schedule 18.08.2017