Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,32 @@ static StyledString getSingleElementLabel(IJavaElement element) {
* @since 3.7
*/
static String getElementLabel(IJavaElement[] elements) {
return getElementLabel(elements, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED);
}

/**
* Fetches the label for all the java elements.
*
* @param elements the java elements
* @param flags flags for label generation
* @return the label for all the java elements
* @since 3.35
*/
static String getElementLabel(IJavaElement[] elements, long flags) {
switch (elements.length) {
case 0:
Assert.isTrue(false);
return null;

case 1:
return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_1,
new String[] { getShortLabel(elements[0]) });
new String[] { getShortLabel(elements[0], flags) });
case 2:
return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_2,
new String[] { getShortLabel(elements[0]), getShortLabel(elements[1]) });
new String[] { getShortLabel(elements[0], flags), getShortLabel(elements[1], flags) });
default:
return Messages.format(TypeHierarchyMessages.HistoryAction_inputElements_more,
new String[] { getShortLabel(elements[0]), getShortLabel(elements[1]), getShortLabel(elements[2]) });
new String[] { getShortLabel(elements[0], flags), getShortLabel(elements[1], flags), getShortLabel(elements[2], flags) });
}
}

Expand All @@ -111,7 +123,19 @@ static String getElementLabel(IJavaElement[] elements) {
* @since 3.7
*/
static String getShortLabel(IJavaElement element) {
return JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED);
return getShortLabel(element, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED);
}

/**
* Fetches the short label for the java element.
*
* @param element the java element
* @param flags flags for label generation
* @return the short label for the java element
* @since 3.35
*/
static String getShortLabel(IJavaElement element, long flags) {
return JavaElementLabels.getElementLabel(element, flags);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

import org.eclipse.help.IContextProvider;

Expand Down Expand Up @@ -116,6 +117,7 @@

import org.eclipse.jdt.ui.IContextMenuConstants;
import org.eclipse.jdt.ui.ITypeHierarchyViewPart;
import org.eclipse.jdt.ui.JavaElementLabels;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.ui.actions.CCPActionGroup;
Expand Down Expand Up @@ -1643,7 +1645,7 @@ private void restoreState(final IMemento memento) {
int i= 0;
while (elementId != null) {
input= JavaCore.create(elementId);
if (input == null || !input.exists()) {
if (input == null) {
inputList= null;
break;
}
Expand All @@ -1654,23 +1656,33 @@ private void restoreState(final IMemento memento) {
doRestoreState(memento, input);
} else {
final IJavaElement[] hierarchyInput= inputList.toArray(new IJavaElement[inputList.size()]);

synchronized (this) {
String label= Messages.format(TypeHierarchyMessages.TypeHierarchyViewPart_restoreinput, HistoryAction.getElementLabel(hierarchyInput));
long flags = JavaElementLabels.M_APP_TYPE_PARAMETERS| JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED;
String label= Messages.format(TypeHierarchyMessages.TypeHierarchyViewPart_restoreinput, HistoryAction.getElementLabel(hierarchyInput, flags));
fNoHierarchyShownLabel.setText(label);

fRestoreStateJob= new Job(label) {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
doRestoreInBackground(memento, hierarchyInput, monitor);
Job.getJobManager().join(JavaUI.ID_PLUGIN, monitor);
IJavaElement[] existingHierarchyInput = Stream.of(hierarchyInput).filter(IJavaElement::exists).toArray(length -> new IJavaElement[length]);
if(existingHierarchyInput.length == 0) {
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
doRestoreState(memento, new IJavaElement[0]);
});
} else {
doRestoreInBackground(memento, existingHierarchyInput, monitor);
}
} catch (JavaModelException e) {
return e.getStatus();
} catch (OperationCanceledException e) {
if (fRestoreJobCanceledExplicitly) {
showEmptyViewer();
}
return Status.CANCEL_STATUS;
} catch (InterruptedException e) {
showEmptyViewer();
}
return Status.OK_STATUS;
}
Expand Down