mercredi 11 juin 2008

[Projet] XProcessor nouvelle version

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!



Mise à jour sur le serveur FTP, programme seul et les sources.

[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.

mercredi 4 juin 2008

[Divers] Les news du FTP

Le FTP du projet se voit s'enrichir d'une nouvelle rubrique: "plugins" où seront stockés les futurs programmes intégrable dans XProcessor, ainsi vous pourrez télécharger ceux qui vous intéresses plus facilement. Rendez-vous en bas du blog, partie "ressources en lignes".

[Projet] Nouveau plugin: JARLauncher

Voici un nouveau programme intégrable dans XProcessor. Son but charger un fichier .jar, afficher un ensemble d'informations utiles. Par la suite vous pouvez exécuter le fichier pré chargé en spécifiant par avance des arguments d'entrées.

(Image de JARLauncher)

lundi 26 mai 2008

[Projet] Premier upload de notre projet

Il est enfin temps de rendre disponible à tout les internautes le fruit de notre travail. Pour cela nous sommes heureux de vous permettre de télécharger la 1ere version de QuickGUI ainsi que celle de XProcessor.

Voici les liens :
QuickGUI
XProcessor

Vous pouvez aussi vous rendre dans la partie "Ressources en ligne" en bas à droite du blog.

[Divers] Ajout d'une solution FTP pour notre projet

Dans le but de pouvoir facilement publier des fichiers (CV, image, doc) sur le net en lien avec notre projet, nous disposons maintenant d'un espace FTP de taille respectable à cette adresse:

http://membres.lycos.fr/introspectionja/

Nous vous invitons à vous reporter à la partie "Ressources en ligne" disponible dans le menu du blog à droite vers la bas. Les futurs articles posséderons des liens directs vers les ressources concernées par la suite :)

dimanche 4 mai 2008

[Projet] Créer un plugin pour XProcessor

Voici un petit article qui explique comment créer votre propre pulgin sous XProcessor.
Le principe est très simple, il suffit de créer une classe qui ne se trouve dans aucuns package, qui hérite d'un JPanel et dont le constructeur ne prend aucuns arguments.

Voyons cela en détail, en premier créons un projet sous eclipse, on le nommera "PluginProject" par exemple.






Une fois le projet créé en ajoute la classe qui va hériter du JPanel, attention il faut savoir que le nom de cette classe sera impérativement le nom du futur .jar ou sera sauvegarder l'ensemble du plugin.








Il ne nous reste plus qu'a compléter la classe MyPlugin pour qu'elle soit compatible avec le PluginLoader de XProcessor, voici le code correspondant:

















Le code est trés detaillé, maintenant testons ce magnifique plugin dans XProcessor. Pour cela il faut crée une archive du projet PluginProject:
1) bouton droit sur le projet
2) export
3) chercher JAR File
4) entrer le nom du .jar : "MyPlugin"
5) créer le fichier en faisant finish

Et voilà on se retrouve avec notre joli plugin que l'on place dans le répertoire /plugin (on pourrai aussi le charger manuellement via le menu plugin/charger, testons le maintenant en image:


Résultat impeccable :D