سؤال

أحتاج إلى تحديد ما إذا كان اختيار معين بين خط البداية وخط النهاية. انا لدي ILineRange وإزاحة معينة في إطار عرض Eclipse. (أريد أن أعرف ، إذا تم الاختيار (من حفلة بعيدة) في إطار العرض الحالي للمستخدم المحلي. لسوء الحظ ، لا يمكنني الحصول على ملف ILineRange من الاختيار. يجب أن أعتمد على getOffset () و getLength () ...
أي شخص لديه فكرة؟
أعتقد أنه لا يوجد حل نظيف لهذا ، حيث أن الإزاحة (أو تختلف الأحرف لكل سطر (خطوط خطية جديدة أو كتلة كبيرة من التعليق).

هل كانت مفيدة؟

المحلول

يمكن إجراء التحويل بين المواقف والإزاحة باستخدام واجهة برمجة تطبيقات Idocument (أساليب حول getline*()). (لست متأكدًا من أنني فهمت سؤالك تمامًا ، لكنني آمل أن تكون هذه معلومات مفيدة.)

نصائح أخرى

ربما يمكنك التحقق مما إذا كان ذلك org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler صف دراسي يتعامل مع نفس النوع من المشكلة لديك.
شيئا ما على طول الخطوط من:

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top