Source:
private List<Object> organizeEditedObjectAndFeature() { final INattableModelManager manager = this.configRegistry.getConfigAttribute(NattableConfigAttributes.NATTABLE_MODEL_MANAGER_CONFIG_ATTRIBUTE, DisplayMode.NORMAL, NattableConfigAttributes.NATTABLE_MODEL_MANAGER_ID); int columnIndex = this.layerCell.getColumnIndex(); int rowIndex = this.layerCell.getRowIndex(); Object row = manager.getRowElement(rowIndex); Object column = manager.getColumnElement(columnIndex); row = AxisUtils.getRepresentedElement(row); column = AxisUtils.getRepresentedElement(column); Element editedElement = null; Object feature = null; if (row instanceof EObject && column != null) { editedElement = (Element) row; feature = column; } else { editedElement = (Element) column; feature = row; } EStructuralFeature realFeature = null; EObject realEditedObject = null; if (feature instanceof EStructuralFeature) { realFeature = (EStructuralFeature) feature; realEditedObject = editedElement; } else if (feature instanceof String) { final String id = AxisUtils.getPropertyId(feature); final List<Stereotype> stereotypesWithEditedFeatureAppliedOnElement = UMLTableUtils.getAppliedStereotypesWithThisProperty(editedElement, id); if (1 == stereotypesWithEditedFeatureAppliedOnElement.size()) { realEditedObject = editedElement.getStereotypeApplication(stereotypesWithEditedFeatureAppliedOnElement.get(0)); final Property prop = UMLTableUtils.getRealStereotypeProperty(editedElement, id); if (null != prop.getName()) { realFeature = realEditedObject.eClass().getEStructuralFeature(prop.getName()); } } } final List<Object> returnedValue = new ArrayList<Object>(); if (null != realEditedObject && null != realFeature) { returnedValue.add(realEditedObject); returnedValue.add(realFeature); } return returnedValue; }

Target:
private List<Object> organizeEditedObjectAndFeature() { final INattableModelManager manager = this.configRegistry.getConfigAttribute(NattableConfigAttributes.NATTABLE_MODEL_MANAGER_CONFIG_ATTRIBUTE, DisplayMode.NORMAL, NattableConfigAttributes.NATTABLE_MODEL_MANAGER_ID); int columnIndex = this.layerCell.getColumnIndex(); int rowIndex = this.layerCell.getRowIndex(); Object row = manager.getRowElement(rowIndex); Object column = manager.getColumnElement(columnIndex); row = AxisUtils.getRepresentedElement(row); column = AxisUtils.getRepresentedElement(column); Element editedElement = null; Object feature = null; if (row instanceof EObject && (column instanceof EStructuralFeature || column instanceof String)) { editedElement = (Element) row; feature = column; } else if (column instanceof EObject && (row instanceof EStructuralFeature || row instanceof String)) { editedElement = (Element) column; feature = row; } else { return null; } EStructuralFeature realFeature = null; EObject realEditedObject = null; if (feature instanceof EStructuralFeature) { realFeature = (EStructuralFeature) feature; realEditedObject = editedElement; } else if (feature instanceof String) { final String id = AxisUtils.getPropertyId(feature); final List<Stereotype> stereotypesWithEditedFeatureAppliedOnElement = UMLTableUtils.getAppliedStereotypesWithThisProperty(editedElement, id); if (1 == stereotypesWithEditedFeatureAppliedOnElement.size()) { realEditedObject = editedElement.getStereotypeApplication(stereotypesWithEditedFeatureAppliedOnElement.get(0)); final Property prop = UMLTableUtils.getRealStereotypeProperty(editedElement, id); if (null != prop.getName()) { realFeature = realEditedObject.eClass().getEStructuralFeature(prop.getName()); } } } if (null != realEditedObject && null != realFeature) { final List<Object> returnedValue = new ArrayList<Object>(); returnedValue.add(realEditedObject); returnedValue.add(realFeature); } return null; }