Component (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isEditing() && getEditingRow() == row) { return new JLabel(ApplicationBundle.message("arrangement.text.empty.rule")); } if (value instanceof ArrangementRepresentationAware) { return adjustHeight(((ArrangementRepresentationAware)value).getComponent(), row); } ArrangementListRowDecorator component = myComponents.get(row); if (component == null) { if (!(value instanceof StdArrangementMatchRule rule)) { return new JLabel(ApplicationBundle.message("arrangement.text.empty.rule")); } final boolean allowModifications = allowModifications(rule); ArrangementUiComponent ruleComponent = myFactory.getComponent(rule.getMatcher().getCondition(), rule, allowModifications); component = new ArrangementListRowDecorator(ruleComponent, ArrangementMatchingRulesControl.this); component.setError(getValidator().validate(row)); myComponents.set(row, component); } component.setUnderMouse(myRowUnderMouse == row); component.setRowIndex((myEditorRow >= 0 && row > myEditorRow) ? row : row + 1); component.setSelected(getSelectionModel().isSelectedIndex(row) || (myEditorRow >= 0 && row == myEditorRow - 1)); component.setBeingEdited(myEditorRow >= 0 && myEditorRow == row + 1); boolean showSortIcon = value instanceof StdArrangementMatchRule && StdArrangementTokens.Order.BY_NAME.equals(((StdArrangementMatchRule)value).getOrderType()); component.setShowSortIcon(showSortIcon); return component.getUiComponent(); }