class TableModel(AbstractTableModel): def __init__(self, txt_file): self.paths = ArrayList() with open(txt_file, 'r') as f: for line in f: self.paths.add(line[:-1]) # remove line break self.filtered_paths = self.paths def getColumnName(self, col): return "Path" def getRowCount(self): return len(self.filtered_paths) def getColumnCount(self): return 1 def getValueAt(self, row, col): return self.filtered_paths[row] def isCellEditable(self, row, col): return False def setValueAt(self, value, row, col): pass def remove(self, row): pass def filter(self, regex): # regex is a string if not regex: # null or empty string self.filtered_paths = self.paths # reset: show all IJ.showMessage("Enter a valid search text string") return fn = None if '/' == regex[0]: fn = partial(re.search, re.compile(regex[1:])) else: fn = lambda path: -1 != path.find(regex) try: self.filtered_paths = self.paths.parallelStream().filter( Filter(fn)).toArray() except: print sys.exc_info()