문제

정말 읽기 일식 편집기를 만드는 방법이 궁금합니다. 내 편집자가 확장됩니다. 텍스트 에디터, 그래서 내가 방법을 상환 할 때 바이스 가능 항상 돌아옵니다 거짓.

가장 쉬운 방법으로 사용자가 편집기에서 열린 문서의 모든 것을 입력하거나 삭제하지 못하게합니다. 그러나 찾기/교체를 사용하여 문서의 내용을 변경할 수 있습니다. 그리고 이것은 바람직하지 않습니다 ..

이 목표를 달성하는 방법이 있습니까?

도움이 되었습니까?

해결책

편집기가 이미 만들어 졌기 때문에 시청자 대신 편집기를 사용하고 싶었으므로 제 3 자 플러그인을 사용했습니다.

내 솔루션을 찾았습니다 - Maybee는 매우 깨끗하지 않지만 작업을 수행하고 매우 쉽기 때문에 승리합니다.

나는 theese 방법을 재정의했다 :

@Override
public boolean isEditable() {
    return false;
}

@Override
public boolean isEditorInputModifiable() {
    return false;
}

@Override
public boolean isEditorInputReadOnly() {
    return true;
}

@Override
public boolean isDirty() {
    return false;
}

다른 팁

자신의 소스 뷰어를 만들려고 했습니까? 이 같은. 나는 코드를 직접 시도하지 않았다.

class ReadOnlyViewer extends SourceViewer
{
   protected StyledText createTextWidget(Composite parent, int styles) 
   {
    return new StyledText(parent, styles | SWT.READ_ONLY);
   }
}

class MyEditor extends TextEditor
{
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) 
     {
        fAnnotationAccess= getAnnotationAccess();
        fOverviewRuler= createOverviewRuler(getSharedColors());

        ISourceViewer viewer= new ReadOnlyViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles);
        // ensure decoration support has been created and configured.
        getSourceViewerDecorationSupport(viewer);

        return viewer;
    }
}

SWT 스타일로 지정하십시오 swt.read_only. 이것은 문서를 수정하는 모든 API를 거부해야합니다 (settext ()를 제외하고는 희망입니다 ...)

그렇지 않다면 제발 버그를 제출하십시오.

왜 당신이 사용하는 대신 텍스트를 사용하는지 TextViewer?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top