mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[platform] restores Kotlin compatibility; deprecates exposed fields
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,25 +40,26 @@ public class MethodHierarchyBrowser extends MethodHierarchyBrowserBase {
|
||||
super(project, method);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createTrees(@NotNull Map<String, JTree> trees) {
|
||||
final JTree tree = createTree(false);
|
||||
ActionGroup group = (ActionGroup)ActionManager.getInstance().getAction(IdeActions.GROUP_METHOD_HIERARCHY_POPUP);
|
||||
PopupHandler.installPopupHandler(tree, group, ActionPlaces.METHOD_HIERARCHY_VIEW_POPUP, ActionManager.getInstance());
|
||||
|
||||
final BaseOnThisMethodAction baseOnThisMethodAction = new BaseOnThisMethodAction();
|
||||
baseOnThisMethodAction
|
||||
.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_METHOD_HIERARCHY).getShortcutSet(), tree);
|
||||
final BaseOnThisMethodAction action = new BaseOnThisMethodAction();
|
||||
action.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_METHOD_HIERARCHY).getShortcutSet(), tree);
|
||||
|
||||
trees.put(METHOD_TYPE, tree);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JPanel createLegendPanel() {
|
||||
return createStandardLegendPanel(IdeBundle.message("hierarchy.legend.method.is.defined.in.class"),
|
||||
IdeBundle.message("hierarchy.legend.method.defined.in.superclass"),
|
||||
IdeBundle.message("hierarchy.legend.method.should.be.defined"));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected PsiElement getElementFromDescriptor(@NotNull final HierarchyNodeDescriptor descriptor) {
|
||||
if (descriptor instanceof MethodHierarchyNodeDescriptor) {
|
||||
return ((MethodHierarchyNodeDescriptor)descriptor).getTargetElement();
|
||||
@@ -66,10 +67,12 @@ public class MethodHierarchyBrowser extends MethodHierarchyBrowserBase {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isApplicableElement(@NotNull final PsiElement psiElement) {
|
||||
return psiElement instanceof PsiMethod;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HierarchyTreeStructure createHierarchyTreeStructure(@NotNull final String typeName, @NotNull final PsiElement psiElement) {
|
||||
if (!METHOD_TYPE.equals(typeName)) {
|
||||
LOG.error("unexpected type: " + typeName);
|
||||
@@ -78,17 +81,17 @@ public class MethodHierarchyBrowser extends MethodHierarchyBrowserBase {
|
||||
return new MethodHierarchyTreeStructure(myProject, (PsiMethod)psiElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Comparator<NodeDescriptor> getComparator() {
|
||||
return JavaHierarchyUtil.getComparator(myProject);
|
||||
}
|
||||
|
||||
public PsiMethod getBaseMethod() {
|
||||
final HierarchyTreeBuilder builder = myBuilders.get(myCurrentViewType);
|
||||
final HierarchyTreeBuilder builder = getCurrentBuilder();
|
||||
final MethodHierarchyTreeStructure treeStructure = (MethodHierarchyTreeStructure)builder.getTreeStructure();
|
||||
assert treeStructure != null : builder;
|
||||
return treeStructure.getBaseMethod();
|
||||
}
|
||||
|
||||
public static final class BaseOnThisMethodAction extends MethodHierarchyBrowserBase.BaseOnThisMethodAction {
|
||||
}
|
||||
|
||||
}
|
||||
public static final class BaseOnThisMethodAction extends MethodHierarchyBrowserBase.BaseOnThisMethodAction { }
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -38,7 +38,6 @@ import java.util.Map;
|
||||
public class TypeHierarchyBrowser extends TypeHierarchyBrowserBase {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.hierarchy.type.TypeHierarchyBrowser");
|
||||
|
||||
|
||||
public TypeHierarchyBrowser(final Project project, final PsiClass psiClass) {
|
||||
super(project, psiClass);
|
||||
}
|
||||
@@ -55,7 +54,7 @@ public class TypeHierarchyBrowser extends TypeHierarchyBrowserBase {
|
||||
super.prependActions(actionGroup);
|
||||
actionGroup.add(new ChangeScopeAction() {
|
||||
protected boolean isEnabled() {
|
||||
return !Comparing.strEqual(myCurrentViewType, SUPERTYPES_HIERARCHY_TYPE);
|
||||
return !Comparing.strEqual(getCurrentViewType(), SUPERTYPES_HIERARCHY_TYPE);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -121,4 +120,4 @@ public class TypeHierarchyBrowser extends TypeHierarchyBrowserBase {
|
||||
protected TypeHierarchyBrowserBase.BaseOnThisTypeAction createBaseOnThisAction() {
|
||||
return new BaseOnThisTypeAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,7 +13,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.intellij.ide.hierarchy;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
@@ -91,13 +90,12 @@ public abstract class CallHierarchyBrowserBase extends HierarchyBrowserBaseEx {
|
||||
|
||||
@Override
|
||||
public final boolean isSelected(final AnActionEvent event) {
|
||||
return myTypeName.equals(myCurrentViewType);
|
||||
return myTypeName.equals(getCurrentViewType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setSelected(final AnActionEvent event, final boolean flag) {
|
||||
if (flag) {
|
||||
// setWaitCursor();
|
||||
// invokeLater is called to update state of button before long tree building operation
|
||||
ApplicationManager.getApplication().invokeLater(() -> changeView(myTypeName));
|
||||
}
|
||||
@@ -115,5 +113,4 @@ public abstract class CallHierarchyBrowserBase extends HierarchyBrowserBaseEx {
|
||||
super(IdeBundle.message("action.base.on.this.method"), CALL_HIERARCHY_BROWSER_DATA_KEY, LanguageCallHierarchy.INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -103,9 +103,15 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
};
|
||||
|
||||
protected final Map<String, HierarchyTreeBuilder> myBuilders = Collections.synchronizedMap(new HashMap<>());
|
||||
/** @deprecated use {@link #getBuilderForType(String)} and {@link #getBuilders()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings({"UseOfObsoleteCollectionType", "DeprecatedIsStillUsed"})
|
||||
protected final Hashtable<String, HierarchyTreeBuilder> myBuilders = new Hashtable<>();
|
||||
|
||||
/** @deprecated use {@link #getCurrentViewType()} (to be removed in IDEA 2018) */
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
protected String myCurrentViewType;
|
||||
|
||||
private final Map<String, HierarchyTreeBuilder> myType2BuilderMap;
|
||||
private final Map<String, JTree> myType2TreeMap;
|
||||
private final RefreshAction myRefreshAction = new RefreshAction();
|
||||
private final Alarm myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD,this);
|
||||
@@ -119,6 +125,9 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
public HierarchyBrowserBaseEx(@NotNull Project project, @NotNull PsiElement element) {
|
||||
super(project);
|
||||
|
||||
@SuppressWarnings("deprecation") Map<String, HierarchyTreeBuilder> mapView = myBuilders;
|
||||
myType2BuilderMap = mapView;
|
||||
|
||||
setHierarchyBase(element);
|
||||
|
||||
myCardLayout = new CardLayout();
|
||||
@@ -325,7 +334,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
|
||||
public final void changeView(@NotNull final String typeName) {
|
||||
myCurrentViewType = typeName;
|
||||
setCurrentViewType(typeName);
|
||||
|
||||
final PsiElement element = mySmartPsiElementPointer.getElement();
|
||||
if (element == null || !isApplicableElement(element)) {
|
||||
@@ -341,7 +350,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
|
||||
myCardLayout.show(myTreePanel, typeName);
|
||||
|
||||
if (!myBuilders.containsKey(typeName)) {
|
||||
if (!myType2BuilderMap.containsKey(typeName)) {
|
||||
try {
|
||||
setWaitCursor();
|
||||
// create builder
|
||||
@@ -356,9 +365,9 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
final Comparator<NodeDescriptor> comparator = getComparator();
|
||||
final HierarchyTreeBuilder builder = new HierarchyTreeBuilder(myProject, tree, model, structure, comparator);
|
||||
|
||||
myBuilders.put(typeName, builder);
|
||||
myType2BuilderMap.put(typeName, builder);
|
||||
Disposer.register(this, builder);
|
||||
Disposer.register(builder, () -> myBuilders.remove(typeName));
|
||||
Disposer.register(builder, () -> myType2BuilderMap.remove(typeName));
|
||||
|
||||
final HierarchyNodeDescriptor descriptor = structure.getBaseDescriptor();
|
||||
builder.select(descriptor, () -> builder.expand(descriptor, null));
|
||||
@@ -371,6 +380,11 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
getCurrentTree().requestFocus();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setCurrentViewType(String typeName) {
|
||||
myCurrentViewType = typeName;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected String getContentDisplayName(@NotNull String typeName, @NotNull PsiElement element) {
|
||||
if (element instanceof PsiNamedElement) {
|
||||
@@ -395,11 +409,14 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
|
||||
private OccurenceNavigator getOccurrenceNavigator() {
|
||||
if (myCurrentViewType == null) {
|
||||
return EMPTY_NAVIGATOR;
|
||||
String currentViewType = getCurrentViewType();
|
||||
if (currentViewType != null) {
|
||||
OccurenceNavigator navigator = myOccurrenceNavigators.get(currentViewType);
|
||||
if (navigator != null) {
|
||||
return navigator;
|
||||
}
|
||||
}
|
||||
final OccurenceNavigator navigator = myOccurrenceNavigators.get(myCurrentViewType);
|
||||
return navigator != null ? navigator : EMPTY_NAVIGATOR;
|
||||
return EMPTY_NAVIGATOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -429,7 +446,15 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
|
||||
@Override
|
||||
protected HierarchyTreeBuilder getCurrentBuilder() {
|
||||
return myBuilders.get(myCurrentViewType);
|
||||
return getBuilderForType(getCurrentViewType());
|
||||
}
|
||||
|
||||
protected final HierarchyTreeBuilder getBuilderForType(String viewType) {
|
||||
return myType2BuilderMap.get(viewType);
|
||||
}
|
||||
|
||||
protected final Iterable<HierarchyTreeBuilder> getBuilders() {
|
||||
return Collections.unmodifiableCollection(myType2BuilderMap.values());
|
||||
}
|
||||
|
||||
final boolean isValidBase() {
|
||||
@@ -444,11 +469,12 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
|
||||
@Override
|
||||
protected JTree getCurrentTree() {
|
||||
if (myCurrentViewType == null) return null;
|
||||
return myType2TreeMap.get(myCurrentViewType);
|
||||
String currentViewType = getCurrentViewType();
|
||||
return currentViewType == null ? null : myType2TreeMap.get(currentViewType);
|
||||
}
|
||||
|
||||
String getCurrentViewType() {
|
||||
@SuppressWarnings("deprecation")
|
||||
protected final String getCurrentViewType() {
|
||||
return myCurrentViewType;
|
||||
}
|
||||
|
||||
@@ -464,22 +490,22 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
|
||||
private void disposeBuilders() {
|
||||
final Collection<HierarchyTreeBuilder> builders = new ArrayList<>(myBuilders.values());
|
||||
final Collection<HierarchyTreeBuilder> builders = new ArrayList<>(myType2BuilderMap.values());
|
||||
for (final HierarchyTreeBuilder builder : builders) {
|
||||
Disposer.dispose(builder);
|
||||
}
|
||||
myBuilders.clear();
|
||||
myType2BuilderMap.clear();
|
||||
}
|
||||
|
||||
void doRefresh(boolean currentBuilderOnly) {
|
||||
if (currentBuilderOnly) LOG.assertTrue(myCurrentViewType != null);
|
||||
if (currentBuilderOnly) LOG.assertTrue(getCurrentViewType() != null);
|
||||
|
||||
if (!isValidBase()) return;
|
||||
|
||||
if (getCurrentBuilder() == null) return; // seems like we are in the middle of refresh already
|
||||
|
||||
final Ref<Pair<List<Object>, List<Object>>> storedInfo = new Ref<>();
|
||||
if (myCurrentViewType != null) {
|
||||
if (getCurrentViewType() != null) {
|
||||
final HierarchyTreeBuilder builder = getCurrentBuilder();
|
||||
storedInfo.set(builder.storeExpandedAndSelectedInfo());
|
||||
}
|
||||
@@ -488,8 +514,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
if (element == null || !isApplicableElement(element)) {
|
||||
return;
|
||||
}
|
||||
final String currentViewType = myCurrentViewType;
|
||||
|
||||
final String currentViewType = getCurrentViewType();
|
||||
if (currentBuilderOnly) {
|
||||
Disposer.dispose(getCurrentBuilder());
|
||||
}
|
||||
@@ -506,14 +531,13 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
|
||||
protected String getCurrentScopeType() {
|
||||
if (myCurrentViewType == null) return null;
|
||||
return myType2ScopeMap.get(myCurrentViewType);
|
||||
String currentViewType = getCurrentViewType();
|
||||
return currentViewType == null ? null : myType2ScopeMap.get(currentViewType);
|
||||
}
|
||||
|
||||
protected class AlphaSortAction extends ToggleAction {
|
||||
public AlphaSortAction() {
|
||||
super(IdeBundle.message("action.sort.alphabetically"), IdeBundle.message("action.sort.alphabetically"),
|
||||
AllIcons.ObjectBrowser.Sorted);
|
||||
super(IdeBundle.message("action.sort.alphabetically"), IdeBundle.message("action.sort.alphabetically"), AllIcons.ObjectBrowser.Sorted);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -525,8 +549,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
public final void setSelected(final AnActionEvent event, final boolean flag) {
|
||||
HierarchyBrowserManager.getSettings(myProject).SORT_ALPHABETICALLY = flag;
|
||||
final Comparator<NodeDescriptor> comparator = getComparator();
|
||||
final Collection<HierarchyTreeBuilder> builders = myBuilders.values();
|
||||
for (final HierarchyTreeBuilder builder : builders) {
|
||||
for (final HierarchyTreeBuilder builder : getBuilders()) {
|
||||
builder.setNodeDescriptorComparator(comparator);
|
||||
}
|
||||
}
|
||||
@@ -560,7 +583,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
final PsiElement selectedElement = browser.getSelectedElement();
|
||||
if (selectedElement == null || !browser.isApplicableElement(selectedElement)) return;
|
||||
|
||||
final String currentViewType = browser.myCurrentViewType;
|
||||
final String currentViewType = browser.getCurrentViewType();
|
||||
Disposer.dispose(browser);
|
||||
final HierarchyProvider provider = BrowseHierarchyActionBase.findProvider(
|
||||
myProviderLanguageExtension, selectedElement, selectedElement.getContainingFile(), event.getDataContext());
|
||||
@@ -676,13 +699,12 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
}
|
||||
|
||||
private void selectScope(final String scopeType) {
|
||||
myType2ScopeMap.put(myCurrentViewType, scopeType);
|
||||
myType2ScopeMap.put(getCurrentViewType(), scopeType);
|
||||
HierarchyBrowserManager.getSettings(myProject).SCOPE = scopeType;
|
||||
|
||||
// invokeLater is called to update state of button before long tree building operation
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
doRefresh(true); // scope is kept per type so other builders doesn't need to be refreshed
|
||||
});
|
||||
// scope is kept per type so other builders doesn't need to be refreshed
|
||||
ApplicationManager.getApplication().invokeLater(() -> doRefresh(true));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -717,7 +739,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
EditScopesDialog.showDialog(myProject, null);
|
||||
if (!getValidScopeNames().contains(myType2ScopeMap.get(myCurrentViewType))) {
|
||||
if (!getValidScopeNames().contains(getCurrentScopeType())) {
|
||||
selectScope(SCOPE_ALL);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user