changezoomlevelaction.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 136 行
JAVA
136 行
package net.sf.freenote.action;
import net.sf.freenote.FreeNoteConstants;
import org.eclipse.gef.editparts.ZoomListener;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.jface.action.Action;
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.IPartListener;
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
import org.eclipse.ui.internal.WorkbenchWindow;
public class ChangeZoomLevelAction extends Action implements IWorkbenchWindowPulldownDelegate,ZoomListener {
private ZoomManager zoomManager;
private IPartService service;
private IPartListener partListener;
private Menu toolbarMenu;
public ChangeZoomLevelAction(IPartService service) {
super();
this.service = service;
setId(GEFActionConstants.ZOOM_TOOLBAR_WIDGET);
setToolTipText("调整缩放级别");
service.addPartListener(partListener = new IPartListener() {
public void partActivated(IWorkbenchPart part) {
setZoomManager((ZoomManager) part.getAdapter(ZoomManager.class));
}
public void partBroughtToTop(IWorkbenchPart p) { }
public void partClosed(IWorkbenchPart p) { }
public void partDeactivated(IWorkbenchPart p) { }
public void partOpened(IWorkbenchPart p) { }
});
}
public void setZoomManager(ZoomManager zm) {
if (zoomManager == zm)
return;
if (zoomManager != null)
zoomManager.removeZoomListener(this);
zoomManager = zm;
refresh(true);
if (zoomManager != null)
zoomManager.addZoomListener(this);
}
//显示缩放级别,为true重建菜单
private void refresh(boolean repopulateMenu) {
if(zoomManager != null){
String zoom = zoomManager.getZoomAsText();
this.setToolTipText("调整缩放级别:"+zoom);
}
}
@Override
public Menu getMenu(Control parent) {
if (toolbarMenu == null) {
toolbarMenu = new Menu(parent);
fillMenu(toolbarMenu);
}
return toolbarMenu;
}
private void fillMenu(Menu menu) {
String[] folders=zoomManager.getZoomLevelsAsText();
for(String s:folders ){
if(FreeNoteConstants.ZOOM_SEPARATOR.equals(s)){
new MenuItem(menu,SWT.SEPARATOR);
continue;
}
MenuItem choice = new MenuItem(menu,SWT.RADIO);
choice.setText(s);
choice.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent se) {
String level=((MenuItem)(se.getSource())).getText();
if (zoomManager != null)
zoomManager.setZoomAsText(level);
refresh(false);
}});
}
}
@Override
public void dispose() {
if (partListener == null)
return;
service.removePartListener(partListener);
if (zoomManager != null) {
zoomManager.removeZoomListener(this);
zoomManager = null;
}
if (toolbarMenu != null) {
toolbarMenu.dispose();
toolbarMenu = null;
}
partListener = null;
}
@Override
public void init(IWorkbenchWindow window) {
}
@Override
public void run(IAction action) {
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
}
@Override
public void run() {
WorkbenchWindow window=(WorkbenchWindow) service.getActivePart().getSite().getWorkbenchWindow();
getMenu(window.getCoolBarManager().getControl()).setVisible(true);
}
@Override
public void zoomChanged(double zoom) {
refresh(false);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?