From d02d25f9d96e10929290329c6db56c1fcca49bf4 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Mon, 4 Jul 2016 11:44:48 +0300 Subject: [PATCH] EA-84907 - NPE: ClassFilterEditor$FilterTableModel.getValueAt --- .../debugger/ui/InstanceFilterEditor.java | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java index 2af4adccbb70..b4ea92616d3f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -17,10 +17,12 @@ package com.intellij.debugger.ui; import com.intellij.debugger.DebuggerBundle; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.InputValidatorEx; import com.intellij.openapi.ui.Messages; import com.intellij.ui.classFilter.ClassFilter; import com.intellij.ui.classFilter.ClassFilterEditor; import com.intellij.util.IconUtil; +import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -35,7 +37,34 @@ public class InstanceFilterEditor extends ClassFilterEditor { } protected void addClassFilter() { - String idString = Messages.showInputDialog(myProject, DebuggerBundle.message("add.instance.filter.dialog.prompt"), DebuggerBundle.message("add.instance.filter.dialog.title"), Messages.getQuestionIcon()); + String idString = Messages.showInputDialog(myProject, + DebuggerBundle.message("add.instance.filter.dialog.prompt"), + DebuggerBundle.message("add.instance.filter.dialog.title"), + Messages.getQuestionIcon(), + null, + new InputValidatorEx() { + @Nullable + @Override + public String getErrorText(String inputString) { + try { + //noinspection ResultOfMethodCallIgnored + Long.parseLong(inputString); + return null; + } catch (NumberFormatException e) { + return DebuggerBundle.message("add.instance.filter.dialog.error.numeric.value.expected"); + } + } + + @Override + public boolean checkInput(String inputString) { + return getErrorText(inputString) == null; + } + + @Override + public boolean canClose(String inputString) { + return getErrorText(inputString) == null; + } + }); if (idString != null) { ClassFilter filter = createFilter(idString); myTableModel.addRow(filter); @@ -60,14 +89,4 @@ public class InstanceFilterEditor extends ClassFilterEditor { protected boolean addPatternButtonVisible() { return false; } - - protected ClassFilter createFilter(String pattern) { - try { - Long.parseLong(pattern); - return super.createFilter(pattern); - } catch (NumberFormatException e) { - Messages.showMessageDialog(this, DebuggerBundle.message("add.instance.filter.dialog.error.numeric.value.expected"), DebuggerBundle.message("add.instance.filter.dialog.title"), Messages.getErrorIcon()); - return null; - } - } }