1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 06:45:43 +02:00

Make use of position tracker in include browser.

This commit is contained in:
Markus Schorn 2006-07-04 11:13:39 +00:00
parent 7aef1d752c
commit a4e5148925
6 changed files with 21 additions and 9 deletions

View file

@ -26,5 +26,5 @@ public interface IPositionTrackerManager {
* @param timestamp identifies the version of the file stored on disk. * @param timestamp identifies the version of the file stored on disk.
* @return the requested position adapter or <code>null</code>. * @return the requested position adapter or <code>null</code>.
*/ */
IPositionConverter findPositionAdapter(IFile file, long timestamp); IPositionConverter findPositionConverter(IFile file, long timestamp);
} }

View file

@ -168,7 +168,7 @@ public class PositionTrackerManager implements IPositionTrackerManager, IFileBuf
} }
} }
public synchronized IPositionConverter findPositionAdapter(IFile file, long timestamp) { public synchronized IPositionConverter findPositionConverter(IFile file, long timestamp) {
PositionTrackerChain chain= (PositionTrackerChain) fPositionTrackerMap.get(file.getFullPath()); PositionTrackerChain chain= (PositionTrackerChain) fPositionTrackerMap.get(file.getFullPath());
if (chain != null) { if (chain != null) {
return chain.findTrackerAt(timestamp); return chain.findTrackerAt(timestamp);

View file

@ -49,7 +49,7 @@ public class IBContentProvider extends AsyncTreeContentProvider {
public Object[] syncronouslyComputeChildren(Object parentElement) { public Object[] syncronouslyComputeChildren(Object parentElement) {
if (parentElement instanceof ITranslationUnit) { if (parentElement instanceof ITranslationUnit) {
ITranslationUnit tu = (ITranslationUnit) parentElement; ITranslationUnit tu = (ITranslationUnit) parentElement;
return new Object[] { new IBNode(null, new IBFile(tu), null, null, 0) }; return new Object[] { new IBNode(null, new IBFile(tu), null, null, 0, 0) };
} }
if (parentElement instanceof IBNode) { if (parentElement instanceof IBNode) {
IBNode node = (IBNode) parentElement; IBNode node = (IBNode) parentElement;
@ -90,7 +90,7 @@ public class IBContentProvider extends AsyncTreeContentProvider {
} }
IBNode newnode= new IBNode(node, targetFile, directiveFile, IBNode newnode= new IBNode(node, targetFile, directiveFile,
include.getName(), include.getOffset()); include.getName(), include.getOffset(), include.getTimestamp());
newnode.setIsActiveCode(include.isActiveCode()); newnode.setIsActiveCode(include.isActiveCode());
newnode.setIsSystemInclude(include.isSystemInclude()); newnode.setIsSystemInclude(include.isSystemInclude());
result[i]= newnode; result[i]= newnode;

View file

@ -35,12 +35,13 @@ public class IBNode implements IAdaptable {
private boolean fIsSystemInclude= false; private boolean fIsSystemInclude= false;
private boolean fIsActive= true; private boolean fIsActive= true;
private boolean fIsRecursive; private boolean fIsRecursive;
private long fTimestamp;
/** /**
* Creates a new node for the include browser * Creates a new node for the include browser
*/ */
public IBNode(IBNode parent, IBFile represents, IBFile fileOfDirective, String nameOfDirective, public IBNode(IBNode parent, IBFile represents, IBFile fileOfDirective, String nameOfDirective,
int charOffset) { int charOffset, long timestamp) {
fParent= parent; fParent= parent;
fRepresentedFile= represents; fRepresentedFile= represents;
fDirectiveFile= fileOfDirective; fDirectiveFile= fileOfDirective;
@ -48,6 +49,7 @@ public class IBNode implements IAdaptable {
fDirectiveCharacterOffset= charOffset; fDirectiveCharacterOffset= charOffset;
fIsRecursive= computeIsRecursive(fParent, represents.getLocation()); fIsRecursive= computeIsRecursive(fParent, represents.getLocation());
fHashCode= computeHashCode(); fHashCode= computeHashCode();
fTimestamp= timestamp;
} }
private int computeHashCode() { private int computeHashCode() {
@ -183,4 +185,8 @@ public class IBNode implements IAdaptable {
} }
return fRepresentedFile.getLocation(); return fRepresentedFile.getLocation();
} }
public long getTimestamp() {
return fTimestamp;
}
} }

View file

@ -25,6 +25,7 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.Separator;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelection;
@ -72,6 +73,7 @@ import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.IPositionConverter;
import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
@ -670,13 +672,14 @@ public class IBViewPart extends ViewPart
IBFile ibf= node.getDirectiveFile(); IBFile ibf= node.getDirectiveFile();
if (ibf != null) { if (ibf != null) {
IEditorPart editor= null; IEditorPart editor= null;
int offset= node.getDirectiveCharacterOffset(); Position pos= new Position(node.getDirectiveCharacterOffset(),
int length= node.getDirectiveName().length() + 2; node.getDirectiveName().length() + 2);
IFile f= ibf.getResource(); IFile f= ibf.getResource();
if (f != null) { if (f != null) {
fLastNavigationNode= node; fLastNavigationNode= node;
// mstodo position tracker IPositionConverter converter= CCorePlugin.getPositionTrackerManager().findPositionConverter(f, node.getTimestamp());
pos= converter.historicToActual(pos);
try { try {
editor= IDE.openEditor(page, f, false); editor= IDE.openEditor(page, f, false);
} catch (PartInitException e) { } catch (PartInitException e) {
@ -698,7 +701,7 @@ public class IBViewPart extends ViewPart
} }
if (editor instanceof ITextEditor) { if (editor instanceof ITextEditor) {
ITextEditor te= (ITextEditor) editor; ITextEditor te= (ITextEditor) editor;
te.selectAndReveal(offset, length); te.selectAndReveal(pos.getOffset(), pos.getLength());
} }
} }
else { else {

View file

@ -53,6 +53,9 @@ public class CIndexQueries {
public int getOffset() { public int getOffset() {
return 9; return 9;
} }
public long getTimestamp() {
return 0;
}
} }
private static final IPDOMInclude[] EMPTY_INCLUDES = new IPDOMInclude[0]; private static final IPDOMInclude[] EMPTY_INCLUDES = new IPDOMInclude[0];