Example #1
0
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()