Eclipse의 읽기 전용 편집기 (Eclipse Plugin Development)
-
05-07-2019 - |
문제
정말 읽기 일식 편집기를 만드는 방법이 궁금합니다. 내 편집자가 확장됩니다. 텍스트 에디터, 그래서 내가 방법을 상환 할 때 바이스 가능 항상 돌아옵니다 거짓.
가장 쉬운 방법으로 사용자가 편집기에서 열린 문서의 모든 것을 입력하거나 삭제하지 못하게합니다. 그러나 찾기/교체를 사용하여 문서의 내용을 변경할 수 있습니다. 그리고 이것은 바람직하지 않습니다 ..
이 목표를 달성하는 방법이 있습니까?
해결책
편집기가 이미 만들어 졌기 때문에 시청자 대신 편집기를 사용하고 싶었으므로 제 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?
제휴하지 않습니다 StackOverflow