2013-08-05 5 views
7

Je travaille sur un projet Eclipse RCP et j'ai besoin de laisser l'utilisateur sélectionner un fichier. Pour plus de commodité, en fonction de certaines conditions, le répertoire initial de la boîte de dialogue de sélection de fichier doit être défini avant de l'ouvrir.Définir le répertoire initial dans SWT FileDialog

Comme je suis lié à Eclipse RCP/SWT, je travaille avec le org.eclipse.swt.widgets.FileDialog.
La documentation de ce FileDialog souligne l'utilisation de la méthode setFilterPath(String string) qui devrait faire exactement ce dont j'ai besoin (voir documentation).

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

Malheureusement, cela ne fonctionne pas, du moins pas "à chaque fois".

Je n'ai actuellement aucune installation à vérifier, mais je suis sûr que la fonctionnalité fonctionnerait parfaitement sur une machine Windows 200/XP/Vista. Je travaille avec une machine Windows 7 et je pense que je souffre du comportement décrit ici pour lpstrInitialDir.

Au moins, c'est exactement le comportement auquel je suis confronté: Le chemin est bon la première fois que j'ouvre la boîte de dialogue, mais la seconde fois, le chemin est initialement défini sur le dernier chemin choisi. Cela semble être pratique dans la plupart des cas, mais ce n'est pas dans le mien.

Est-ce que ce peut être vrai? Si oui, ai-je une chance de changer le comportement en fonction de mes besoins?

Merci pour toute réponse utile!

+0

J'ai soulevé un bug pour cela .. https://bugs.eclipse.org/bugs/show_bug.cgi?id=426849 –

Répondre

0

Utilisez-vous le même objet FileDialog lorsque vous l'ouvrez de nouveau?

J'ai effectué quelques tests rapides et j'ai constaté que si vous rétablissez filterPath, la boîte de dialogue s'ouvre à l'emplacement correct.

Si j'ouvre à nouveau le même objet, il commence à l'emplacement précédemment sélectionné.

+0

J'ai rencontré le même problème, à savoir que le setFilterPath() ne fonctionne pas toujours. Le plus proche que je pourrais déduire est que setFilterPath() est cohérent, lors de la fourniture d'un dossier, comme "C: \\", cependant si vous spécifiez un hôte réseau, comme "\\\\ jmr-stamp01", alors tous les paris sont désactivés. Parfois, vous verrez le chemin du réseau et parfois vous ne le verrez pas. Je soupçonne que la classe SWT FileDialog a un bug. –

+0

Oui, j'utilise un nouvel objet FileDialog mais ça ne fonctionne pas .. –

Questions connexes