/** * Asks current editor to refresh its state in accordance with the arrangement rule shown at the * given row. * * @param row row index of the rule which match condition should be edited (if defined); <code> * '-1'</code> as an indication that no settings should be active */ public void reset(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 = ContainerUtilRt.newHashMap(); } 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 && (token.equals(orderType) || mySettingsManager.isEnabled(token, condition))) { component.setEnabled(true); component.setSelected(conditionTokens.containsKey(token)); Object value = conditionTokens.get(token); if (value != null) { component.setData(value); } } } refreshConditions(); } finally { mySkipStateChange = false; } }
private void apply() { final Pair<ArrangementMatchCondition, ArrangementSettingsToken> pair = buildCondition(); final Object modelValue; if (pair == null) { modelValue = new EmptyArrangementRuleComponent(myControl.getRowHeight(myRow)); } else { modelValue = new StdArrangementMatchRule(new StdArrangementEntryMatcher(pair.first), pair.second); } myControl.getModel().set(myRow, modelValue); myControl.repaintRows(myRow, myRow, true); }