/*******************************************************************************
* Copyright (c) 2010 György Orosz.
* All rights reserved. This program and the accompanying materials
* are 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
*
* Contributors:
* György Orosz - initial API and implementation
******************************************************************************/
package org.erlide.wrangler.refactoring.selection.internal;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocument;
import org.erlide.engine.ErlangEngine;
import org.erlide.engine.model.IErlElement;
import org.erlide.engine.model.erlang.IErlMember;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.wrangler.refactoring.util.ErlRange;
import org.erlide.wrangler.refactoring.util.IErlRange;
import org.erlide.wrangler.refactoring.util.WranglerUtils;
/**
* Represents an Erlang member selection
*
* @author Gyorgy Orosz
* @version %I%, %G%
*/
public class ErlMemberSelection extends AbstractErlMemberSelection {
protected IErlElement element;
protected IErlMember member;
/**
* Constructor
*
* @param element
* Erlang element - Erlide representation
* @param file
* the file which contains the selection
* @param document
* document which contains the selection
*/
public ErlMemberSelection(final IErlElement element, final IFile file,
final IDocument document) {
this.document = document;
this.file = file;
this.element = element;
if (element instanceof IErlMember) {
member = (IErlMember) element;
}
}
protected int getEndCol() {
return WranglerUtils.calculateColumnFromOffset(
member.getSourceRange().getOffset() + member.getSourceRange().getLength(),
getEndLine() - 1, document);
}
protected int getEndLine() {
return member.getLineEnd() + 1;
}
@Override
public IErlElement getErlElement() {
return element;
}
protected int getStartCol() {
return WranglerUtils.calculateColumnFromOffset(
member.getSourceRange().getOffset(), getStartLine() - 1, document);
}
protected int getStartLine() {
return member.getLineStart() + 1;
}
@Override
public IErlRange getMemberRange() {
return getSelectionRange();
}
@Override
public IErlRange getSelectionRange() {
IErlRange range;
range = new ErlRange(getStartLine(), getStartCol(), getEndLine(), getEndCol(),
member.getSourceRange().getOffset(), member.getSourceRange().getLength());
return range;
}
@Override
public SelectionKind getDetailedKind() {
return getKind();
}
@Override
public IErlModule getErlModule() {
return (IErlModule) ErlangEngine.getInstance().getModel().findElement(file);
}
}