public static MultiViewElement createMultiViewEditorElement()

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