tinydtview.java

来自「plugin for eclipse」· Java 代码 · 共 482 行 · 第 1/2 页

JAVA
482
字号
package isis.tinydt.views;

import isis.anp.common.TNode;
import isis.anp.nesc.ot.ComponentAlias;
import isis.anp.nesc.ot.Configuration;
import isis.anp.nesc.ot.Declaration;
import isis.anp.nesc.ot.FunctionDeclaration;
import isis.anp.nesc.ot.FunctionDefinition;
import isis.anp.nesc.ot.Interface;
import isis.anp.nesc.ot.InterfacePort;
import isis.anp.nesc.ot.Module;
import isis.anp.nesc.ot.ModuleImplementation;
import isis.anp.nesc.ot.Port;
import isis.anp.nesc.ot.types.EnumType;
import isis.tinydt.TinydtPlugin;
import isis.tinydt.TinydtProject;
import isis.tinydt.Utils;
import isis.tinydt.editors.nesceditor.NesCEditor;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.ViewPart;


public class TinydtView extends ViewPart
{
    public static final int MAX_TREE_LEVEL = 20;
    
    /*TODO:
        - az editorok updatelese (confiuration page mutatas)
        - pageek eleve csak akkor kellenenek ha configrol van szo
        - temp konyvtarba menteni hogy folyamatosan build legyen*/
    
    
    private TreeViewer        viewer        = null;

    private static TinydtView tinydtView    = null;
    protected ImageRegistry   imageRegistry = null;
    protected RootItem        tree          = new RootItem();

    class BaseItem extends ArrayList
    { 
        BaseItem parent;
        String   label;

        public BaseItem(BaseItem parent)
        {
            this.parent = parent;
            if(parent != null)
                parent.add(this);
        }

        public BaseItem getParent()
        {
            return parent;
        }

        public void setLabel(String label)
        {
            this.label = label;
        }

        public String getLabel()
        {
            return label;
        }
        
        public String toString()
        {
            return getClass().toString() + "," + label + "," + size() + "," + parent;
        }
    }

    class RootItem extends BaseItem
    {
        public RootItem()
        {
            super(null);
            label = "root";
        }
    }

    class ProjectItem extends BaseItem
    {
        TinydtProject project;

        public ProjectItem(TinydtProject project, BaseItem parent)
        {
            super(parent);
            this.parent = parent;
            this.project = project;
            label = project.getProject().getName();
        }
    }

    class ConfigItem extends BaseItem
    {
        Configuration config;

        public ConfigItem(Configuration config, BaseItem parent)
        {
            super(parent);
            this.parent = parent;
            this.config = config;
            label = config.getName();
        }
    }

    class ModuleItem extends BaseItem
    {
        Module module;

        public ModuleItem(Module module, BaseItem parent)
        {
            super(parent);
            this.parent = parent;
            this.module = module;
            label = module.getName();
        }
    }

    class DeclarationItem extends BaseItem
    {
        Declaration decl;

        public DeclarationItem(Declaration decl, BaseItem parent)
        {
            super(parent);
            this.parent = parent;
            this.decl = decl;
            if(decl.getName() == null)
            {
                if(decl.getType() instanceof EnumType)
                    label = "enum (unnamed)";
                else
                    label = "(unnamed)";
            }
            else
            {
                if(decl instanceof FunctionDeclaration || decl instanceof FunctionDefinition)
                {
                    FunctionDeclaration fd = (FunctionDeclaration) decl;                    
                    label = Utils.getFuncDeclString(fd);
                }
                else
                    label = decl.getName();
            }
        }
    }

    class InterfaceItem extends BaseItem
    {
        InterfacePort port;

        public InterfaceItem(InterfacePort port, BaseItem parent)
        {
            super(parent);
            this.parent = parent;
            this.port = port;
            label = port.getInterface().getName();
        }
    }

    class ViewContentProvider implements ITreeContentProvider
    {
        public Object[] getChildren(Object parent)
        {
            return ((BaseItem) parent).toArray();
        }

        public Object getParent(Object o)
        {
            return ((BaseItem) o).getParent();
        }

        public boolean hasChildren(Object parent)
        {
            return ((BaseItem) parent).size() > 0;
        }

        public Object[] getElements(Object parent)
        {
            return getChildren(parent);
        }

        public void dispose()
        {
        }

        public void inputChanged(Viewer arg0, Object arg1, Object arg2)
        {
        }
    }

    class ViewLabelProvider extends LabelProvider
    {
        public String getText(Object obj)
        {
            return ((BaseItem) obj).getLabel();
        }

        public Image getImage(Object obj)
        {
            if(obj instanceof ProjectItem)
                return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_PROJECT);
            if(obj instanceof ModuleItem)
                return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
            if(obj instanceof ConfigItem)
                return imageRegistry.get("config");
            if(obj instanceof DeclarationItem)
                return imageRegistry.get("declaration");
            if(obj instanceof InterfaceItem)
            {
                if(((InterfaceItem) obj).port.getDirection() == Port.Direction.PROVIDES)
                    return imageRegistry.get("provided_interface");
                else
                    return imageRegistry.get("used_interface");
            }
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
        }
    }

⌨️ 快捷键说明

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