Come presentare gli elementi Java in un visualizzatore JFace standard

L'API dell'interfaccia utente JDT fornisce diverse classi per la presentazione del modello Java o delle relative parti in un visualizzatore JFace standard. Questa funzione viene fornita principalmente da:

L'operazione è abbastanza semplice:
	...
IJavaProject jProject= ...;

TreeViewer viewer= new TreeViewer(parent);
// Fornire ai membri un'unità di compilazione o un file di classe ma nessun elemento di copia di lavoro
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// Nella classe JavaElementLabelProvider sono definiti più flag
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);

// Utilizzando il modello Java come input del visualizzatore, i progetti Java vengono presentati sul primo livello.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...

Oltre al modello Java, la classeStandardJavaElementContentProvider supporta i seguenti tipi di elementi di input: IJavaProject, IPackageFragmentRoot, IPackageFragment e IFolder.

Aggiunta  di decoratori di problemi e sovrapposizioni

Quando un visualizzatore deve includere annotazioni di problemi, viene utilizzato il metodo DecoratingLabelProvider insieme a ProblemsLabelDecorator. Di seguito è riportato un frammento di codice che illustra l'utilizzo di un  decoratore di etichetta di problema:
	...
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...


Analogamente, è possibile utilizzare il metodo OverrideIndicatorLabelDecorator per decorare un normale fornitore di etichetta per la visualizzazione degli indicatori di implementazione e sostituzione per i metodi.

Aggiornamento della presentazione in base alle modifiche del modello

Le modifiche del modello non hanno effetti né su OverrideIndicatorLabelDecorator né su ProblemsLabelDecorator. Pertanto, il visualizzatore non aggiorna la presentazione se il modello dell'indicatore di risorse o Java viene modificato. L'aggiornamento per queste classi viene effettuato sul client in quanto non è ancora disponibile un'implementazione generica che soddisfi tutti gli aspetti relativi alle prestazioni. La gestione dell'ispezione del delta del modello Java e l'aggiornamento del visualizzatore in ciascun fornitore o decoratore di etichetta determinano più ispezioni delta e aggiornamenti del visualizzatore non necessari.

Pertanto, per aggiornare i visualizzatori, il client dovrà effettuare le operazioni riportate di seguito
Il metodo StandardJavaElementContentProvider non ascolta le modifiche del modello per le stesse motivazioni descritte per i decoratori di etichette. Se il visualizzatore deve aggiornare la presentazione in base alle modifiche del modello Java, il client deve aggiungere un listener corrispondente a JavaCore. Se le modifiche descritte dal delta invalidano la struttura degli elementi presentati nel visualizzatore, il client deve aggiornare il visualizzatore utilizzando l'API JFace standard (vedere i metodi di aggiornamento in StructuredViewer e i metodi di aggiunta ed eliminazione in TableViewer and AbstractTreeViewer).

Copyright IBM Corporation e altri 2000, 2002. Tutti i diritti riservati.