public void filterBase(String ft) { if (ft.contains("-i")) { RowFilter<Storage, Object> tmpFilter = null; try { tmpFilter = RowFilter.regexFilter("^new$", Storage.COL_TAGS); } catch (Exception e) { System.err.println("Failed to filter new ones"); } tableSorter.setRowFilter(tmpFilter); return; } boolean names = false; boolean bads = false; boolean exclusive = true; if (ft.contains("-n")) { names = true; ft = ft.substring(0, ft.indexOf("-n")) + ft.substring(ft.indexOf("-n") + 2); } if (ft.contains("-z")) { bads = true; ft = ft.substring(0, ft.indexOf("-z")) + ft.substring(ft.indexOf("-z") + 2); } if (ft.contains("-x")) { exclusive = false; ft = ft.substring(0, ft.indexOf("-x")) + ft.substring(ft.indexOf("-x") + 2); } ft = ft.replaceAll("[^a-zA-Z0-9]", " ").replaceAll(" *", " ").trim().toLowerCase(); String[] terms = ft.split(" "); ArrayList<RowFilter<Storage, Object>> termFilters = new ArrayList<RowFilter<Storage, Object>>(); for (int i = 0; i < terms.length; i++) { if (terms[i].length() > 0) { try { RowFilter<Storage, Object> tmp = RowFilter.regexFilter(".*" + terms[i] + ".*", Storage.COL_TAGS); if (names) tmp = RowFilter.regexFilter(".*" + terms[i] + ".*", Storage.COL_NAME); termFilters.add(tmp); } catch (Exception e) { // do nothing System.err.println("Term filter error for term " + terms[i]); } } } RowFilter<Storage, Object> badFilter = RowFilter.regexFilter(".*zz.*", Storage.COL_TAGS); if (!bads) badFilter = RowFilter.notFilter(badFilter); RowFilter<Storage, Object> omniFilter = badFilter; if (termFilters.size() != 0) { ArrayList<RowFilter<Storage, Object>> tmpFilters = new ArrayList<RowFilter<Storage, Object>>(); RowFilter<Storage, Object> orFilter = (exclusive ? RowFilter.andFilter(termFilters) : RowFilter.orFilter(termFilters)); tmpFilters.add(orFilter); tmpFilters.add(badFilter); omniFilter = RowFilter.andFilter(tmpFilters); } tableSorter.setRowFilter(omniFilter); }
@Override public void setModel(final TableModel model) { super.setModel(model); if (model instanceof SortableColumnModel) { final SortableColumnModel sortableModel = (SortableColumnModel) model; if (sortableModel.isSortable()) { final TableRowSorter<TableModel> rowSorter = createRowSorter(model); rowSorter.setSortsOnUpdates(isSortOnUpdates()); setRowSorter(rowSorter); final RowSorter.SortKey sortKey = sortableModel.getDefaultSortKey(); if (sortKey != null && sortKey.getColumn() >= 0 && sortKey.getColumn() < model.getColumnCount()) { if (sortableModel.getColumnInfos()[sortKey.getColumn()].isSortable()) { rowSorter.setSortKeys(Arrays.asList(sortKey)); } } } else { final RowSorter<? extends TableModel> rowSorter = getRowSorter(); if (rowSorter instanceof DefaultColumnInfoBasedRowSorter) { setRowSorter(null); } } } }
public NetworkTable(Properties display) { this.display = display; model = new GenericTableModel( new String[] {" ", "Address", "Label", "Description", "Pivot"}, "Address", 256); table = new ATable(model); TableRowSorter sorter = new TableRowSorter(model); sorter.toggleSortOrder(1); Comparator hostCompare = new Comparator() { public int compare(Object a, Object b) { long aa = Route.ipToLong(a + ""); long bb = Route.ipToLong(b + ""); if (aa > bb) { return 1; } else if (aa < bb) { return -1; } else { return 0; } } public boolean equals(Object a, Object b) { return (a + "").equals(b + ""); } }; sorter.setComparator(1, hostCompare); sorter.setComparator(4, hostCompare); table.setRowSorter(sorter); table.setColumnSelectionAllowed(false); table.getColumn("Address").setPreferredWidth(125); table.getColumn("Label").setPreferredWidth(125); table.getColumn("Pivot").setPreferredWidth(125); table.getColumn(" ").setPreferredWidth(32); table.getColumn(" ").setMaxWidth(32); table.getColumn("Description").setPreferredWidth(500); final TableCellRenderer parent = table.getDefaultRenderer(Object.class); table.setDefaultRenderer( Object.class, new TableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { JLabel component = (JLabel) parent.getTableCellRendererComponent(table, value, isSelected, false, row, col); if (col == 4 && Boolean.TRUE.equals(model.getValueAt(table, row, "Active"))) { component.setFont(component.getFont().deriveFont(Font.BOLD)); } else if (col == 1 && !"".equals(model.getValueAt(table, row, "Description"))) { component.setFont(component.getFont().deriveFont(Font.BOLD)); } else { component.setFont(component.getFont().deriveFont(Font.PLAIN)); } String tip = model.getValueAt(table, row, "Tooltip") + ""; if (tip.length() > 0) { component.setToolTipText(tip); } return component; } }); table .getColumn(" ") .setCellRenderer( new TableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { JLabel component = (JLabel) parent.getTableCellRendererComponent( table, value, isSelected, false, row, col); component.setIcon(new ImageIcon((Image) model.getValueAt(table, row, "Image"))); component.setText(""); String tip = model.getValueAt(table, row, "Tooltip") + ""; if (tip.length() > 0) { component.setToolTipText(tip); } return component; } }); table.addMouseListener( new MouseAdapter() { public void all(MouseEvent ev) { if (ev.isPopupTrigger()) { popup.showGraphPopup(getSelectedHosts(), ev); ev.consume(); } } public void mouseClicked(MouseEvent ev) { all(ev); } public void mousePressed(MouseEvent ev) { all(ev); } public void mouseReleased(MouseEvent ev) { all(ev); } }); setLayout(new BorderLayout()); scroller = new JScrollPane(table); add(scroller, BorderLayout.CENTER); }