nesceditor.java

来自「plugin for eclipse」· Java 代码 · 共 151 行

JAVA
151
字号
package isis.tinydt.editors.nesceditor;

import isis.anp.nesc.common.NesCObjectTreeBuilderContext;
import isis.anp.nesc.ot.NesCConfigurationFile;
import isis.anp.nesc.ot.NesCFile;
import isis.tinydt.TinydtProject;

import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.MultiPageEditorPart;


public class NesCEditor extends MultiPageEditorPart
{    
    private NesCTextEditor     textEditor    = null;
    private ConfigurationGraph configGraph   = null;
    private boolean            configVisible = false;

    public NesCEditor()
    {
        super();        
    }
    
    public void init(IEditorSite site, IEditorInput input) throws PartInitException
    {
        super.init(site, input);               
    }    
    
    public NesCTextEditor getTextEditor()
    {
        return textEditor;
    }

    public ConfigurationGraph getConfigGraph()
    {
        return configGraph;
    }
    
    public void gotoMarker(IMarker marker) 
    {
        setActivePage(0);
        //textEditor.gotoMarker(marker);
        IDE.gotoMarker(getEditor(0), marker);
    }
    
    public boolean isConfigVisible()
    {
        return configVisible;        
    }

    public void showConfiguration(boolean configVisible)
    {
        if(this.configVisible != configVisible)
        {
            this.configVisible = configVisible;
            if(configVisible)
            {
                int index = addPage(configGraph);
                setPageText(index, "Configuration Graph");
            }
            else
            {
                if( getPageCount() > 1)
                    removePage(1);
            }
        }
    }
    
    public void updateConfigStatus()
    {
        IFileEditorInput f = (IFileEditorInput)getEditorInput();
        TinydtProject p = TinydtProject.getTinydtProject(f.getFile().getProject());
        
        NesCObjectTreeBuilderContext tree = p.getObjectTreeCtx();
        if( tree != null) 
        {
            try
            {                              
                NesCFile nf = tree.getObjectTree(f.getFile().getLocation().lastSegment().toString());
                if( nf instanceof NesCConfigurationFile )
                {                    
                    configGraph.setConfigFile( (NesCConfigurationFile)nf );                    
                    showConfiguration(true);
                }
                else
                {
                    configGraph.setConfigFile( null );
                    showConfiguration(false);
                }
            }
            catch(Exception e)
            {                
                showConfiguration(false);
            }
        }
        else
        {
            showConfiguration(false);
        }
    }

    public boolean isSaveAsAllowed()
    {
        return true;
    }

    public void doSaveAs()
    {
        IEditorPart editor = getEditor(0);
        editor.doSaveAs();
        setPageText(0, editor.getTitle());
        setInput(editor.getEditorInput());
    }

    public void doSave(IProgressMonitor monitor)
    {
        getEditor(0).doSave(monitor);
    }

    protected void createPages()
    {
        try
        {
            configGraph = new ConfigurationGraph(getContainer(), SWT.NONE);
            textEditor = new NesCTextEditor();
            int index = addPage(textEditor, getEditorInput());
            setPageText(index, "Source");
            setPartName(getEditorInput().getName());
            
            updateConfigStatus();
        }
        catch(PartInitException e)
        {
            e.printStackTrace();
        }
    }

    public void dispose()
    {
        super.dispose();
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?