createshapeaction.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 102 行

JAVA
102
字号
package net.sf.freenote.action;

import net.sf.freenote.ShapesEditor;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.internal.part.NullEditorInput;
/**
 * 新建文件的action
 * @author levin
 * @since 2008-1-26 下午05:40:27
 */
public class CreateShapeAction implements IWorkbenchWindowActionDelegate,IWorkbenchWindowPulldownDelegate {
	private IWorkbenchWindow window;
	private Menu exampleMenu;
	private static String[] examples=new String[]{"形状示例","用例图示例","系统概念图示例","组织结构图示例","思维图示例"};
	@Override
	public void dispose() {
	}

	@Override
	public void init(IWorkbenchWindow window) {
		this.window=window;
	}

	@Override
	public void run(IAction action) {
		try {
			window.getActivePage().openEditor(new NullEditorInput(), ShapesEditor.ID, true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void selectionChanged(IAction action, ISelection selection) {
		
	}

	@Override
	public Menu getMenu(Control parent) {
		if (exampleMenu != null) {
			exampleMenu.dispose();
		}
		exampleMenu = new Menu(parent);
		fillMenu(exampleMenu);
		return exampleMenu;	
	}

	private void fillMenu(Menu menu) {
		for(String s:examples){
			MenuItem choice = new MenuItem(menu, SWT.PUSH);
			choice.setData(s);
			choice.setText(s);
			choice.addSelectionListener(new SelectionAdapter(){
				@Override
				public void widgetSelected(SelectionEvent se) {
					String example = (String) ((MenuItem)(se.getSource())).getData();
					openShapeFile(example);
				}});
		}			
	}
	
	private boolean openShapeFile(String example) {
		String path="docs/"+example+".fnt";
		try {
			window.getActivePage().openEditor(new ExampleNullEditorInput(path), ShapesEditor.ID, true);
			return true;
		} catch (PartInitException e) {
			e.printStackTrace();
		}
		return false;
	}
	
	class ExampleNullEditorInput extends NullEditorInput{
		private String toolTipText;

		public ExampleNullEditorInput(String toolTipText) {
			this.toolTipText = toolTipText;
		}

		public String getToolTipText() {
			return toolTipText;
		}

		public void setToolTipText(String toolTipText) {
			this.toolTipText = toolTipText;
		}
		
	}
}

⌨️ 快捷键说明

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