/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.ui.actions.SelectionListenerAction; import org.eclipse.ui.navigator.ICommonMenuConstants; /** * �ع��� * @author sundl */ public class RefactorActionGroup extends ActionGroup { private static final String RENAME_ID = "com.hundsun.ares.studio.ui.action.rename"; private static final String GROUP_ID = ICommonMenuConstants.GROUP_REORGANIZE; public static final String MENU_ID = "com.hundsun.ares.studio.ui.menu.refactor"; private IWorkbenchSite site; private IViewPart part; private ISelectionProvider selectionProvider; private ARESRenameAction renameAction; private AresMoveAction moveAction; public RefactorActionGroup(IViewPart part) { this(part.getSite(), null); } public RefactorActionGroup(IWorkbenchSite site, ISelectionProvider provider) { this.site = site; this.selectionProvider = provider == null ? site.getSelectionProvider() : provider; IStructuredSelection selection = (IStructuredSelection)selectionProvider.getSelection(); renameAction = new ARESRenameAction(site); initAction(renameAction, selectionProvider, selection, "org.eclipse.ui.edit.rename"); moveAction = new AresMoveAction(site); initAction(moveAction, selectionProvider, selection, "org.eclipse.ui.edit.move"); } private void initAction(SelectionListenerAction action, ISelectionProvider provider, IStructuredSelection selection, String id) { action.setActionDefinitionId(id); action.selectionChanged(selection); if (provider != null) provider.addSelectionChangedListener(action); } public void fillActionBars(IActionBars actionBars) { super.fillActionBars(actionBars); actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), renameAction); actionBars.setGlobalActionHandler(ActionFactory.MOVE.getId(), moveAction); } /** * Retargets the File actions with the corresponding refactoring actions. * * @param actionBars the action bar to register the move and rename action with */ public void retargetFileMenuActions(IActionBars actionBars) { actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), renameAction); actionBars.setGlobalActionHandler(ActionFactory.MOVE.getId(), moveAction); } public void fillContextMenu(IMenuManager menu) { super.fillContextMenu(menu); addRefactorSubmenu(menu); } private void addRefactorSubmenu(IMenuManager menu) { MenuManager refactorSubmenu= new MenuManager("�ع�", MENU_ID); ISelection selection = selectionProvider.getSelection(); renameAction.selectionChanged((IStructuredSelection)selection); moveAction.selectionChanged((IStructuredSelection)selection); if (fillRefactorMenu(refactorSubmenu) > 0) { menu.appendToGroup(GROUP_ID, refactorSubmenu); } } private int fillRefactorMenu(IMenuManager refactorSubmenu) { int added = 0; added+= addAction(refactorSubmenu, renameAction); added+= addAction(refactorSubmenu, moveAction); return added; } private int addAction(IMenuManager menu, IAction action) { if (action != null && action.isEnabled()) { menu.add(action); return 1; } return 0; } }