void (int row) { // Reset state. myRow = row; myFocusRequestor = myDefaultFocusRequestor; mySkipStateChange = true; try { for (ArrangementUiComponent component : myComponents.values()) { component.reset(); } } finally { mySkipStateChange = false; } ArrangementMatchingRulesModel model = myControl.getModel(); if (row < 0 || row >= model.getSize()) { myRow = -1; return; } Object element = model.getElementAt(row); ArrangementSettingsToken orderType = element instanceof ArrangementMatchRule ? ((ArrangementMatchRule)element).getOrderType() : null; final ArrangementMatchCondition condition; final Map<ArrangementSettingsToken, Object> conditionTokens; if (element instanceof EmptyArrangementRuleComponent) { // We need to disable conditions which are not applicable for empty rules (e.g. we don't want to enable 'volatile' condition // for java rearranger if no 'field' condition is selected. condition = null; conditionTokens = new HashMap<>(); } else if (!(element instanceof StdArrangementMatchRule)) { return; } else { condition = ((StdArrangementMatchRule)element).getMatcher().getCondition(); conditionTokens = ArrangementUtil.extractTokens(condition); } mySkipStateChange = true; try { for (ArrangementUiComponent component : myComponents.values()) { ArrangementSettingsToken token = component.getToken(); if (token != null && (component.getAvailableTokens().contains(orderType) || isEnabled(condition, token))) { component.setEnabled(true); if (component.getAvailableTokens().contains(orderType)) { component.chooseToken(orderType); } else { component.setSelected(conditionTokens.containsKey(token)); } Object value = conditionTokens.get(token); if (value != null) { component.setData(value); } } } refreshConditions(); } finally { mySkipStateChange = false; } }