Label e Content Providers per JFace TreeViewer

Label e Content Providers per JFace TreeViewer

La libreria JFace mette a disposizione una serie di widgets, chiamati viewers, in grado di rappresentare un modello di dati 클로버 다운로드. A cosa servono? Supponiamo che vogliate mostrare una tabella, un albero o una combo per visualizzare una lista di oggetti o una struttura gerarchica. Sebbene sia possibile usare widgets elementari come Table, Tree o Combo, è comunque un approccio non ottimale 굿바이평양 다운로드. Immaginate di popolare una tabella, riga per riga, partendo da una lista di Ordini e di dover fare qualche operazione sull’Ordine corrispondente alla riga selezionata dall’utente vmware 14 pro. Con un widget Table, per reperire l’Ordine selezionato, dovreste ricorrere a qualche artificio, come ad esempio fare affidamento sul valore chiave di una determinata colonna, oppure mantenere una lista degli Ordini nella stessa sequenza mostrata in tabella ed estrarre quello con indice pari alla riga selezionata Three Kingdoms 10pk. Inoltre anche il popolamento stesso, riga per riga, cella per cella, risulterebbe laborioso.

Ebbene, grazie ai viewers di JFace è possibile ottenere una sorta di “binding” fra il widget e la struttura dati stessa, quindi ad esempio possiamo ottenere direttamente l’oggetto Ordine selezionato a fronte di un evento di selezione (invece dell’indice della riga selezionata) 포토샵 도형 다운로드. Per effettuare questo legame occorre impostare un paio di providers al viewer stesso che prendono il nome di:
– Label provider e
– Content provider

Di seguito vediamo come usare questi providers Three Kingdoms 13 Hangul Patch. In particolare si farà riferimento ad un TreeViewer.
Verrà utilizzato un Modello costituito da entità Company che hanno una collection di Department, che a loro volta hanno una collection di Employee php sftp file. L’obiettivo è ottenere un risultato come il seguente

Il Viewer verrà alimentato con una lista di oggetti di classe Company ez spc 다운로드. La parte di codice che realizza tale input e che imposta i providers è la seguente:

Entriamo quindi nel merito del significato dei due providers:

  • LabelProvider: indica cosa deve essere mostrato per ogni oggetto del modello che viene visualizzato macbook iCloud photos. In particolare il metodo getText() riceve l’oggetto da rappresentare e deve occuparsi di ritornare il testo da mostrare in corrispondenza di tale oggetto Iris 2. Opzionalmente è possibile utilizzare anche il metodo getImage() per fornire una immagine corrispondente. Nel nostro esempio ecco un possibile utilizzo

  • ContentProvider: indica come determinare i contenuti del tree. In pratica fornisce l’implementazione dei metodi che vengono chiamati:
    1. quando l’albero viene mostrato inizialmente (con i nodi di primo livello non espansi) (getElements)
    2. quando occorre decidere se mostrare o meno il simbolo di espansione del nodo esaminato (hasChildren)
    3. quando l’utente decide di espandere un determinato nodo e occorre mostrare i nodi figli (getChildren)

Si noti che hasChildren, ma soprattutto getChildren, vengono invocati in modo lazy, cioè solamente quando è strettamente indispensabile. Quindi la lista di Employee di un determinato Department viene caricata solamente quando l’utente decide di espandere il nodo relativo a quel Department, non prima, con evidente vantaggio in termini di prestazioni.

L’albero visualizza così tutti e tre i livelli di oggetti (Company, Deparment, Employee)

 

Nota: nel caso il viewer venga alimentato con un oggetto di tipo Company invece che con una lista, il metodo getElements() dovrà conseguentemente essere modificato così:

In questo caso il tree non visualizzerà l’oggetto Company, bensì direttamente i suoi figli Department al primo livello e Employee al secondo.

 

By |2012-06-08T11:51:48+00:00agosto 7th, 2011|

3 Comments

  1. Ram 12 ottobre 2012 at 05:40 - Reply

    Please I Implemented TreeViewer in my application but 3 views are not visible. Juno ide,eclipse rcp.

  2. vivek 25 novembre 2013 at 03:58 - Reply

    Nice article. I have also written one article on Jface Treee Viewer – http://www.buggybread.com/2013/11/java-jface-treeviewer-steps-to-create.html

  3. sushma 1 giugno 2020 at 04:49 - Reply

    Good article. Really helpful

Leave A Comment