Question

Je dois déterminer si une sélection donnée est entre une ligne de départ et une ligne d'extrémité. J'ai un ILineRange et un décalage donné dans la fenêtre d'éclipse. (Je dois savoir, si la sélection (d'une partie à distance) a été faite dans la fenêtre actuelle de l'utilisateur local. Malheureusement, je ne peux pas obtenir un ILineRange de la sélection. Je dois compter sur getOffset () et getLength () .. .
Tout le monde a une idée?
Je pense qu'il n'y a pas une solution propre pour cela, comme le décalage (ou les caractères par ligne varient (nouvelles lignes de ligne ou un gros bloc de commentaire).

Était-ce utile?

La solution

La conversion entre les positions et les compensations peut être fait avec l'API de IDocument (méthodes autour getLine * ()). (Je ne suis pas sûr d'avoir compris votre question, mais j'espère que cette information est utile.)

Autres conseils

Peut-être que vous pouvez vérifier si cette classe org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler traite le même genre de problème que vous avez.
Quelque chose le long des lignes de:

if (ANNOTATION_HEIGHT_SCALABLE) {
  int numbersOfLines= document.getNumberOfLines(annotationOffset, annotationLength);
  // don't count empty trailing lines
  IRegion lastLine= document.getLineInformationOfOffset(annotationOffset + annotationLength);
  if (lastLine.getOffset() == annotationOffset + annotationLength) {
    numbersOfLines -= 2;
    hh= (numbersOfLines * size.y) / maxLines + ANNOTATION_HEIGHT;
    if (hh < ANNOTATION_HEIGHT)
      hh= ANNOTATION_HEIGHT;
    } else
      hh= ANNOTATION_HEIGHT;
  }
  fAnnotationHeight= hh;

  int startLine= textWidget.getLineAtOffset(annotationOffset - visible.getOffset());
                        yy= Math.min((startLine * size.y) / maxLines, size.y - hh);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top