2013-08-05 20 views
7

Bir Eclipse RCP projesinde çalışıyorum ve kullanıcının bir dosya seçmesine izin vermem gerekiyor. Bazı koşullar temelinde, kolaylık sağlamak için, dosya seçim diyaloğunun ilk dizini, açılmadan önce ayarlanmalıdır.İlk dizini SWT FileDialog'da ayarlayın

Eclipse RCP/SWT'ye bağlı olduğum için, org.eclipse.swt.widgets.FileDialog ile çalışıyorum.
Bu FileDialog belgesinin belgelenmesi, tam olarak ihtiyacım olanı yapması gereken setFilterPath(String string)-yöntemini işaret etmektedir (bkz. documentation).

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

Ne yazık ki çalışmıyor, en azından "her zaman".

Şu anda kontrol etmek için kurulumum bulunmuyor, ancak özelliklerin Windows 200/XP/Vista makinasında düzgün çalışacağından eminim. Bir Windows 7 makineyle çalışıyorum ve lpstrInitialDir için burada açıklanan davranışlardan acı çekiyorum.

En azından, tam olarak karşı karşıya olduğum davranış budur: İlk kez iletişim kutusunu açtığımda yol iyidir, ancak ikinci kez, yol başlangıçta en son seçilen yola ayarlanır. Bu, çoğu durumda kullanışlı görünüyor, ama benimki değil.

Bu doğru olabilir mi? Eğer öyleyse, davranışımı kendi ihtiyaçlarıma göre değiştirme şansım var mı?

Yardımlarınız için teşekkürler!

+0

Bunun için bir hata oluşturdum .. https://bugs.eclipse.org/bugs/show_bug.cgi?id=426849 –

cevap

0

Yeniden açtığınızda aynı FileDialog nesnesini kullanıyor musunuz?

Birkaç hızlı sınama yürüttüm ve filterPath'i yeniden ayarladıysanız, iletişim kutusunun doğru konumda açıldığını gördük.

Aynı nesneyi tekrar açarsam, daha önce seçili konumda başlar.

+0

Aynı soruna rastladım, yani setFilterPath() işlevi her zaman çalışmaz. Anlayabildiğim en yakın şey, "C: \\" gibi bir klasör sağladığında setFilterPath() 'ın tutarlı olması, ancak "\\\\ jmr-stamp01" gibi bir ağ ana bilgisayarı belirtmenizdir. bahisler kapalı. Bazen ağ yolunu göreceksin ve bazen yapamayacaksın. SWT FileDialog sınıfının içinde bir hata olduğundan şüpheleniyorum. –

+0

Evet, yeni FileDialog nesnesini kullanıyorum ama çalışmıyor. –