Question

Je me demande comment créer un éditeur d'éclipse en lecture seule. Mon éditeur étend TextEditor . Ainsi, lorsque je réimplémente la méthode isEditable , il renvoie toujours false .

C’est le moyen le plus simple, qui empêche l’utilisateur de saisir ou de supprimer tout élément du document ouvert dans l’éditeur. Mais vous pouvez toujours modifier le contenu du document, par exemple, en utilisant rechercher / remplacer. Et ce n’est pas souhaitable.

Existe-t-il un autre moyen sûr d’atteindre cet objectif?

Était-ce utile?

La solution

Je voulais utiliser l'éditeur au lieu de spectateur parce que l'éditeur était déjà fait, alors je viens d'utiliser un plugin tiers.

J'ai trouvé ma solution - peut-être pas très propre mais fait le travail et est assez facile donc ça gagne

J'ai annulé ces méthodes:

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

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

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

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

Autres conseils

Avez-vous essayé de créer votre propre SourceViewer? Quelque chose comme ça. Je n'ai pas essayé le code moi-même.

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;
    }
}

Dans les styles SWT, indiquez SWT.READ_ONAD. . Cela devrait rejeter toutes les API qui modifient le document (à l'exception de setText (), j'espère ...)

Si ce n'est pas le cas, veuillez enregistrer un bogue .

Pourquoi utilisez-vous un TextEditor plutôt qu'un TextViewer ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top