Bonjour,

Je voudrais vous présenter une petite API que j'ai développé.
myTSwingActions permet une utilisation très simple des Actions Swing avec une simple annotation.

Voici un exemple simple pour illustrer son utilisation :

Soit un code "classique" d'une fenêtre Swing utilisant une Action
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
public class MyFrame extends JFrame {
 
    private JButton actionButton;
 
    private JMenuItem actionMenuItem;
 
    public MyFrame() {
        // Components initialization
        ...
 
        // Building actions
        Action myAction = new MyAction();
        actionButton.setAction(myAction);
        actionMenuItem.setAction(myAction);
    }
 
    /** A customized Action. */
    private final class MyAction extends AbstractAction {
 
        MyAction() {
            // Loading and setting action properties
            ResourceBundle resources = ...;
            putValue(NAME; resources.getString("MyAction.name"));
            putValue(...);
        }
 
        public void actionPerformed(ActionEvent evt) {
            // In most cases, we want actions to be performed out of the EDT.
            new Thread() {
 
                public void run() {
                    // Do something
                }
            }.start();
        }
    }
}
On voit bien qu'une grosse partie du code écrit sert à la déclaration et l'implémentation de l'Action. Avec plusieurs actions on se retrouve vite à réécrire encore et encore plusieurs fois le même genre de code.

Afin de gagner en temps et en lisibilité, l'API myTSwingAction vous propose d'utiliser l'annotation @Action pour ne vous concentrer que sur ce qui vous intéresse vraiment
  • Ce que l'action fait vraiment.
  • Les composants utilisant l'action.

et vous affranchir de tout le code pompeux de l'implémentation de l'Action.
Voici le code équivalent avec myTSwingActions :
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
public class MyFrame extends JFrame {
 
    @Action("myAction")
    private JButton actionButton;
 
    @Action("myAction")
    private JMenuItem actionMenuItem;
 
    public MyFrame() {
        // Components initialization
        ...
 
        // Building actions
        new ActionsManager(this).buildActions();
    }
 
    /** A customized Action. */
    @Action
    public void myAction() {
        // Do something
    }
}
L'API est téléchargeable ici, ou si vous utilisez maven vous pouvez simplement ajouter la dépendance suivante :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<dependency>
    <groupId>com.mytdev</groupId>
    <artifactId>myt-swing-actions</artifactId>
    <version>1.2.0</version>
</dependency>

Vous trouverez également plus de détails sur les fonctionnalités de l'API ici (en anglais).

N'hésitez pas à me faire vos retour

le y@m's