Como fazer somente leitura editor no Eclipse (Eclipse Plugin Development)
-
05-07-2019 - |
Pergunta
Eu estou querendo saber como fazer um realmente lido apenas eclipse editor .. Meu editor estende TextEditor , então quando eu reimplementar método isEditable para sempre retornar false .
É a maneira mais fácil, o que impede usuário de digitação ou excluir nada no documento aberto no editor. Mas você ainda pode alterar o conteúdo do documento, por exemplo, usando find / substituir. E isso não é desejado ..
Existe alguma outra maneira aesy como arhieve este objetivo?
Solução
Eu queria usar editor em vez de espectador porque o editor já foi feito, então eu usei apenas um 3o partido plugin ..
Eu encontrei minha solução - maybee não muito limpo, mas faz o trabalho e é muito fácil por isso ganha
Eu anulado métodos 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;
}
Outras dicas
Você já tentou criar o seu próprio SourceViewer? Algo assim. Eu não tentei o código de mim mesmo.
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;
}
}
Nos estilos SWT, especifique SWT.READ_ONLY . Isso deve rejeitar todas as APIs que modificam o documento (com exceção de setText (), eu espero ...)
Se não, por favor registrar um bug .
Por que você está usando um TextEditor em vez de usar um TextViewer ?