2011-02-01 15 views
5

Ho una tabella che visualizza l'output da un database, questo può spesso essere fino a più di 10.000 righe. Sto cercando di implementare una funzione di 'ricerca rapida' che consentirà all'utente di scorrere facilmente fino a una riga con il valore per il quale cercano."Ricerca rapida" per una tabella SWT

L'idea è che questo sia molto simile alla ricerca rapida di Chrome o di Firefox. Quindi:

  1. successi utente 'CTRL + F'
  2. Una finestra si apre:
  3. quick find example
  4. L'utente può quindi sfogliare rapidamente attraverso la tabella di spinta/o/\ a ogni valore corrispondente

La mia domanda è, esiste già un tavolo simile? Ho dato un'occhiata a NatTable e XViewer ma entrambi sembrano aggiunte piuttosto grandi per un cambiamento relativamente minore.

Un'altra libreria che ho visto che è vicino al montaggio del billl è Lucene TableSearcher sfortunatamente questo è progettato per il filtraggio piuttosto che l'evidenziazione. Comunque potrebbe essere una strada che vale la pena investigare.

risposta

1

La soluzione che ho scelto non era semplice come speravo ma ha prestazioni soddisfacenti.

Le tabelle interessate sono tabelle virtuali che possono essere molto grandi. Quindi, sopra a questo, caricando il set di dati, iniziamo una discussione per costruire un indice sotto forma di elenco. Poiché queste tabelle possono essere molto grandi (ma spesso non lo sono) impostiamo un limite di 50mb per questo elenco e smettiamo di indicizzarlo quando lo colpiamo. Per la maggior parte dei casi questo è perfettamente accettabile, ma per le tabelle più grandi significa che mentre può essere più lento, è considerevolmente più stabile rispetto ad altre opzioni.

La 'ricerca' è una semplice casella di testo SWT con ModifyListener che scorre sull'elenco, eseguendo un 'contiene' su ogni voce. Su una partita, la riga e la colonna vengono calcolate dal numero di indice (0 = 0,0, 1 = 0,1 ..).

Sarebbe stato bello avere una semplice soluzione "drop in" per questo, ma tutte le tabelle in offerta avevano troppe funzionalità.

2

Non è esattamente la stessa cosa, ma JFace supporta le visualizzazioni filtrate. Si digita in una casella di testo e il contenuto si riduce a ciò che corrisponde al filtro. È fondamentalmente un altro modo di presentare funzionalità di ricerca/ricerca all'utente.

È possibile visualizzare questo in azione in Preferenze Eclipse (il campo di testo del filtro relativo all'albero di navigazione nella finestra di dialogo). Vedi la classe org.eclipse.ui.dialogs.FilteredTree. Non credo che ci sia una FilteredTable o equivalente, ma le strutture sottostanti sono piuttosto generiche, quindi non dovrebbe richiedere molto lavoro per metterle insieme. Dai un'occhiata alla fonte FilteredTree e vai da lì.

+0

Grazie, v'è già un filtro per questa tabella (utilizza le query di database per fare il filtraggio). L'idea è che la ricerca integrerà il filtro consentendo agli utenti di sfogliare i dati filtrati. –

0

finestra di dialogo Usa FilteredItemsSelectionDialog

+0

Dove trovarlo? Fa parte di SWT o JFace? – Mot