Creazione di una tabella gerarchica o categorizzata

È possibile creare una tabella contenente voci che possono essere categorizzate, o visualizzate gerarchicamente, quali documenti e risposte che includono un thread in una vista discussione, utilizzando un provider ad albero per definire la struttura di controllo della tabella.

Il provider ad albero implementato crea etichette che consentono di:
  • Espandere più di una colonna.
  • Visualizzare un segno +/- per indicare che l'elemento è espandibile e che contiene documenti secondari che possono essere visualizzati.
L'aggiunta di listener alle righe espandibili della tabella consente di tenere traccia delle modifiche alle righe, che possono essere espanse nei modi seguenti:
  • Gli utenti possono fare clic sul segno +/- visualizzato accanto a una voce gerarchica per espandere o ridurre la riga.
  • Le applicazioni possono espandere o ridurre una riga a livello di codice.
Per creare una tabella ad albero:
  1. Implementare l'interfaccia ITreePagedContentProvider per indicare che si desidera implementare la tabella come controllo ad albero con colonne espandibili. L'interfaccia ITreePagedContentProvider eredita dall'interfaccia IPagedContentProvider.
  2. Implementare IExpandTableLabelProvider.
    Ad esempio:
    public int columnSpan(Object element, int columnIndex) {
    // TODO Auto-generated method stubif (arg0 instanceof GroupedMetadata){
        	
    if (element instanceof Categories){
    switch(columnIndex){
    case 0:
    return _viewer.getTable().getColumnCount();
    	        }
    		}
    return 0;
    	}
    
    public boolean isExpandable(Object element, int columnIndex) {
    // TODO Auto-generated method stub
    if (element instanceof Categories){
    switch(columnIndex){
    case 03:
    return true;
    	        }	
    		}
    return false;
    	}
  3. Registrare un listener per la tabella che sia in ascolto relativamente all'espansione o alla riduzione di una riga tabella.
    Ad esempio:
    Document doc = (Document)root;
    //expand this level
    this.expandItem(doc, doc.needExpanded());
    
    //The application can monitor the event when a table item which has 
    //children is expanded or collapsed.
    table.addTreeListener(new TreeListener(){
    public void treeCollapsed(TreeEvent e) {
    // TODO Auto-generated method stub
    				System.out.println("treeCollapsed(TreeEvent e) : " + e.toString());
    TableItem item = (TableItem)e.item;
    _viewer.refresh(item.getData(), true);
    			}
    
    public void treeExpanded(TreeEvent e) {
    // TODO Auto-generated method stub
    				System.out.println("treeExpanded(TreeEvent e) : " + e.toString());
    TableItem item = (TableItem)e.item;
    				item.setText(0, " 3 Messageing in threading " + item.getText(3));
    // item.setImage(0, TestView.unread_descriptor);
    				
    			}
    			
    		});

Clausole di utilizzo |
(C) Copyright IBM Corporation 2004, 2006. Tutti i diritti riservati.
Questo centro informazioni è supportato dalla tecnologia Eclipse. ( http://www.eclipse.org )