package com.python.pydev.analysis.search_index; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.text.Region; import org.eclipse.search.ui.text.Match; import org.python.pydev.core.ModulesKey; import org.python.pydev.shared_ui.search.ICustomMatch; public class PyModuleMatch extends Match implements ICustomMatch { private PyModuleLineElement fLineElement; private Region fOriginalLocation; private long fCreationTimeStamp; public final ModulesKey modulesKey; public PyModuleMatch(IFile element, int offset, int length, PyModuleLineElement lineEntry, ModulesKey modulesKey) { super(element, offset, length); Assert.isLegal(lineEntry != null); this.modulesKey = modulesKey; fLineElement = lineEntry; fCreationTimeStamp = element.getModificationStamp(); } @Override public void setOffset(int offset) { if (fOriginalLocation == null) { // remember the original location before changing it fOriginalLocation = new Region(getOffset(), getLength()); } super.setOffset(offset); } @Override public void setLength(int length) { if (fOriginalLocation == null) { // remember the original location before changing it fOriginalLocation = new Region(getOffset(), getLength()); } super.setLength(length); } @Override public int getOriginalOffset() { if (fOriginalLocation != null) { return fOriginalLocation.getOffset(); } return getOffset(); } @Override public int getOriginalLength() { if (fOriginalLocation != null) { return fOriginalLocation.getLength(); } return getLength(); } @Override public PyModuleLineElement getLineElement() { return fLineElement; } @Override public IFile getFile() { return (IFile) getElement(); } public boolean isFileSearch() { return fLineElement == null; } public long getCreationTimeStamp() { return fCreationTimeStamp; } }