0

私は実行時にMWindowを作成します

MWindow window = _modelService.createModelElement(MWindow.class);
window.setWidth(200);
window.setHeight(300);
// add new Window to the application 
// @Inject
// MApplication _application;
_application.getChildren().add(window);

パーツを追加するよりも

EModelService windowModelService = window.getContext().get(EModelService.class);
EPartService windowPartService = window.getContext().get(EPartService.class);

// find part if exists
MPart part = windowPartService.findPart("partId");

if (part == null) {
    // create if not exists
    part = windowPartService.createPart("partId");
}


// Required if initial not visible
part.setVisible(true);

// Show the part
MPart newPart = windowPartService.showPart(part, PartState.VISIBLE);

しかし、このウィンドウが使用されなくなった後、このウィンドウを閉じたり破棄したりする方法がわかりません。Mwindow には、close / dispose または exit 機能はありません。そして、アプリケーションの子から単純に削除しようとすると、npe になります。

ウィンドウを取り除く方法は?

4

1 に答える 1

4

EPartService.hidePart(MPart)またはを使用しhidePart(MPart, boolean)ます。

hidePart(MPart)通常はパーツを非表示にするだけですが、removeOnHide値がパーツのタグに設定されている場合は、パーツも削除されます。

hidePart(MPart, true)タグに関係なく強制的に削除できます。

編集:

ウィンドウ呼び出しを閉じるには、ウィンドウMWindow.setToBeRendered(false)はアプリケーション モデルに残りますが、リソースなどは破棄されます。

于 2013-09-10T10:09:35.120 に答える