@@ -63,43 +63,63 @@ public LineMarkerInfo<?> getLineMarkerInfo(final @NotNull PsiElement element) {
6363 return null ;
6464 }
6565
66- private static @ NotNull LineMarkerInfo createMarkerClass (final @ NotNull DartComponentName name ) {
67- final VirtualFile file = name .getContainingFile ().getVirtualFile ();
68- PsiElement anchor = PsiTreeUtil .getDeepestFirst (name );
69- return new LineMarkerInfo <>(anchor , anchor .getTextRange (), AllIcons .Gutter .OverridenMethod ,
70- element -> DaemonBundle .message ("class.is.subclassed.too.many" ), (e , __ ) -> {
71- DartAnalysisServerService das = DartAnalysisServerService .getInstance (name .getProject ());
72- final List <TypeHierarchyItem > items = das .search_getTypeHierarchy (file , anchor .getTextRange ().getStartOffset (), false );
73- if (items .isEmpty ()) {
74- return ;
75- }
76- // TODO(scheglov) Consider using just Element(s), not PsiElement(s) for better performance
77- final Set <DartComponent > components =
78- DartInheritorsSearcher .getSubClasses (name .getProject (), GlobalSearchScope .allScope (name .getProject ()), items );
79- String popupTitle = DaemonBundle .message ("navigation.title.subclass" , name .getName (), components .size (), "" );
80- String findUsagesTitle = DartBundle .message ("tab.title.subclasses.of.0" , name .getName ());
81- PsiElementListNavigator .openTargets (e , DartResolveUtil .getComponentNameArray (components ), popupTitle , findUsagesTitle ,
82- new DefaultPsiElementCellRenderer ());
83- }, GutterIconRenderer .Alignment .RIGHT );
84- }
66+ private static @ NotNull LineMarkerInfo createMarkerClass (final @ NotNull DartComponentName name ) {
67+ final VirtualFile file = name .getContainingFile ().getVirtualFile ();
68+ PsiElement anchor = PsiTreeUtil .getDeepestFirst (name );
69+ String accessibleName = DaemonBundle .message ("class.is.subclassed.too.many" );
70+
71+ return new LineMarkerInfo <>(
72+ anchor ,
73+ anchor .getTextRange (),
74+ AllIcons .Gutter .OverridenMethod ,
75+ element -> accessibleName ,
76+ (e , __ ) -> {
77+ DartAnalysisServerService das = DartAnalysisServerService .getInstance (name .getProject ());
78+ final List <TypeHierarchyItem > items = das .search_getTypeHierarchy (file , anchor .getTextRange ().getStartOffset (), false );
79+ if (items .isEmpty ()) {
80+ return ;
81+ }
82+ // TODO(scheglov) Consider using just Element(s), not PsiElement(s) for better performance
83+ final Set <DartComponent > components =
84+ DartInheritorsSearcher .getSubClasses (name .getProject (), GlobalSearchScope .allScope (name .getProject ()), items );
85+ String popupTitle = DaemonBundle .message ("navigation.title.subclass" , name .getName (), components .size (), "" );
86+ String findUsagesTitle = DartBundle .message ("tab.title.subclasses.of.0" , name .getName ());
87+ PsiElementListNavigator .openTargets (e , DartResolveUtil .getComponentNameArray (components ), popupTitle , findUsagesTitle ,
88+ new DefaultPsiElementCellRenderer ());
89+ },
90+ GutterIconRenderer .Alignment .RIGHT ,
91+ () -> accessibleName
92+ );
93+ }
94+
95+
96+ private static @ NotNull LineMarkerInfo createMarkerMember (final @ NotNull DartComponentName name ) {
97+ final VirtualFile file = name .getContainingFile ().getVirtualFile ();
98+ PsiElement anchor = PsiTreeUtil .getDeepestFirst (name );
99+ String accessibleName = DaemonBundle .message ("method.is.overridden.too.many" );
100+
101+ return new LineMarkerInfo <>(
102+ anchor ,
103+ anchor .getTextRange (),
104+ AllIcons .Gutter .OverridenMethod ,
105+ element -> accessibleName ,
106+ (e , __ ) -> {
107+ DartAnalysisServerService das = DartAnalysisServerService .getInstance (name .getProject ());
108+ final List <TypeHierarchyItem > items = das .search_getTypeHierarchy (file , anchor .getTextRange ().getStartOffset (), false );
109+ if (items .isEmpty ()) {
110+ return ;
111+ }
112+ // TODO(scheglov) Consider using just Element(s), not PsiElement(s) for better performance
113+ final Set <DartComponent > components =
114+ DartInheritorsSearcher .getSubMembers (name .getProject (), GlobalSearchScope .allScope (name .getProject ()), items );
115+ String popupTitle = DaemonBundle .message ("navigation.title.overrider.method" , name .getName (), components .size ());
116+ String findUsagesTitle = DartBundle .message ("tab.title.overriding.methods.of.0" , name .getName ());
117+ PsiElementListNavigator .openTargets (e , DartResolveUtil .getComponentNameArray (components ), popupTitle , findUsagesTitle ,
118+ new DefaultPsiElementCellRenderer ());
119+ },
120+ GutterIconRenderer .Alignment .RIGHT ,
121+ () -> accessibleName
122+ );
123+ }
85124
86- private static @ NotNull LineMarkerInfo createMarkerMember (final @ NotNull DartComponentName name ) {
87- final VirtualFile file = name .getContainingFile ().getVirtualFile ();
88- PsiElement anchor = PsiTreeUtil .getDeepestFirst (name );
89- return new LineMarkerInfo <>(anchor , anchor .getTextRange (), AllIcons .Gutter .OverridenMethod ,
90- element -> DaemonBundle .message ("method.is.overridden.too.many" ), (e , __ ) -> {
91- DartAnalysisServerService das = DartAnalysisServerService .getInstance (name .getProject ());
92- final List <TypeHierarchyItem > items = das .search_getTypeHierarchy (file , anchor .getTextRange ().getStartOffset (), false );
93- if (items .isEmpty ()) {
94- return ;
95- }
96- // TODO(scheglov) Consider using just Element(s), not PsiElement(s) for better performance
97- final Set <DartComponent > components =
98- DartInheritorsSearcher .getSubMembers (name .getProject (), GlobalSearchScope .allScope (name .getProject ()), items );
99- String popupTitle = DaemonBundle .message ("navigation.title.overrider.method" , name .getName (), components .size ());
100- String findUsagesTitle = DartBundle .message ("tab.title.overriding.methods.of.0" , name .getName ());
101- PsiElementListNavigator .openTargets (e , DartResolveUtil .getComponentNameArray (components ), popupTitle , findUsagesTitle ,
102- new DefaultPsiElementCellRenderer ());
103- }, GutterIconRenderer .Alignment .RIGHT );
104- }
105125}
0 commit comments