⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pimwindowadvisor.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.pim.plugin.rcp;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.pim.UiUtil;
import net.sf.pim.action.AboutAction;
import net.sf.pim.action.AddAction;
import net.sf.pim.action.ConfigAction;
import net.sf.pim.action.CurAction;
import net.sf.pim.action.DeleteAction;
import net.sf.pim.action.DownAction;
import net.sf.pim.action.ExportAction;
import net.sf.pim.action.HelpAction;
import net.sf.pim.action.ImportAction;
import net.sf.pim.action.NextAction;
import net.sf.pim.action.PersonalPspAction;
import net.sf.pim.action.PositionAction;
import net.sf.pim.action.PreAction;
import net.sf.pim.action.QuitAction;
import net.sf.pim.action.SaveAction;
import net.sf.pim.action.Search1Action;
import net.sf.pim.action.Search2Action;
import net.sf.pim.action.Search3Action;
import net.sf.pim.action.SubAction;
import net.sf.pim.action.Tj2Action;
import net.sf.pim.action.Tj3Action;
import net.sf.pim.action.TjAction;
import net.sf.pim.action.ToggleMenuAction;
import net.sf.pim.action.UpAction;
import net.sf.util.ConfigHelper;

import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.PerspectiveAdapter;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.internal.WWinPluginAction;
import org.eclipse.ui.internal.WorkbenchPage;

/**
 * window定置
 * @author levin
 */
public class PIMWindowAdvisor extends WorkbenchWindowAdvisor {

    //记录所有action的id,以便和actionMap关联
    private static Map<String,String> idMap;
	private IWorkbenchWindowConfigurer configurer;
    static {
    	idMap = new HashMap<String, String>();
		idMap.put(SaveAction.class.getName(), "save");
		idMap.put(ToggleMenuAction.class.getName(), "menu");
		idMap.put(PositionAction.class.getName(), "position");
		idMap.put(ImportAction.class.getName(), "import");
		idMap.put(ExportAction.class.getName(), "export");
		idMap.put(PreAction.class.getName(), "pre");
		idMap.put(CurAction.class.getName(), "cur");
		idMap.put(NextAction.class.getName(), "next");
		idMap.put(SubAction.class.getName(), "sub");
		idMap.put(Search1Action.class.getName(), "search1");
		idMap.put(Search2Action.class.getName(), "search2");
		idMap.put(Search3Action.class.getName(), "search3");
		idMap.put(AboutAction.class.getName(), "about");
		idMap.put(QuitAction.class.getName(), "quit");
		idMap.put(ConfigAction.class.getName(), "config");
		idMap.put(AddAction.class.getName(), "add");
		idMap.put(DeleteAction.class.getName(), "delete");
		idMap.put(UpAction.class.getName(), "up");
		idMap.put(DownAction.class.getName(), "down");
		idMap.put(TjAction.class.getName(), "tj");
		idMap.put(Tj2Action.class.getName(), "tj2");
		idMap.put(Tj3Action.class.getName(), "tj3");
		idMap.put(HelpAction.class.getName(), "help");
		idMap.put(PersonalPspAction.class.getName(), "personalpsp");
//		idMap.put(PrintAction.class.getName(), "print");
    }
    
	public PIMWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
		super(configurer);
	}

	public ActionBarAdvisor createActionBarAdvisor(
			IActionBarConfigurer configurer) {
		return new PIMActionBarAdvisor(configurer);
	}

	public void preWindowOpen() {
		configurer = getWindowConfigurer();
		configurer.setInitialSize(new Point(ConfigHelper.getWindowSize()[0], ConfigHelper.getWindowSize()[1]));
		configurer.setShowCoolBar(true);
		configurer.setShowPerspectiveBar(true);
		configurer.setShowStatusLine(true);
		configurer.setShowMenuBar(false);
		configurer.setTitle("MyWork");
	}

	@Override
	public void postWindowOpen() {
		//解决初始工具栏、状态栏隐藏的BUG,重新layout一下
		Display.getDefault().getActiveShell().layout();
		//向原有系统注册一下action
		try {
			Field field = WWinPluginAction.class.getDeclaredField("staticActionList");
			field.setAccessible(true);
			ArrayList<WWinPluginAction> actionList=(ArrayList<WWinPluginAction>) field.get(WWinPluginAction.class);
			for(WWinPluginAction action:actionList){
				UiUtil.getActionMap().put(idMap.get(action.getId()), action);
				if(action.getId().equals(ToggleMenuAction.class.getName())){
					ToggleMenuAction.getInstance().setConfigurer(configurer);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		//2007.02.26 注册透视图切换监听器
		PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(new PerspectiveAdapter(){
			public void perspectiveDeactivated(IWorkbenchPage page,
					IPerspectiveDescriptor perspective) {
				if(perspective.getId().equals("net.sf.pim.plugin.UiPerspective")){
					UiUtil.checkSave(UiUtil.getInstance());
				}
			}
		});
	}

	@Override
	public boolean preWindowShellClose() {
		//检查是否需要保存
		UiUtil.getInstance().closeApp();
		return super.preWindowShellClose();
	}
	
	
}

⌨️ 快捷键说明

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