use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.
the class InstanceFilter method createClassFilters.
public static ClassFilter[] createClassFilters(InstanceFilter[] filters) {
ClassFilter[] cFilters = new ClassFilter[filters.length];
for (int i = 0; i < cFilters.length; i++) {
InstanceFilter instanceFilter = filters[i];
ClassFilter classFilter = new ClassFilter();
classFilter.setEnabled(instanceFilter.isEnabled());
classFilter.setPattern(Long.toString(instanceFilter.getId()));
cFilters[i] = classFilter;
}
return cFilters;
}
use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.
the class AddSteppingFilterAction method actionPerformed.
public void actionPerformed(final AnActionEvent e) {
final DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(e.getDataContext());
DebugProcessImpl process = debuggerContext.getDebugProcess();
if (process == null) {
return;
}
final StackFrameProxyImpl proxy = PopFrameAction.getStackFrameProxy(e);
process.getManagerThread().schedule(new DebuggerCommandImpl() {
protected void action() throws Exception {
final String name = getClassName(proxy != null ? proxy : debuggerContext.getFrameProxy());
if (name == null) {
return;
}
final Project project = e.getData(CommonDataKeys.PROJECT);
ApplicationManager.getApplication().invokeLater(() -> {
String filter = Messages.showInputDialog(project, "", "Add Stepping Filter", null, name, null);
if (filter != null) {
ClassFilter[] newFilters = ArrayUtil.append(DebuggerSettings.getInstance().getSteppingFilters(), new ClassFilter(filter));
DebuggerSettings.getInstance().setSteppingFilters(newFilters);
}
});
}
});
}
use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.
the class DebuggerUtilsEx method writeFilters.
public static void writeFilters(Element parentNode, @NonNls String tagName, ClassFilter[] filters) throws WriteExternalException {
for (ClassFilter filter : filters) {
Element element = new Element(tagName);
parentNode.addContent(element);
DefaultJDOMExternalizer.writeExternal(filter, element);
}
}
use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.
the class RequestManagerImpl method addLocatableRequest.
private void addLocatableRequest(FilteredRequestor requestor, EventRequest request) {
if (DebuggerSettings.SUSPEND_ALL.equals(requestor.getSuspendPolicy())) {
request.setSuspendPolicy(EventRequest.SUSPEND_ALL);
} else {
//when requestor.SUSPEND_POLICY == SUSPEND_NONE
//we should pause thread in order to evaluate conditions
request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
}
// count filter has to be applied manually if condition is specified
if (requestor.isCountFilterEnabled() && !requestor.isConditionEnabled()) {
request.addCountFilter(requestor.getCountFilter());
}
if (requestor.isClassFiltersEnabled() && !(request instanceof BreakpointRequest)) /*no built-in class filters support for breakpoint requests*/
{
ClassFilter[] classFilters = requestor.getClassFilters();
if (DebuggerUtilsEx.getEnabledNumber(classFilters) == 1) {
for (final ClassFilter filter : classFilters) {
if (!filter.isEnabled()) {
continue;
}
final JVMName jvmClassName = ApplicationManager.getApplication().runReadAction(new Computable<JVMName>() {
public JVMName compute() {
PsiClass psiClass = DebuggerUtils.findClass(filter.getPattern(), myDebugProcess.getProject(), myDebugProcess.getSearchScope());
if (psiClass == null) {
return null;
}
return JVMNameUtil.getJVMQualifiedName(psiClass);
}
});
String pattern = filter.getPattern();
try {
if (jvmClassName != null) {
pattern = jvmClassName.getName(myDebugProcess);
}
} catch (EvaluateException ignored) {
}
addClassFilter(request, pattern);
// adding more than one inclusion filter does not work, only events that satisfy ALL filters are placed in the event queue.
break;
}
}
for (ClassFilter filter : requestor.getClassExclusionFilters()) {
if (filter.isEnabled()) {
addClassExclusionFilter(request, filter.getPattern());
}
}
}
registerRequestInternal(requestor, request);
}
use of com.intellij.ui.classFilter.ClassFilter in project intellij-community by JetBrains.
the class FilteredRequestorImpl method readExternal.
public void readExternal(Element parentNode) throws InvalidDataException {
DefaultJDOMExternalizer.readExternal(this, parentNode);
if (DebuggerSettings.SUSPEND_NONE.equals(SUSPEND_POLICY)) {
// compatibility with older format
SUSPEND = false;
SUSPEND_POLICY = DebuggerSettings.SUSPEND_ALL;
}
String condition = JDOMExternalizerUtil.readField(parentNode, CONDITION_OPTION_NAME);
if (condition != null) {
setCondition(new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, condition));
}
myClassFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(FILTER_OPTION_NAME));
myClassExclusionFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(EXCLUSION_FILTER_OPTION_NAME));
final ClassFilter[] instanceFilters = DebuggerUtilsEx.readFilters(parentNode.getChildren(INSTANCE_ID_OPTION_NAME));
final List<InstanceFilter> iFilters = new ArrayList<>(instanceFilters.length);
for (ClassFilter instanceFilter : instanceFilters) {
try {
iFilters.add(InstanceFilter.create(instanceFilter));
} catch (Exception ignored) {
}
}
myInstanceFilters = iFilters.isEmpty() ? InstanceFilter.EMPTY_ARRAY : iFilters.toArray(new InstanceFilter[iFilters.size()]);
}
Aggregations