package org.objectstyle.wolips.bindings.wod; import org.eclipse.jface.text.Position; public class SimpleWodElement extends AbstractWodElement { private String _elementName; private String _elementType; private Position _elementNamePosition; private Position _elementTypePosition; private int _startOffset; private int _endOffset; private int _fullEndOffset; private int _newBindingOffset; private int _newBindingIndent; public SimpleWodElement(IWodElement wodElement) { if (wodElement != null) { _elementName = wodElement.getElementName(); _elementNamePosition = wodElement.getElementNamePosition(); _elementType = wodElement.getElementType(); _elementTypePosition = wodElement.getElementTypePosition(); setInline(wodElement.isInline()); for (IWodBinding binding : wodElement.getBindings()) { addBinding(new SimpleWodBinding(binding)); } _startOffset = wodElement.getStartOffset(); _endOffset = wodElement.getEndOffset(); _fullEndOffset = wodElement.getFullEndOffset(); setNewBindingIndent(wodElement.getNewBindingIndent()); setNewBindingOffset(wodElement.getNewBindingOffset()); } else { setInline(true); } } public SimpleWodElement(String name, String type) { _elementName = name; _elementType = type; } protected SimpleWodElement() { // DO NOTHING } protected void _setElementName(String name) { _elementName = name; } protected void _setElementType(String type) { _elementType = type; } public void setElementName(String name) { String oldElementName = _elementName; _elementName = name; if (_elementNamePosition != null && _elementName != null) { setElementNamePosition(new Position(_elementNamePosition.getOffset(), _elementName.length())); } if (!isInline() && oldElementName != null) { int oldLength = oldElementName.length(); int newLength = name.length(); int diff = newLength - oldLength; setElementTypePosition(new Position(_elementTypePosition.getOffset() + diff, _elementTypePosition.getLength())); } } public String getElementName() { return _elementName; } public Position getElementNamePosition() { return _elementNamePosition; } public void setElementNamePosition(Position elementNamePosition) { _elementNamePosition = elementNamePosition; } public String getElementType() { return _elementType; } public void setElementType(String elementType) { _elementType = elementType; if (_elementTypePosition != null && _elementType != null) { setElementTypePosition(new Position(_elementTypePosition.getOffset(), _elementType.length())); } } public void setElementTypePosition(Position elementTypePosition) { _elementTypePosition = elementTypePosition; } public Position getElementTypePosition() { return _elementTypePosition; } public void setEndOffset(int endOffset) { _endOffset = endOffset; } public int getEndOffset() { return _endOffset; } public int getFullEndOffset() { return _fullEndOffset; } public void setFullEndOffset(int fullEndOffset) { _fullEndOffset = fullEndOffset; } public void setStartOffset(int startOffset) { _startOffset = startOffset; } public int getStartOffset() { return _startOffset; } @Override public int getLineNumber() { return -1; } public void setNewBindingOffset(int newBindingOffset) { _newBindingOffset = newBindingOffset; } public int getNewBindingOffset() { int newBindingOffset = _newBindingOffset; if (newBindingOffset == -1) { newBindingOffset = getEndOffset() - 1; } return newBindingOffset; } public void setNewBindingIndent(int newBindingIndent) { _newBindingIndent = newBindingIndent; } public int getNewBindingIndent() { return _newBindingIndent; } }