void (@NotNull AnActionEvent e) { Window activeFrame = IdeFrameImpl.getActiveFrame(); if (activeFrame == null) { return; } setData(); if (!lafListenerAdded) { lafListenerAdded = true; ApplicationManager.getApplication().getMessageBus().connect().subscribe(LafManagerListener.TOPIC, source -> setData()); } JTable table = new JTable(data, new String[] {"Property", "Value"}) { @Override public TableCellRenderer getCellRenderer(int row, int column) { return (table1, value, isSelected, hasFocus, row1, column1) -> { JLabel label = new JLabel((String)data[row][column]); label.setOpaque(true); label.setBackground(JBColor.border()); label.setBorder(JBUI.Borders.emptyLeft((int) Math.ceil(UISettings.getDefFontSize()))); return label; }; } @Override public boolean isCellEditable(int row, int column) { return column == 1; } }; table.getColumnModel().getColumn(1).setCellEditor(new AbstractTableCellEditor() { final JTextField component = new JTextField(); @Override public Object getCellEditorValue() { return component.getText(); } @Override public Component getTableCellEditorComponent(JTable table1, Object value, boolean isSelected, int row, int column) { component.setText((String)data[row][column]); return component; } }); table.getColumnModel().getColumn(1).getCellEditor().addCellEditorListener(new CellEditorListener() { @Override public void editingStopped(ChangeEvent e) { String prop = (String)data[table.getSelectedRow()][0]; try { int value = Integer.parseInt((String)((TableCellEditor)e.getSource()).getCellEditorValue()); setGrayFilterProperty(prop, value); data[table.getSelectedRow()][1] = String.valueOf(getGrayFilterProperty(prop)); IconLoader.clearCache(); updateUI(SwingUtilities.getWindowAncestor(table)); } catch (Throwable ignored) { } } @Override public void editingCanceled(ChangeEvent e) { } }); table.setColumnSelectionAllowed(true); table.setTableHeader(null); for (int c=0; c<table.getColumnCount(); c++) table.getColumnModel().getColumn(c).setPreferredWidth(JBUIScale.scale(100)); for (int r=0; r<table.getRowCount(); r++) table.setRowHeight(r, (int)Math.ceil(UISettings.getDefFontSize() * 2)); JPanel tablePanel = new JPanel(new BorderLayout()); tablePanel.add(table, BorderLayout.CENTER); DialogWrapper dlg = new DialogWrapper(false) { { init(); } @Override protected JComponent createCenterPanel() { return tablePanel; } }; dlg.setModal(false); dlg.setTitle("GrayFilter"); dlg.setResizable(false); dlg.show(); }