]>
Commit | Line | Data |
---|---|---|
1b2798f6 EK |
1 | /******************************************************************************* |
2 | * Copyright (c) 2000, 2011 IBM Corporation and others. | |
3 | * All rights reserved. This program and the accompanying materials | |
4 | * are made available under the terms of the Eclipse Public License v1.0 | |
5 | * which accompanies this distribution, and is available at | |
6 | * http://www.eclipse.org/legal/epl-v10.html | |
7 | * | |
8 | * Contributors: | |
9 | * IBM Corporation - initial API and implementation | |
10 | *******************************************************************************/ | |
11 | package org.eclipse.jdt.internal.ui.typehierarchy; | |
12 | ||
13 | import org.eclipse.core.runtime.Assert; | |
14 | ||
15 | import org.eclipse.jface.action.Action; | |
16 | import org.eclipse.jface.resource.ImageDescriptor; | |
17 | import org.eclipse.jface.viewers.StyledString; | |
18 | ||
19 | import org.eclipse.ui.PlatformUI; | |
20 | ||
21 | import org.eclipse.jdt.core.IJavaElement; | |
22 | ||
23 | import org.eclipse.jdt.internal.corext.util.Messages; | |
24 | ||
25 | import org.eclipse.jdt.ui.JavaElementLabels; | |
26 | ||
27 | import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; | |
28 | import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider; | |
29 | ||
30 | /** | |
31 | * Action used for the type hierarchy forward / backward buttons | |
32 | */ | |
33 | public class HistoryAction extends Action { | |
34 | ||
35 | private TypeHierarchyViewPart fViewPart; | |
36 | private IJavaElement[] fElements; | |
37 | ||
38 | public HistoryAction(TypeHierarchyViewPart viewPart, IJavaElement[] elements) { | |
39 | super("", AS_RADIO_BUTTON); //$NON-NLS-1$ | |
40 | fViewPart= viewPart; | |
41 | fElements= elements; | |
42 | ||
43 | String elementName= getElementLabel(elements); | |
44 | setText(elementName); | |
45 | setImageDescriptor(getImageDescriptor(elements[0])); | |
46 | ||
47 | setDescription(Messages.format(TypeHierarchyMessages.HistoryAction_description, elementName)); | |
48 | setToolTipText(Messages.format(TypeHierarchyMessages.HistoryAction_tooltip, elementName)); | |
49 | PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IJavaHelpContextIds.HISTORY_ACTION); | |
50 | } | |
51 | ||
52 | private ImageDescriptor getImageDescriptor(IJavaElement elem) { | |
53 | JavaElementImageProvider imageProvider= new JavaElementImageProvider(); | |
54 | ImageDescriptor desc= imageProvider.generated_5712373893139499285(elem); | |
55 | return desc; | |
56 | } | |
57 | ||
58 | /* | |
59 | * @see Action#run() | |
60 | */ | |
61 | @Override | |
62 | public void run() { | |
63 | fViewPart.gotoHistoryEntry(fElements); | |
64 | } | |
65 | ||
66 | /** | |
67 | * Fetches the label for the java element. | |
68 | * | |
69 | * @param element the java element | |
70 | * @return the label for the java element | |
71 | * @since 3.7 | |
72 | */ | |
73 | static StyledString getSingleElementLabel(IJavaElement element) { | |
74 | return JavaElementLabels.getStyledElementLabel(element, JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.COLORIZE | JavaElementLabels.P_COMPRESSED); | |
75 | } | |
76 | ||
77 | /** | |
78 | * Fetches the label for all the java elements. | |
79 | * | |
80 | * @param elements the java elements | |
81 | * @return the label for all the java elements | |
82 | * @since 3.7 | |
83 | */ | |
84 | static String getElementLabel(IJavaElement[] elements) { | |
85 | switch (elements.length) { | |
86 | case 0: | |
87 | Assert.isTrue(false); | |
88 | return null; | |
89 | ||
90 | case 1: | |
91 | return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_1, | |
92 | new String[] { getShortLabel(elements[0]) }); | |
93 | case 2: | |
94 | return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_2, | |
95 | new String[] { getShortLabel(elements[0]), getShortLabel(elements[1]) }); | |
96 | default: | |
97 | return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_more, | |
98 | new String[] { getShortLabel(elements[0]), getShortLabel(elements[1]), getShortLabel(elements[2]) }); | |
99 | } | |
100 | } | |
101 | ||
102 | /** | |
103 | * Fetches the short label for the java element. | |
104 | * | |
105 | * @param element the java element | |
106 | * @return the short label for the java element | |
107 | * @since 3.7 | |
108 | */ | |
109 | static String getShortLabel(IJavaElement element) { | |
110 | return JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED); | |
111 | } | |
112 | ||
113 | } |