Je me demande que quelqu'un a une idée de la façon de résoudre ce problème:
Dans mon plug-in Java Eclipse, certains processus prennent du temps. Par conséquent, l'utilisateur peut minimiser la fenêtre b> et laisser le processus exécuté en arrière-plan b>.
Maintenant, lorsque le processus est terminé B>, je peux forcer la fenêtre à venir à nouveau au sommet, mais c'est un non-non de convivialité. Je préfère vouloir le processus Blink B> dans la barre des tâches B> à la place. Y a-t-il un moyen d'y parvenir?
J'ai regardé le org.eclipse.jface.window mais ne pouvait rien trouver comme ça, pareille la même chose pour la documentation SWT ...
Une autre chose qui est venue à mon esprit - comme les gens utilisent cette application sur Mac OS X B> et Linux B> également, existe-t-il une solution indépendante de plate-forme B> , qui informera l'utilisateur que le processus a fini mais sans amener la fenêtre au sommet?
Les idées sont très bienvenues! B>
EDIT: B>
J'ai découvert que sur Windows, l'utilisateur peut s'ajuster s'il souhaitait permettre une force au premier plan ou non. Si cette option est désactivée, la tâche clignotera simplement dans la barre des tâches ...
Voici un bon lire sur cela ...
Si quelqu'un sait peut-être un moyen indépendant de la plate-forme d'atteindre ce type de comportement, veuillez partager vos connaissances avec moi! P>
4 Réponses :
Je ne pense pas qu'il y a une manière indépendante de la plate-forme de faire cela. Vous devrez examiner les appels d'API spécifiques à la plate-forme et les implémenter via JNI ou JNA.
Pour Windows, voici un extrait de l'une de mes propres applications: P>
protected static StdCallLibrary getLibrary(String libraryName, Class<?> interfaceClass) throws UnsatisfiedLinkError { try { StdCallLibrary lib = (StdCallLibrary) Native.loadLibrary(libraryName, interfaceClass); return lib; } catch (UnsatisfiedLinkError e) { Logger.out.error("Could not load " + libraryName + " library."); throw e; } }
Merci pour cet extrait - mais avoir plusieurs versions différentes pour chaque système d'exploitation n'est pas vraiment ce que je voulais réaliser ...
À ma connaissance, il n'y a pas de solution Java pure. JNA / JNI peut être tout à fait imposant, mais il suffit d'avoir trois implémentations. Malheureusement, vous devrez demander à quelqu'un d'autre pour les deux autres. :)
Ce que vous pouvez faire pour que les utilisateurs soient l'attention sans être ennuyant consiste à modifier le texte Windows Ceci protables avec un simple: Cela permettrait à l'utilisateur d'obtenir une mise à jour tout en ayant La fenêtre minimisée puis ajoutez un auditeur de focus pour renvoyer la fenêtre à son texte normal lorsque la mise au point est retrouvée. Cela permettrait une intrusivité minimale tout en informant l'utilisateur. P> p>
J'ai eu un problème similaire avec mon plug-in. p>
Qu'est-ce que j'ai fini par faire, c'est créer une petite icône pour mon programme dans le quai d'état inférieur (ou quelle que soit cette chose en bas, appelée). Sur la base de l'achèvement des processus et d'autres événements de base, mon icône change de couleur et des clignotements (par exemple, va de gris au vert lorsque sa configuration initiale est terminée). p>
En faisant double clics ou clics avec le bouton droit de la souris sur cette icône contextuelle sensible au contexte, je peux alors faire des choses comme Ouvrir une fenêtre correspondante. p>
Parlez-vous de la barre des tâches dans Windows? Ou est-ce une solution de contournement indépendante du système d'exploitation?
Eh bien, ce n'est pas exactement clignotant, mais comme Eclipse 3.6 M6, vous pouvez superposer du texte, de l'image ou de la barre de progression vers le TaskItem de manière indépendante de la plate-forme avec SWT. Voir le nouveau et remarquable A> et le SWT Snippet . P>
Merci, j'ai déjà examiné cette fonctionnalité, mais le problème est que je ne peux pas forcer mes utilisateurs à passer à 3.6 :-(
Dommage. Peut-être séparer cette fonctionnalité en un plugin avec les contraintes de la version appropriées et la marquer en option?