/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation 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: * Jesper Kamstrup Linnet (eclipse@kamstrup-linnet.dk) - initial API and implementation * (report 36180: Callers/Callees view) * Stephan Herrmann (stephan@cs.tu-berlin.de): * - bug 75800: [call hierarchy] should allow searches for fields *******************************************************************************/ package org.eclipse.jdt.internal.ui.callhierarchy; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.PlatformUI; import org.eclipse.jdt.core.IMember; import org.eclipse.jdt.internal.corext.util.Messages; import org.eclipse.jdt.ui.JavaElementLabels; import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider; class HistoryAction extends Action { private static long LABEL_FLAGS= JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_APP_RETURNTYPE | JavaElementLabels.T_TYPE_PARAMETERS | JavaElementLabels.P_COMPRESSED | JavaElementLabels.COLORIZE; private CallHierarchyViewPart fView; private IMember[] fMembers; public HistoryAction(CallHierarchyViewPart viewPart, IMember[] members) { super("", AS_RADIO_BUTTON); //$NON-NLS-1$ fView= viewPart; fMembers= members; String elementName= getElementLabel(members); setText(elementName); setImageDescriptor(getImageDescriptor(members)); setDescription(Messages.format(CallHierarchyMessages.HistoryAction_description, elementName)); setToolTipText(Messages.format(CallHierarchyMessages.HistoryAction_tooltip, elementName)); PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IJavaHelpContextIds.CALL_HIERARCHY_HISTORY_ACTION); } private static ImageDescriptor getImageDescriptor(IMember[] members) { JavaElementImageProvider imageProvider= new JavaElementImageProvider(); ImageDescriptor desc= imageProvider.getBaseImageDescriptor(members[0], 0); imageProvider.dispose(); return desc; } /* * @see Action#run() */ @Override public void run() { fView.gotoHistoryEntry(fMembers); } static String getElementLabel(IMember[] members) { switch (members.length) { case 0: Assert.isTrue(false); return null; case 1: return Messages.format(CallHierarchyMessages.HistoryAction_inputElements_1, new String[] { getShortLabel(members[0]) }); case 2: return Messages.format(CallHierarchyMessages.HistoryAction_inputElements_2, new String[] { getShortLabel(members[0]), getShortLabel(members[1]) }); default: return Messages.format(CallHierarchyMessages.HistoryAction_inputElements_more, new String[] { getShortLabel(members[0]), getShortLabel(members[1]) }); } } private static String getShortLabel(IMember member) { return JavaElementLabels.getElementLabel(member, LABEL_FLAGS); } }