FormEditor 开发记录1 打开一个多页编辑器

1. 打开编辑器的Command

ContractedBlock.gif ExpandedBlockStart.gif Code
public class OpenProject extends AbstractHandler {

    @Override
    
public Object execute(ExecutionEvent event) throws ExecutionException {
        
        StructuredSelection selection 
= (StructuredSelection)HandlerUtil.getCurrentSelection(event);
        
if(selection.isEmpty()) return null;
        
        
try {
            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
            .openEditor(
new ProjectInput((LazyDTO)selection.getFirstElement()), "com.sg.intellifmea.editor.ProjectEditor");//"DTOEditor");//
        
        } 
catch (PartInitException e) {
            e.printStackTrace();
        }
        
return null;
    }

}

2. 做一个editorinput,首先不考虑如何持久化

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.sg.intellifmea.editor;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;

import com.sg.hyperobject.datamanager.dt.LazyDTO;

public class ProjectInput implements IEditorInput {

    
private LazyDTO data;

    
public ProjectInput(LazyDTO data) {
        
this.data = data;
    }

    @Override
    
public boolean exists() {
        
return false;
    }

    @Override
    
public ImageDescriptor getImageDescriptor() {
        
return data.getImageDescriptor();
    }

    @Override
    
public String getName() {
        
return data.getDTObject().getLabel();
    }

    @Override
    
public IPersistableElement getPersistable() {
        
return null;
    }

    @Override
    
public String getToolTipText() {
        
return data.getDTObject().getDescription();
    }

    @Override
    
public Object getAdapter(Class adapter) {
        
return null;
    }

    
public LazyDTO getData() {
        
return data;
    }

}

3. 做一个Editor,直接用FormEditor

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.sg.intellifmea.editor;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.editor.FormEditor;

public class ProjectEditor extends FormEditor{

    @Override
    
public void init(IEditorSite site, IEditorInput input)
            
throws PartInitException {
        setPartName(input.getName());
        
super.init(site, input);
    }

    @Override
    
protected void addPages() {
        
try {
            addPage(
new PlanPage(this));
            addPage(
new DocumentPage(this));
        } 
catch (PartInitException e) {
            e.printStackTrace();
        }
    }

    @Override
    
public void doSave(IProgressMonitor monitor) {
        
// TODO Auto-generated method stub
        
    }

    @Override
    
public void doSaveAs() {
        
// TODO Auto-generated method stub
        
    }

    @Override
    
public boolean isSaveAsAllowed() {
        
// TODO Auto-generated method stub
        return false;
    }



}

 tips:FormEditor在init方法中是不会读取IEditorInput的getName()以及getImage()方法来设置编辑器的Title和图标的。不知道为什么?需要override init方法,显式地加上setPartName(input.getName());才可以。

打开看看效果:

 

 

补充一点,编辑器是需要在Plugins.xml中扩展的。并且需要依赖 ui.editors的插件以及ui.views的插件

转载于:https://www.cnblogs.com/seag/archive/2009/11/25/1610656.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值