RCP e4以编程方式在Part中使用HandledToolItem创建工具栏

时间:2015-11-06 11:03:44

标签: rcp e4

我的MToolbar中有关HandledToolItem的问题。 按下按钮时,应用程序应创建一个带有工具栏和一个HandledToolItem的新零件。问题是HandledToolItem总是灰色,我不知道为什么。

final MPart mPart = modelService.createModelElement(MPart.class);
mPart.setLabel("Test");
mPart.setElementId("newid");
mPart.setContributionURI("bundleclass://something");
mPart.setCloseable(true);

// create Toolbar
final MToolBar mBar = modelService.createModelElement(MToolBar.class);
mPart.setToolbar(mBar);

// create HanledToolItem
final MHandledToolItem mItem = modelService.createModelElement(MHandledToolItem.class);
mBar.getChildren().add(mItem);

// create Handle and Command
final MHandler toolHandler = modelService.createModelElement(MHandler.class);
final MCommand toolCommand = modelService.createModelElement(MCommand.class);

toolCommand.setElementId("dsadsadsa");
toolHandler.setCommand(toolCommand);
toolHandler.setContributionURI("bundleclass://something");

mItem.setIconURI("platform:/plugin/RCPCAN/icons/icon_con_scroll_lock.png");
mItem.setTooltip("Lock Table Scrollbar");
mItem.setCommand(toolCommand);
mItem.setEnabled(true);

// show part
partService.showPart(mPart, PartState.ACTIVATE);

1 个答案:

答案 0 :(得分:1)

您必须将您创建的任何处理程序添加到应用程序或组件的处理程序列表中:

@Inject
MApplication app;

...

app.getHandlers().add(handler);

同样,必须将命令添加到getCommands列表中。

注意:在包含部件设计的Application.e4xmi中使用'PartDescriptor'要容易得多。然后你可以打电话

partService.showPart("part descriptor id", PartState.ACTIVATE);

无需在代码中创建任何内容。

如果要创建零件的多个副本,请使用:

MPart newPart = partService.createPart("part descriptor id");

partService.showPart(newPart, PartState.ACTIVATE);