/* * Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC * All rights reserved. * * The source code of this document is proprietary work, and is not licensed for * distribution. For information about licensing, contact Sam Harwell at: * sam@tunnelvisionlabs.com */ package org.tvl.goworks.editor.go.navigation; import org.antlr.works.editor.antlr4.navigation.TreeNavigatorPanel; import org.netbeans.api.editor.mimelookup.MimeRegistration; import org.netbeans.spi.editor.highlighting.HighlightsLayer; import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory; import org.netbeans.spi.editor.highlighting.ZOrder; import org.netbeans.spi.navigator.NavigatorPanel; import org.openide.filesystems.FileObject; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.tvl.goworks.editor.GoEditorKit; import org.tvl.goworks.editor.go.GoParserDataDefinitions; /** * * @author Sam Harwell */ @NbBundle.Messages({ "LBL_ParseTreeDefinition=Parse Tree (Development)" }) @NavigatorPanel.Registration(mimeType=GoEditorKit.GO_MIME_TYPE, position = 9999, displayName = "#LBL_ParseTreeDefinition") public class GoParseTreeNavigatorPanel extends TreeNavigatorPanel { private static volatile GoParseTreeNavigatorPanel INSTANCE; private FileObject _currentFile; public GoParseTreeNavigatorPanel() { super(GoEditorKit.GO_MIME_TYPE, GoParserDataDefinitions.COMPILED_MODEL, GoParserDataDefinitions.PARSE_TREE_UI_VISIBLE); } public static GoParseTreeNavigatorPanel getInstance() { return INSTANCE; } @Override protected FileObject getCurrentFile() { return _currentFile; } public void setCurrentFile(FileObject currentFile) { this._currentFile = currentFile; } @Override public void panelActivated(Lookup context) { super.panelActivated(context); INSTANCE = this; _currentFile = null; } @Override public void panelDeactivated() { super.panelDeactivated(); INSTANCE = null; _currentFile = null; } @MimeRegistration(mimeType=GoEditorKit.GO_MIME_TYPE, service=HighlightsLayerFactory.class) public static final class HighlightsLayerFactoryImpl implements HighlightsLayerFactory { @Override public HighlightsLayer[] createLayers(Context context) { return new HighlightsLayer[] { HighlightsLayer.create(GoParseTreeNavigatorPanel.class.getName(), ZOrder.DEFAULT_RACK, true, getBag(context.getDocument())) }; } } }