/platform/lang-impl/src/com/intellij/refactoring/classMembers/DependencyMemberInfoModel.java

https://bitbucket.org/nbargnesi/idea · Java · 90 lines · 52 code · 15 blank · 23 comment · 8 complexity · f432d6cbf9e143a902b5a4c67d2995e7 MD5 · raw file

  1. /*
  2. * Copyright 2000-2009 JetBrains s.r.o.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. /*
  17. * Created by IntelliJ IDEA.
  18. * User: dsl
  19. * Date: 09.07.2002
  20. * Time: 15:03:42
  21. * To change template for new class use
  22. * Code Style | Class Templates options (Tools | IDE Options).
  23. */
  24. package com.intellij.refactoring.classMembers;
  25. import com.intellij.psi.PsiElement;
  26. import org.jetbrains.annotations.NotNull;
  27. import java.util.Collection;
  28. public abstract class DependencyMemberInfoModel<T extends PsiElement, M extends MemberInfoBase<T>> implements MemberInfoModel<T, M> {
  29. protected MemberDependencyGraph<T, M> myMemberDependencyGraph;
  30. private final int myProblemLevel;
  31. private MemberInfoTooltipManager myTooltipManager;
  32. public DependencyMemberInfoModel(MemberDependencyGraph<T, M> memberDependencyGraph, int problemLevel) {
  33. myMemberDependencyGraph = memberDependencyGraph;
  34. myProblemLevel = problemLevel;
  35. }
  36. public void setTooltipProvider(MemberInfoTooltipManager.TooltipProvider <T, M> tooltipProvider) {
  37. myTooltipManager = new MemberInfoTooltipManager<T, M>(tooltipProvider);
  38. }
  39. public boolean isAbstractEnabled(M member) {
  40. return true;
  41. }
  42. public boolean isAbstractWhenDisabled(M member) {
  43. return false;
  44. }
  45. public boolean isMemberEnabled(M member) {
  46. return true;
  47. }
  48. public int checkForProblems(@NotNull M memberInfo) {
  49. if (memberInfo.isChecked()) return OK;
  50. final T member = memberInfo.getMember();
  51. if (myMemberDependencyGraph.getDependent().contains(member)) {
  52. return myProblemLevel;
  53. }
  54. return OK;
  55. }
  56. public void setMemberDependencyGraph(MemberDependencyGraph<T, M> memberDependencyGraph) {
  57. myMemberDependencyGraph = memberDependencyGraph;
  58. }
  59. public void memberInfoChanged(MemberInfoChange<T, M> event) {
  60. memberInfoChanged(event.getChangedMembers());
  61. }
  62. public void memberInfoChanged(final Collection<M> changedMembers) {
  63. if (myTooltipManager != null) myTooltipManager.invalidate();
  64. for (M changedMember : changedMembers) {
  65. myMemberDependencyGraph.memberChanged(changedMember);
  66. }
  67. }
  68. public String getTooltipText(M member) {
  69. if (myTooltipManager != null) {
  70. return myTooltipManager.getTooltip(member);
  71. } else {
  72. return null;
  73. }
  74. }
  75. }