码迷,mamicode.com
首页 > 系统相关 > 详细

Eclipse插件开发学习笔记【6】--- 添加编辑器

时间:2016-08-04 22:53:37      阅读:784      评论:0      收藏:0      [点我收藏+]

标签:

Eclipse插件开发学习笔记【6】--- 添加编辑器 

我们使用myfirstplugin的示例,我们在ViewList中的111,222,333的点击时分别打开三个不同的编辑器。

首先,我们在plugin.xml的扩展选项卡中点击添加,选择org.eclipse.ui.editors扩展点,点击完成。

 技术分享

右击扩展点新建两个editor,一共三个editor,属性如下图所示:

 技术分享

右键src文件夹,点击新建类,新建3个类非别为Editor1,Editor2,Editor3,继承EditorPart类。

 技术分享

在init和createPartControl函数中加入实现代码:

        setSite(site);

        setInput(input);

        setPartName(input.getName());

        setTitleImage(input.getImageDescriptor().createImage());

 

 

        Composite topCom = new Composite(parent, SWT.NONE);

        topCom.setLayout(new FillLayout());

       

        new Text(topCom, SWT.MULTI).setText("编辑器1");

 

新建InputEditor1-3 3个类,实现IEditorInput接口。getImageDescriptor和getName方法加上如下代码:

        return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_DTOOL_NEW_FASTVIEW);

       return "111";

 

在ViewList中加上如下代码:

        list.addMouseListener(new MouseListener() {

           

            @Override

            public void mouseDoubleClick(MouseEvent e) {

               

                IEditorInput input = null;

                String id = null;

               

                switch (list.getSelection()[0]) {

                case "111":

                    input = input1;

                    id = "myfirstplugin.editors.Editor1";

                    break;

                case "222":

                    input = input2;

                    id = "myfirstplugin.editors.Editor2";

                    break;

                case "333":

                    input = input3;

                    id = "myfirstplugin.editors.Editor3";

                    break;

                }

               

                if(input == null || id == null)

                    return;

               

                IEditorPart  editor = getSite().getPage().findEditor(input);

               

                if(editor != null){

                    getSite().getPage().bringToTop(editor);

                }

                else{

                    try {

                        getSite().getPage().openEditor(input, id);

                    } catch (Exception e2) {

                        e2.printStackTrace();

                    }

                }

            }

 

            @Override

            public void mouseDown(MouseEvent e) {

                // TODO 自动生成的方法存根

               

            }

 

            @Override

            public void mouseUp(MouseEvent e) {

                // TODO 自动生成的方法存根

               

            }

        });

 

点击运行,效果如图:

 技术分享

 

package myfirstplugin.views;

import myfirstplugin.editors.InputEditor1;
import myfirstplugin.editors.InputEditor2;
import myfirstplugin.editors.InputEditor3;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.part.ViewPart;

public class ViewList extends ViewPart {

	private InputEditor1 input1 = new InputEditor1();
	private InputEditor2 input2 = new InputEditor2();
	private InputEditor3 input3 = new InputEditor3();
	
    public void createPartControl(Composite parent) {
        // TODO Auto-generated method stub
        Composite topCom = new Composite(parent,SWT.NONE);
        topCom.setLayout(new FillLayout());
        final List list = new List(topCom,SWT.BORDER);
        list.add("111");
        list.add("222");
        list.add("333");
        list.addSelectionListener(new SelectionAdapter(){
            public void widgetSelected(SelectionEvent e) {
                IWorkbenchPage wbp = getViewSite().getPage();
                IViewPart View1 = wbp.findView("myfirstplugin.views.ViewText");
                ViewText v1 = (ViewText)View1; 
                if(View1 == null)return;
                Text text = v1.getText();
                text.setText(list.getSelection()[0] + "\n");
            }
        });
        
        list.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseDoubleClick(MouseEvent e) {
				
				IEditorInput input = null;
				String id = null;
				
				switch (list.getSelection()[0]) {
				case "111":
					input = input1;
					id = "myfirstplugin.editors.Editor1";
					break;
				case "222":
					input = input2;
					id = "myfirstplugin.editors.Editor2";
					break;
				case "333":
					input = input3;
					id = "myfirstplugin.editors.Editor3";
					break;
				}
				
				if(input == null || id == null)
					return;
				
				IEditorPart  editor = getSite().getPage().findEditor(input);
				
				if(editor != null){
					getSite().getPage().bringToTop(editor);
				}
				else{
					try {
						getSite().getPage().openEditor(input, id);
					} catch (Exception e2) {
						e2.printStackTrace();
					}
				}
			}

			@Override
			public void mouseDown(MouseEvent e) {
				// TODO 自动生成的方法存根
				
			}

			@Override
			public void mouseUp(MouseEvent e) {
				// TODO 自动生成的方法存根
				
			}
		});
    }

    public void setFocus() {
        // TODO Auto-generated method stub
        
    }

}



