IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[JSR-296;appframework] InputBlocker pour une Task


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 156
    Points
    156
    Par défaut [JSR-296;appframework] InputBlocker pour une Task
    Salut,

    Je souhaiterais créer mon propre InputBlocker, tout comme l'a fait Hans Muller, le créateur de l'appframework, dans cet exemple : BusyIndicatorInputBlocker extends InputBlocker

    J'ai donc écrit ce code (@Action) qui appelle une ma classe Task nommée StartPanelCommandButtonsActionTask :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	/**
             * Start inventory.
             * @return Task for task monitor
             */
    	@Action
    	protected Task startPanelCommandButtonsAction()
    	{
    		// code...
     
    		// Set components blocker
    		StartPanelCommandButtonsActionTask startPanelCommandButtonsActionTask = new StartPanelCommandButtonsActionTask();
    		startPanelCommandButtonsActionTask.setInputBlocker(new ComponentsBlocker(startPanelCommandButtonsActionTask, 
    																			new JComponent[]{btnStartPanelCommandButtons, 
    																							btnResumePanelCommandButtons}));
    		return startPanelCommandButtonsActionTask;
     
    	}
    Mon InputBlocker nommé ComponentsBlocker :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    	class ComponentsBlocker extends InputBlocker
    	{
    		List<JComponent> listComponents;
    		/**
                     * Constructor.
                     * @param task
                     * @param components
                     */
    		public ComponentsBlocker(Task task, JComponent[] components)
    		{
    			super(task, Task.BlockingScope.NONE, null);
    			listComponents = Arrays.asList(components);
    			LOGGER.debug("ComponentsBlocker set with : " + listComponents);
    		}
     
    		/**
                     * @see org.jdesktop.application.Task.InputBlocker#block()
                     */
    		@Override
    		protected void block()
    		{
    			LOGGER.debug("block");
    			for(JComponent component : listComponents)
    			{
    				component.setEnabled(false);
    			}
    		}
    		/**
                     * @see org.jdesktop.application.Task.InputBlocker#unblock()
                     */
    		@Override
    		protected void unblock()
    		{
    			LOGGER.debug("unblock");
    			for(JComponent component : listComponents)
    			{
    				component.setEnabled(true);
    			}
    		}
    	}

    Seul problème, les méthodes block et unblock ne sont jamais appelées par le TaskService lors de l'exécution de ma Task.

    Avez-vous des idées ou déjà essayé qqchose du genre ?


    Thx,
    Bapt.ice.

  2. #2
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 156
    Points
    156
    Par défaut
    Re,

    Bon je pense avoir trouvé une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    class ComponentsBlocker extends InputBlocker
    	{
    		List<JComponent> listComponents;
    		/**
    		 * Constructor.
    		 * @param task
    		 * @param components
    		 */
    		public ComponentsBlocker(Task task, JComponent[] components)
    		{
    			super(task, Task.BlockingScope.COMPONENT, anyComponent);
    			listComponents = Arrays.asList(components);
    			LOGGER.debug("ComponentsBlocker set with : " + listComponents);
    		}
    		
    		/**
    		 * @see org.jdesktop.application.Task.InputBlocker#block()
    		 */
    		@Override
    		protected void block()
    		{
    			LOGGER.debug("block");
    			for(JComponent component : listComponents)
    			{
    				component.setEnabled(false);
    			}
    		}
    		/**
    		 * @see org.jdesktop.application.Task.InputBlocker#unblock()
    		 */
    		@Override
    		protected void unblock()
    		{
    			LOGGER.debug("unblock");
    			for(JComponent component : listComponents)
    			{
    				component.setEnabled(true);
    			}
    		}
    	}

    Avec cette modif, je peux maintenant bloquer tous les composants que je veux et ne plus être limité à un seul composant bloqué lors de l'exécution de la Task.
    Et en fait, le composant anyComponent ne sera pas bloqué. BUG ? je vais voir avec la mailing list du projet.

    Bapt.ice

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quels logiciels de modélisation pour une base de données ?
    Par octopus dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 11/06/2023, 16h20
  2. Une Task Parallel Library pour Silverlight & Windows Phone 7
    Par DavidCatuhe dans le forum Silverlight
    Réponses: 2
    Dernier message: 16/05/2011, 21h34
  3. Accès au port 700h pour une carte d'interface
    Par haypo dans le forum Matériel
    Réponses: 3
    Dernier message: 07/11/2002, 11h30
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo