in extra/java.debugjavac/src/main/java/org/netbeans/modules/java/debugjavac/DecompiledTab.java [219:314]
public static MultiViewElement createMultiViewEditorElement(Lookup context) {
final DataObject d = context.lookup(DataObject.class);
final FileObject decompiled = findDecompiled(d.getPrimaryFile(), true);
return new MultiViewElement() {
private JEditorPane pane;
private JComponent scrollPane;
private final FileChangeListener fileListener = new FileChangeAdapter() {
@Override public void fileAttributeChanged(FileAttributeEvent fe) {
decompileIntoDocumentLater(d.getPrimaryFile());
}
};
@Override
public JComponent getVisualRepresentation() {
if (pane == null) {
pane = new JEditorPane();
pane.setContentType("text/x-java-decompiled");
pane.setEditorKit(new NbEditorKit() {
@Override public String getContentType() {
return "text/x-java-decompiled";
}
});
Document doc = decompiledCodeDocument(d.getPrimaryFile());
if (doc != null)
pane.setDocument(doc);
scrollPane = doc instanceof NbEditorDocument ? (JComponent) ((NbEditorDocument) doc).createEditor(pane) : new JScrollPane(pane);
}
return scrollPane;
}
private DecompileToolbar toolbar;
@Override
public JComponent getToolbarRepresentation() {
if (toolbar == null) {
FileObject decompiled = findDecompiled(d.getPrimaryFile(), true);
toolbar = new DecompileToolbar(decompiled, d.getPrimaryFile());
}
return toolbar;
}
@Override
public Action[] getActions() {
return new Action[0];
}
@Override
public Lookup getLookup() {
return Lookup.EMPTY;
}
@Override
public void componentOpened() {
}
@Override
public void componentClosed() {
}
@Override
public void componentShowing() {
Document doc = decompiledCodeDocument(d.getPrimaryFile());
if (doc != null) doc.putProperty(DECOMPILE_TAB_ACTIVE, true);
decompiled.addFileChangeListener(fileListener);
decompileIntoDocumentLater(d.getPrimaryFile());
}
@Override
public void componentHidden() {
Document doc = decompiledCodeDocument(d.getPrimaryFile());
if (doc != null) doc.putProperty(DECOMPILE_TAB_ACTIVE, null);
decompiled.removeFileChangeListener(fileListener);
}
@Override
public void componentActivated() {
}
@Override
public void componentDeactivated() {
}
@Override
public UndoRedo getUndoRedo() {
return null;
}
@Override
public void setMultiViewCallback(MultiViewElementCallback callback) {
}
@Override
public CloseOperationState canCloseElement() {
return CloseOperationState.STATE_OK;
}
};
}