Как сделать вкладку детали неактивной (отключить) в 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)


arrow_upward
0
arrow_downward

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

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

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

person greg-449    schedule 07.12.2015

arrow_upward
0
arrow_downward

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

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

person Community    schedule 30.01.2016

arrow_upward
0
arrow_downward

Используйте фабрику 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