package myfirstplugin.editors;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;

public class Editor1 extends EditorPart {

	@Override
	public void doSave(IProgressMonitor monitor) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void doSaveAs() {
		// TODO 自动生成的方法存根

	}

	@Override
	public void init(IEditorSite site, IEditorInput input)
			throws PartInitException {
		setSite(site);
		setInput(input);
		setPartName(input.getName());
		setTitleImage(input.getImageDescriptor().createImage());
	}

	@Override
	public boolean isDirty() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public boolean isSaveAsAllowed() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public void createPartControl(Composite parent) {
		Composite topCom = new Composite(parent, SWT.NONE);
		topCom.setLayout(new FillLayout());
		
		new Text(topCom, SWT.MULTI).setText("编辑器1");
	}

	@Override
	public void setFocus() {
		// TODO 自动生成的方法存根

	}

}



package myfirstplugin.editors;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.win32.INPUT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;

public class Editor2 extends EditorPart{

	@Override
	public void doSave(IProgressMonitor monitor) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void doSaveAs() {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void init(IEditorSite site, IEditorInput input)
			throws PartInitException {
		setSite(site);
		setInput(input);
		setPartName(input.getName());
		setTitleImage(input.getImageDescriptor().createImage());
	}

	@Override
	public boolean isDirty() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public boolean isSaveAsAllowed() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public void createPartControl(Composite parent) {
		Composite topCom = new Composite(parent, SWT.NONE);
		topCom.setLayout(new FillLayout());
		
		new Text(topCom, SWT.MULTI).setText("编辑器2");
	}

	@Override
	public void setFocus() {
		// TODO 自动生成的方法存根
		
	}

}



package myfirstplugin.editors;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;

public class Editor3 extends EditorPart{

	@Override
	public void doSave(IProgressMonitor monitor) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void doSaveAs() {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void init(IEditorSite site, IEditorInput input)
			throws PartInitException {
		setSite(site);
		setInput(input);
		setPartName(input.getName());
		setTitleImage(input.getImageDescriptor().createImage());
	}

	@Override
	public boolean isDirty() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public boolean isSaveAsAllowed() {
		// TODO 自动生成的方法存根
		return false;
	}

	@Override
	public void createPartControl(Composite parent) {
		Composite topCom = new Composite(parent, SWT.NONE);
		topCom.setLayout(new FillLayout());
		
		new Text(topCom, SWT.MULTI).setText("编辑器3");
	}

	@Override
	public void setFocus() {
		// TODO 自动生成的方法存根
		
	}

}



package myfirstplugin.editors;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.help.WorkbenchHelp;
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
import org.eclipse.ui.internal.WorkbenchImages;

public class InputEditor1 implements IEditorInput {

	@Override
	public Object getAdapter(Class adapter) {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public boolean exists() {
		// TODO 自动生成的方法存根
		return true;
	}

	@Override
	public ImageDescriptor getImageDescriptor() {
		// TODO 自动生成的方法存根
		return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_DTOOL_NEW_FASTVIEW);
	}

	@Override
	public String getName() {
		// TODO 自动生成的方法存根
		return "111";
	}

	@Override
	public IPersistableElement getPersistable() {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public String getToolTipText() {
		// TODO 自动生成的方法存根
		return null;
	}

}



package myfirstplugin.editors;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
import org.eclipse.ui.internal.WorkbenchImages;

public class InputEditor2 implements IEditorInput {

	@Override
	public Object getAdapter(Class adapter) {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public boolean exists() {
		// TODO 自动生成的方法存根
		return true;
	}

	@Override
	public ImageDescriptor getImageDescriptor() {
		// TODO 自动生成的方法存根
		return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_EDITOR_TRIMPART);
	}

	@Override
	public String getName() {
		// TODO 自动生成的方法存根
		return "222";
	}

	@Override
	public IPersistableElement getPersistable() {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public String getToolTipText() {
		// TODO 自动生成的方法存根
		return null;
	}

}



package myfirstplugin.editors;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
import org.eclipse.ui.internal.WorkbenchImages;

public class InputEditor3 implements IEditorInput {

	@Override
	public Object getAdapter(Class adapter) {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public boolean exists() {
		// TODO 自动生成的方法存根
		return true;
	}

	@Override
	public ImageDescriptor getImageDescriptor() {
		// TODO 自动生成的方法存根
		return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_EXPORT_WIZ);
	}

	@Override
	public String getName() {
		// TODO 自动生成的方法存根
		return "333";
	}

	@Override
	public IPersistableElement getPersistable() {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public String getToolTipText() {
		// TODO 自动生成的方法存根
		return null;
	}

}

  

Eclipse插件开发学习笔记【6】--- 添加编辑器

标签:

原文地址:http://www.cnblogs.com/shitoudechunfeng/p/5738666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!