use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.
the class PositionManagerImpl method getClassReferences.
private List<ReferenceType> getClassReferences(@NotNull final PsiClass psiClass, SourcePosition position) {
ApplicationManager.getApplication().assertReadAccessAllowed();
boolean isLocalOrAnonymous = false;
int requiredDepth = 0;
String className = JVMNameUtil.getNonAnonymousClassName(psiClass);
if (className == null) {
isLocalOrAnonymous = true;
Pair<PsiClass, Integer> enclosing = getTopOrStaticEnclosingClass(psiClass);
PsiClass topLevelClass = enclosing.first;
if (topLevelClass != null) {
final String parentClassName = JVMNameUtil.getNonAnonymousClassName(topLevelClass);
if (parentClassName != null) {
requiredDepth = enclosing.second;
className = parentClassName;
}
} else {
final StringBuilder sb = new StringBuilder();
PsiTreeUtil.treeWalkUp(psiClass, null, (element, element2) -> {
sb.append('\n').append(element);
return true;
});
LOG.info("Local or anonymous class " + psiClass + " has no non-local parent, parents:" + sb);
}
}
if (className == null) {
return Collections.emptyList();
}
if (!isLocalOrAnonymous) {
return myDebugProcess.getVirtualMachineProxy().classesByName(className);
}
// the name is a parent class for a local or anonymous class
final List<ReferenceType> outers = myDebugProcess.getVirtualMachineProxy().classesByName(className);
final List<ReferenceType> result = new ArrayList<>(outers.size());
for (ReferenceType outer : outers) {
final ReferenceType nested = findNested(outer, 0, psiClass, requiredDepth, position);
if (nested != null) {
result.add(nested);
}
}
return result;
}
use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.
the class ShowNewInstancesAction method getInstancesCount.
@Override
protected int getInstancesCount(AnActionEvent e) {
ClassesTable.ReferenceCountProvider countProvider = e.getData(ClassesTable.REF_COUNT_PROVIDER_KEY);
ReferenceType selectedClass = getSelectedClass(e);
if (countProvider == null || selectedClass == null) {
return -1;
}
return countProvider.getNewInstancesCount(selectedClass);
}
use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.
the class TrackInstancesToggleAction method setSelected.
@Override
public void setSelected(AnActionEvent e, boolean state) {
final ReferenceType selectedClass = getSelectedClass(e);
final Project project = e.getProject();
if (selectedClass != null && project != null && !project.isDisposed()) {
InstancesTracker tracker = InstancesTracker.getInstance(project);
boolean isAlreadyTracked = tracker.isTracked(selectedClass.name());
if (isAlreadyTracked && !state) {
tracker.remove(selectedClass.name());
}
if (!isAlreadyTracked && state) {
tracker.add(selectedClass.name(), TrackingType.CREATION);
}
}
}
use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.
the class ClassesFilteredView method isShowNewInstancesEvent.
private boolean isShowNewInstancesEvent(@NotNull MouseEvent e) {
final int col = myTable.columnAtPoint(e.getPoint());
final int row = myTable.rowAtPoint(e.getPoint());
if (col == -1 || row == -1 || myTable.convertColumnIndexToModel(col) != DIFF_COLUMN_INDEX) {
return false;
}
final int modelRow = myTable.convertRowIndexToModel(row);
final ReferenceType ref = (ReferenceType) myTable.getModel().getValueAt(modelRow, CLASSNAME_COLUMN_INDEX);
final ConstructorInstancesTracker tracker = myConstructorTrackedClasses.getOrDefault(ref, null);
return tracker != null && tracker.isReady() && tracker.getCount() > 0;
}
use of com.sun.jdi.ReferenceType in project intellij-community by JetBrains.
the class JumpToTypeSourceAction method getObjectType.
@Nullable
private static ReferenceType getObjectType(@NotNull ReferenceType ref) {
if (!(ref instanceof ArrayType)) {
return ref;
}
final String elementTypeName = ref.name().replace("[]", "");
final VirtualMachine vm = ref.virtualMachine();
final List<ReferenceType> referenceTypes = vm.classesByName(elementTypeName);
if (referenceTypes.size() == 1) {
return referenceTypes.get(0);
}
return null;
}
Aggregations