/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.action; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IViewPart; import org.eclipse.ui.actions.ActionGroup; /** * ����ResPath��ص�ActionGroup * @author sundl */ public class ResPathActionGroup extends ActionGroup { public static final String MENU_ID = "com.hundsun.ares.stuido.ui.menu.referencedlib"; protected AddSelectedFileToResPathAction addToResPathAction; protected RemoveFromResPathAction removeFromRespathAction; protected AddWorkspaceFileToResPathAction addWorkspaceFileAction; protected AddExternalFileToResPathAction addExternalFileAction; protected AddProjectToResPathAction addProjectAction; private List<IAction> actions = new ArrayList<IAction>(); private IViewPart part; public ResPathActionGroup(IViewPart part) { this.part = part; addToResPathAction = new AddSelectedFileToResPathAction(); removeFromRespathAction = new RemoveFromResPathAction(); addWorkspaceFileAction = new AddWorkspaceFileToResPathAction(part.getSite().getShell()); addExternalFileAction = new AddExternalFileToResPathAction(part.getSite().getShell()); addProjectAction = new AddProjectToResPathAction(part.getSite().getShell()); } @Override public void fillContextMenu(final IMenuManager menu) { super.fillContextMenu(menu); final IStructuredSelection selection = (IStructuredSelection)getContext().getSelection(); addToResPathAction.selectionChanged(selection); removeFromRespathAction.selectionChanged(selection); addExternalFileAction.selectionChanged(selection); addProjectAction.selectionChanged(selection); addWorkspaceFileAction.selectionChanged(selection); if (addWorkspaceFileAction.isEnabled() && !selectionIsProject(selection)) menu.add(addWorkspaceFileAction); if (addExternalFileAction.isEnabled() && !selectionIsProject(selection)) menu.add(addExternalFileAction); if (addProjectAction.isEnabled() && !selectionIsProject(selection)) menu.add(addProjectAction); final IMenuManager subMenu = new MenuManager("����", MENU_ID); subMenu.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { fillSubMenu(manager, selection); } }); subMenu.setRemoveAllWhenShown(true); int added = fillSubMenu(subMenu, selection); if (added > 0) menu.appendToGroup("group.reorganize", subMenu); } protected boolean selectionIsProject(IStructuredSelection selection) { return selection.getFirstElement() instanceof IProject; } protected int fillSubMenu(IMenuManager menu, IStructuredSelection selection) { int added = 0; if (addToResPathAction.isEnabled()) { menu.add(addToResPathAction); added++; } if (removeFromRespathAction.isEnabled()) { menu.add(removeFromRespathAction); added++; } if (addWorkspaceFileAction.isEnabled() && selectionIsProject(selection)) { menu.add(addWorkspaceFileAction); added++; } if (addExternalFileAction.isEnabled() && selectionIsProject(selection)) { menu.add(addExternalFileAction); added++; } if (addProjectAction.isEnabled() && selectionIsProject(selection)) { menu.add(addProjectAction); added++; } return added; } }