📄 pimwindowadvisor.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.component.config.ConfigHelper;
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 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(ToggleMenuAction.class.getName(), "toggle");
// 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();
int[] sizes=ConfigHelper.getIntegerArrayProperty("work.windowsize");
configurer.setInitialSize(new Point(sizes[0], sizes[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 void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
page.getWorkbenchWindow().getShell().setText(perspective.getLabel());
}
});
}
@Override
public boolean preWindowShellClose() {
//检查是否需要保存
UiUtil.getInstance().closeApp();
return super.preWindowShellClose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -