2013-08-05 56 views
7

Sto lavorando a un progetto Eclipse RCP e devo consentire all'utente di selezionare un file. Per comodità, in base ad alcune condizioni, la directory iniziale della finestra di scelta del file deve essere impostata prima di aprirla.Imposta la directory iniziale in SWT FileDialog

Poiché sono legato a Eclipse RCP/SWT, sto lavorando con lo org.eclipse.swt.widgets.FileDialog.
La documentazione di questo FileDialog indica di utilizzare il metodo setFilterPath(String string) che dovrebbe fare esattamente ciò di cui ho bisogno (vedere documentation).

FileDialog dialog = new FileDialog(shell, SWT.OPEN); 
    dialog.setFilterExtensions(new String [] {"*.html"}); 
    dialog.setFilterPath("c:\\temp"); 
    String result = dialog.open(); 

Sfortunatamente non funziona, almeno non "ogni volta".

Attualmente non ho alcuna installazione per controllarlo, ma sono abbastanza sicuro che la funzionalità funzionerebbe perfettamente su un computer Windows 200/XP/Vista. Sto lavorando con una macchina Windows 7 e penso di soffrire del comportamento qui descritto per lpstrInitialDir.

Almeno, questo è esattamente il comportamento che sto affrontando: il percorso è buono la prima volta che apro la finestra di dialogo, ma la seconda volta, il percorso è inizialmente impostato sull'ultimo percorso scelto. Questo sembra essere conveniente nella maggior parte dei casi, ma non è nel mio.

Può essere giusto? Se sì, ho qualche possibilità di cambiare il comportamento in base alle mie esigenze?

Grazie per qualsiasi risposta di aiuto!

+0

Ho sollevato bug per questo .. https://bugs.eclipse.org/bugs/show_bug.cgi?id=426849 –

risposta

0

Si sta utilizzando lo stesso oggetto FileDialog quando lo si riapre?

Ho eseguito alcuni test rapidi e ho rilevato che, se si reimposta il parametro filterPath, la finestra di dialogo si apre nella posizione corretta.

Se apro nuovamente lo stesso oggetto, esso inizia nella posizione precedentemente selezionata.

+0

Ho incontrato lo stesso problema, vale a dire che setFilterPath() non funziona sempre. Il più vicino che potrei dedurre è che setFilterPath() è coerente, quando si fornisce una cartella, ad esempio "C: \\", tuttavia se si specifica un host di rete, ad esempio "\\\\ jmr-stamp01", quindi tutti le scommesse sono spente. A volte vedrai il percorso di rete e, a volte, non lo farai. Sospetto che la classe FileDialog SWT abbia un bug in esso. –

+0

Sì sto usando un nuovo oggetto FileDialog ma non funziona .. –

Problemi correlati