2013-03-23 57 views
0

我有一个MultiViewEditorElement的子类。我知道该类正在实例化,但由于某种原因,打开文件时,componentOpened和componentActivated未被触发。我在这里做错了什么?我只包括了我认为相关的代码,请让我知道你是否需要整个班级。componentOpened未在MultiViewEditorElement的子类上触发

类声明

@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)); 
} 

回答

0

这是发生,因为我没有自定义MIME类型。因此,基本上与上面的代码,我看到一个选项卡中的三个不同的视图,两个源标签和一个历史标签。

@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)); 
}