package org.eclipse.dltk.validators.internal.externalchecker.ui; import org.eclipse.dltk.validators.internal.externalchecker.core.Rule; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.swt.widgets.TableItem; public class RuleCelllModifier implements ICellModifier { private ExternalCheckerConfigurationPage page; // private String[] columnNames; public RuleCelllModifier (ExternalCheckerConfigurationPage page) { super(); this.page = page; } public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { int index = page.getColumnNames().indexOf(property); Object result = null; Rule rule = (Rule) element; switch (index) { case 0: result = rule.getDescription(); break; case 1: String stringValue = rule.getType(); String[] choices = page.getChoices(property); int i = choices.length - 1; while (!stringValue.equals(choices[i]) && i > 0) --i; result = new Integer(i); default: break; } return result; } public void modify(Object element, String property, Object value) { int index = page.getColumnNames().indexOf(property); TableItem item = (TableItem) element; Rule task = (Rule) item.getData(); String valueString; switch(index){ case 0: valueString = ((String) value).trim(); task.setDescription(valueString); page.getRulesList().ruleChanged(task); break; case 1: valueString = page.getChoices(property)[((Integer) value).intValue()].trim(); if (!task.getType().equals(valueString)) { task.setType(valueString); } break; } page.getRulesList().ruleChanged(task); } }