blob: 6d0895e1f8bbcce50f10d4f1e7fd456d991a2f83 [file] [log] [blame]
/*
* Copyright 2000-2009 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Created by IntelliJ IDEA.
* User: dsl
* Date: 09.07.2002
* Time: 15:03:42
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package com.intellij.refactoring.classMembers;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
public abstract class DependencyMemberInfoModel<T extends PsiElement, M extends MemberInfoBase<T>> implements MemberInfoModel<T, M> {
protected MemberDependencyGraph<T, M> myMemberDependencyGraph;
private final int myProblemLevel;
private MemberInfoTooltipManager myTooltipManager;
public DependencyMemberInfoModel(MemberDependencyGraph<T, M> memberDependencyGraph, int problemLevel) {
myMemberDependencyGraph = memberDependencyGraph;
myProblemLevel = problemLevel;
}
public void setTooltipProvider(MemberInfoTooltipManager.TooltipProvider <T, M> tooltipProvider) {
myTooltipManager = new MemberInfoTooltipManager<T, M>(tooltipProvider);
}
@Override
public boolean isAbstractEnabled(M member) {
return true;
}
@Override
public boolean isAbstractWhenDisabled(M member) {
return false;
}
@Override
public boolean isMemberEnabled(M member) {
return true;
}
@Override
public int checkForProblems(@NotNull M memberInfo) {
if (memberInfo.isChecked()) return OK;
final T member = memberInfo.getMember();
if (myMemberDependencyGraph.getDependent().contains(member)) {
return myProblemLevel;
}
return OK;
}
public void setMemberDependencyGraph(MemberDependencyGraph<T, M> memberDependencyGraph) {
myMemberDependencyGraph = memberDependencyGraph;
}
@Override
public void memberInfoChanged(MemberInfoChange<T, M> event) {
memberInfoChanged(event.getChangedMembers());
}
public void memberInfoChanged(final Collection<M> changedMembers) {
if (myTooltipManager != null) myTooltipManager.invalidate();
for (M changedMember : changedMembers) {
myMemberDependencyGraph.memberChanged(changedMember);
}
}
@Override
public String getTooltipText(M member) {
if (myTooltipManager != null) {
return myTooltipManager.getTooltip(member);
} else {
return null;
}
}
}