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 + -
显示快捷键?