Juste une mise à jour pour fêter la nouvelle version de notre programme, avec l'ensemble des fichiers de langues ainsi que un petit plus... le nouveau splashscreen!
mercredi 11 juin 2008
[Projet] XProcessor nouvelle version
[Projet] Mise à jour
Désormais accessible sur le serveur FTP du site:
- Processor.jar
- Processor-src.jar
- XConsole.jar
- XConsole-src.jar
- QuickGUI.jar
- QuickGUI-src.jar
[Projet] XConsole pour XProcessor
Pour que notre nouvelle librairie "Processor" deviennent compatible XProcessor il faut qu'elle hérite d'un JPanel. Deux solutions: soit modifier Processor et lui créer un magnifique JPanel ou alors rajouter une couche graphique à Processor, et c'est ce que nous allons faire. Le nom de ce projet: XConsole. Son but est simple, remplacer une console Dos, normalement utilisée pour Processor, par une jolie console à base de Swing.
Création du projet sous éclipse:
Le programme est très simple et utilise la librairie Processor. On créé donc un plugin pour XProcessor de façon à avoir une vue comme celle-ci:
On remarque dans la partie centrale un JTextAera auquel on a ajouter un OutputStream, ainsi on pourra préciser simplement à Processor quel OutputStream il doit utiliser et toutes les informations s'afficheront d'elles même dans le JTextArea.
Ensuite dans le bas un simple JTextField dans lequel on saisit des commandes, mais il est un peut plus que ça, en effet pour la beauté de la chose on a ajouté la possibilité en appuyant sur les touches 'haut' et 'bas' le défilement des anciennes commandes lancées.
XConsole possède aussi une methode main pour le lancer seul.
[Projet] La librairie "Processor"
Aujourd'hui'hui nous cherchons à améliorer XProcessor en lui permettant d'ajouter des plugins évolutifs. Non plus limité à des JPanel, XProcessor pourra charger des 'Systèmes' auquels seront liés des 'Commandes'. Plus aucunes limites dans les possibilitées, XProcessor gérera ainsi à la fois des application fenetrés et des applications consoles.
Pour cela nous réutilisons un programme nommé "Processor" travaillé en cours cette année.
Le but de ce programme et de prendre en paramètre un systéme, qui peut être n'importe quoi et donc hérite d'un Objet. Par dessus on rajoute des commandes qui pourront êtres utilisées pour modifier ce système. Imaginez un système "Compteur" on pourrait avoir deux commandes:
- inc (pour décrémenter)
- dec (pour décrémenter)
De plus Processor se compose lui aussi de commandes de bases comme:
- menu (affiche la liste des commandes)
- load (charge un système contenu dans un fichier .jar)
- exit (pour quitter le Processor)
Pour commencer il faut savoir que la version actuelle de Processor est beaucoup plus evoluée que celle travaillée en cours, voici une liste des ameliorations aportées:
- Distinction entre les commandes de bases et les commandes du système chargé
- Reconnaissance automatique des commandes à moité tapées.
- Ajout des commandes:
- unload (décharge un système)
- help (affiche un commentaire sur une commande)
- history (affiche les liste des derniéres commandes tappées)
- script (lance une liste de commandes contenu dans un fichier texte)
- version (donne la numero actuel de Processor ainsi que le système chargé)
Voici la réprésentation de l'architecture du programme "Processor":
Processor contient une methode 'main' il est donc utilisable seul et n'est pas compatible XProcessor pour l'instant vue qu'il n'hérite pas d'un JPanel.
dimanche 8 juin 2008
[Divers] QuickGUI amélioration MVC + Observateur
Nous revenons rapidement sur QuickGUI qui je le rappel est une librairie externe développée pour simplifier la réalisation d'interfaces graphiques en java. Développée en interne elle est la base de XProcessor et se voit aujourd'hui enrichie de 2 nouvelles classes qui donne tout leur sens à 2 classes déjà présentes mais inutilisées jusqu'à présent, à savoir Controler, View sensées permettre de réaliser des application basées sur le pattern MVC (Model View Controler).
Les 2 nouvelles classes sont Observer et Observable, ce qui donne la nouvelle arborescence de QuickGUI:
Le package "main.support.ui.base" contient tout ce qu'il faut pour développer des application basées sur le patterns MVC.
Mais pourquoi ajouter ces 2 nouvelles classes? Sont elles vraiment utiles?
En effet réaliser un programme basé sur MVC est simple et permet un grande "fiabilité" de codage. Cela est valable tant que l'on ne dispose que d'une seule vue en lien avec un modèle. Dés que l'on possède au moins 2 vues qui sont liées au modèle cela devient plus compliqué. On considère alors l'idée que le modèle puisse être Observé et que les Vues observent le modèle. Lorsque le modèle est modifié il demande une mise à jour des vues qui l'observent pour qu'elles actualisent leur contenu. Voici un schéma de l'idée:
(Source: http://msdn.microsoft.com/en-us/library/ms978748.des_MVC_Fig03(en-us,MSDN.10).gif)
Vue du code source de la classe Observer:
package main.support.ui.base;
public interface Observer{
public void update(Observable o);
}
Vue du code source de la classe Observable:
package main.support.ui.base;
public interface Observable {
public void addObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();
}
Mise en œuvre:
Une vue s'ajoute en tant qu'observer au modèle avec la méthode addObserver(this).
Le modèle implémente Observable et réalise un notifyObservers() quand il est modifié, après cette méthode parcourt tout les Observateur et réalise un update(). C'est tout simple! A vous de voir ce qu'il faut mettre dans la méthode update() de votre vue, un repaint() par exemple.
Actuellement XProcessor n'est pas basé sur le pattern MVC, il se peut qu'avec l'ajout de cette fonctionnalité à QuickGUI, XProcessor puisse subir une profonde modification bientôt.
