0

のサブクラスがありMultiViewEditorElementます。クラスがインスタンス化されていることはわかっていますが、何らかの理由で、ファイルを開いたときに componentOpened と componentActivated が起動されません。ここで何か間違っていますか?関連すると思われるコードのみを含めました。クラス全体が必要な場合はお知らせください。

クラス宣言

@MultiViewElement.Registration(
    displayName = "#LBL_puml_EDITOR",
iconBase = "org/netbeans/modules/plantumlnb/icon.png",
mimeType = "text/plain",
persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID = "puml",
position = 1000)
@Messages("LBL_puml_EDITOR=Source")
public final class pumlVisualElement extends MultiViewEditorElement {


public pumlVisualElement(Lookup lkp) {
    super(lkp);
    obj = lkp.lookup(pumlDataObject.class);
    System.out.println("================ Inside Constructor.");
    assert obj != null;
}


@Override
public void componentOpened() {
    super.componentOpened();
    System.out.println(" ========================= Here");
}

@Override
public void componentActivated() {
    super.componentActivated();
    System.out.println(" ========================= Here");        
}

}

上記クラスをインスタンス化するメソッド

@MultiViewElement.Registration(
    displayName = "#LBL_puml_EDITOR",
iconBase = "org/netbeans/modules/plantumlnb/icon.png",
mimeType = "text/x-puml",
persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID = "puml",
position = 1200)
@Messages("LBL_puml_EDITOR=Source")
public static MultiViewEditorElement createEditor(Lookup lkp) {
    return ((MultiViewEditorElement) new pumlVisualElement(lkp));
}
4

1 に答える 1

0

これは、カスタム MIME タイプがなかったために発生しています。基本的に上記のコードでは、タブに 3 つの異なるビュー、2 つのソース タブ、1 つの履歴タブが表示されていました。

@MultiViewElement.Registration(
    displayName = "#LBL_puml_EDITOR",
iconBase = "org/netbeans/modules/plantumlnb/icon.png",
mimeType = "text/x-puml",
persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID = "puml",
position = 1000)
@Messages("LBL_puml_EDITOR=Source")
public final class pumlVisualElement extends MultiViewEditorElement {


public pumlVisualElement(Lookup lkp) {
    super(lkp);
    obj = lkp.lookup(pumlDataObject.class);
    System.out.println("================ Inside Constructor.");
    assert obj != null;
}


@Override
public void componentOpened() {
    super.componentOpened();
    System.out.println(" ========================= Here");
}

@Override
public void componentActivated() {
    super.componentActivated();
    System.out.println(" ========================= Here");        
}

}

メソッドから注釈を削除します。

public static MultiViewEditorElement createEditor(Lookup lkp) {
    return ((MultiViewEditorElement) new pumlVisualElement(lkp));
}
于 2013-03-23T19:50:41.040 に答える