/******************************************************************************* * Copyright (c) 2007 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.cdi.internal.core.impl.definition; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.common.model.util.EclipseResourceUtil; import org.jboss.tools.common.model.util.PositionHolder; import org.jboss.tools.common.text.INodeReference; /** * @author Viacheslav Kabanovich */ public class XMLNodeReference implements INodeReference { protected XModelObject object; protected String attribute; protected PositionHolder h = null; public XMLNodeReference() { } public XMLNodeReference(XModelObject object, String attribute) { this.object = object; this.attribute = attribute; } public int getLength() { getPositionHolder(); int length = h.getEnd() - h.getStart(); return length < 0 ? 0 : length; } public int getStartPosition() { getPositionHolder(); return h.getStart(); } public String getValue() { return object.getAttributeValue(attribute); } PositionHolder getPositionHolder() { if(h == null) { h = PositionHolder.getPosition(object, attribute); } h.update(); return h; } public XModelObject getObject() { return object; } public IResource getResource() { IFile file = (IFile)object.getAdapter(IFile.class); if(file == null) { return EclipseResourceUtil.getProject(object); } return file; } }