2015-11-06 71 views
0

處用HandledToolItem創建工具欄。 按下按鈕時,應用程序應該創建一個帶有工具欄和一個HandledToolItem的新零件。問題是HandledToolItem總是呈灰色,我不知道爲什麼。也許你們有一個想法。RCP e4在我的MToolbar中遇到了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); 
+0

是否有一個原因,爲什麼你不只是使用「PartDescriptor」,這將讓你設計這一切都在Application.e4xmi? –

回答

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); 
+0

如果我想用每個按鈕單擊創建一個新零件,該怎麼辦?我怎麼才能做到這一點。我看到它的方式,我將不得不以編程方式創建一個新零件。我如何在工作臺中使用我的描述來做到這一點? – todayihateprogramming

+0

使用'EPartService.createPart'從描述符中創建幾個部分。增加了答案的細節。 –

+0

好吧我試着按照你所說的去做,但是我用partService.createPart(「part descriptor id」)創建的部分總是空的,即使這個id是最初的正確的,雖然這會比我的方法更容易 – todayihateprogramming