/******************************************************************************* * Copyright (c) 2006 Sybase, Inc. and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http:// www.eclipse.org/legal/epl-v10.html * * Contributors: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.pagedesigner.jsf.ui.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID; import org.eclipse.jst.pagedesigner.editors.PageDesignerActionConstants; import org.eclipse.jst.pagedesigner.jsf.ui.JSFUIPlugin; import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; /** * @author mengbo * @version 1.5 */ public class JSFNavigationGroup { private final static Action EMPTY_ACTION = new Action() { // TODO: why? }; /** * @param menu * @param element * @param support */ public void fillContextMenu(IMenuManager menu, final IDOMElement element, final IJSFCoreSupport support) { final IContributionItem item = menu.find(PageDesignerActionConstants.NAVIGATE_SUBMENU_ID); if (item instanceof IMenuManager) { final IMenuManager submenu = (IMenuManager) item; final IMenuManager javaMenu = new MenuManager(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation"));//$NON-NLS-1$ javaMenu.add(EMPTY_ACTION); javaMenu.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { javaMenu.removeAll(); addNavigationItems(javaMenu, element, support); } } ); submenu.appendToGroup(PageDesignerActionConstants.GROUP_NAVIGATE, javaMenu); } } private void addNavigationItems(IMenuManager submenu, IDOMElement ele, IJSFCoreSupport support) { if (support.isActionSource()) { ExpressionAction action = new ExpressionAction(); action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Action"));//$NON-NLS-1$ if (ele != null) { action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_ACTION)); IDOMModel model = ele.getModel(); action.setProject(StructuredModelUtil.getProjectFor(model)); action.setFile(StructuredModelUtil.getFileFor(model)); } submenu.add(action); } if (support.isValueHolder()) { ExpressionAction action = new ExpressionAction(); action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Value"));//$NON-NLS-1$ if (ele != null) { action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_VALUE)); IDOMModel model = ele.getModel(); action.setProject(StructuredModelUtil.getProjectFor(model)); action.setFile(StructuredModelUtil.getFileFor(model)); } submenu.add(action); } { ExpressionAction action = new ExpressionAction(); action.setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.JavaNavigation.Binding"));//$NON-NLS-1$ if (ele != null) { action.setActionValue(ele.getAttribute(ICSSPropertyID.ATTR_BINDING)); IDOMModel model = ele.getModel(); action.setProject(StructuredModelUtil.getProjectFor(model)); action.setFile(StructuredModelUtil.getFileFor(model)); } submenu.add(action); } } }