Historique de SEdit

Note: Les premières versions, jusqu'à la 0.2d15, écrites intégralement par Jak, ne sont pas décrites ici.

Retour

1/02/98 OlG

SEdit

La version décrite ici est la 0.2d16, résultat du merge de la 0.2d12 modifiée par mes soins et de la 0.2d15 de Jak.

Organisation des Packages

Chaque formalisme a son propre package (par exemple SEdit.Formalisms.Aalaadin), ceci pour faciliter un peu l'organisation. De plus, cela a l'autre avantage de préparer le terrain pour le passage en formalismes dynamiques en fichiers JAR.

La classe VerticalFlowLayout a rejoint le package SEdit.Graphiccs, vu que la spécification Java interdit toute modification aux hiérarchies java.qqchose

Modifications Diverses

Mécanisme de nommage de version avec une public static String VERSION dans la classe SEdit.SEditApp

A voir plus tard

Que modifier pour agentifier les editeurs dans MadKit é En particulier pour les modules Bric éouvrir récursivement. Rejoins le good old' problem de l'instanciation "automatique" d'agents dans la G-Box.

Que faire pour rendre SEdit un peu plus sexy par endroits ? (palette détachable ? Lightweights ?). Je ne suis pas fan de la méthode XOR pour les tracés. Voir l'utilisation d'un DoubleBuffer.

Faire une version CodeWarrior du project, et réussir à convaincre Jak de repasser sur CW/Win95 :-) (remarque de Jak: c'est fait, j'ai été convaincu...)

26/02/98 Jak

Intégration des icônes pour la visualisation des noeuds. Maintenant, on peut définir ses propres icônes à sa guise...

8/03/98 Jak - SEdit Version 03

Beaucoup de modifications. On est tres pres de la version 1.0...

Ajouts

Les classes principales de SEdit, décrites dans le formalisme SimpleClass.

Corrections de bugs

Beaucoup de bugs ont été corrigés, mais je ne me souviens plus lesquels....

17/03/98 OlG

Général

Tout SEdit utilise maintenant Swing 1.0.1, il ne doit plus normalement rester une seule instanciation de classe AWT ou de composant Heavyweight.

Application principale

La liste a été réécrite sous forme d'un JTree. Les éléments chargés au départ ont leur arborescense et les formalismes chargés dynamiquement le leur.

Un menu option a été rajouté pour changer de look&feel Java.

Un dialogue de confirmation a été rajouté sur lors du Quit.

Définition de Formalismes

Rajout des mots-clés de propriété en tête de formalisme: authors et htmldoc. Ces propriétés sont parsées pour donner le menu "Aide" dans les StructureFrame.

Par exemple:


Formalism "Minimal"

authors = "Jacques Ferber"

htmldoc = "formalisms/minimal.html"

Dans la classe formalisme, en plus du code de parsing, ont été rajoutés deux appels: setAuthors(String) et setDocURL(String) pour avoir les mêmes possibilités sous forme d'API.

Pour l'instant, la doc HTML est référencée depuis l'endroit du lancement de SEdit et sous forme de fichier local. Dans le futur, il serait souhaitable de:

Un bug corrigé dans le parseur de formalismes (propriétés)

Editeur de Structure

Toutes les icônes ont été vérifiées pour enlever les "effets 3D" désagréables avec le look&feel Metal ou Motif. Certaines icônes avait encore le mélange majuscule/minuscule empêchant l'affichage sur les plateformes non-windows, cela a été corrigé. Il semble y avoir dans certains cas un lock-up avec les formalismes à gif. A vérifier.

Le mode de sauvegarde du GraphicsContext nécessaire aux XOR de raffraichissement a été refait, il est maintenant dans paint() et non dans le addNotify(), et devrait être correct quel que soit la plateforme ou la hiérarchie graphique.

Un système de gestion de taille de la zone de dessin a été mis en place, la politique est la suivante:

Quelques bugs corrigés dans les positionnements de SElements. Un bug corrigé dans le popup-menu.

20/03/98 Jak - Version 0.5

Dialogues d'ouverture et de sauvegarde de fichiers

L'enthousiasme de OlG fait plaisir, mais les dialogues d'ouverture et de sauvegarde de fichiers avec le look and feel "Windows" de Swing, lorsqu'on est sous Windows est absolument déplorable: les dialogues sont très lents et n'offrent pas la mêmes fonctionnalités que celles qui sont dans le noyau système de Windows 95. Donc, il y a maintenant un test: lorsqu'on utilise le look and feel "Windows", on utilise les dialogues de l'AWT qui sont beaucoup plus rapides et pratiques. Désolé OlG...

Définition de formalisme (fichier .fml)

popupMenu = {{"inspect", "inspect"}{"entrer mot", "enterWord"} {"supprimer", "delete"}}

Remarque: les ',' ne sont pas obligatoires. C'est juste pour faire joli. Les ' ' (espace) jouent le même rôle, celui de séparateur.

Edition de champs

Les champs des noeuds (et des flèches, mais j'ai pas encore vérifié) peuvent être edités. il suffit pour cela d'indiquer dans le fichier de description du formalisme (fichier .fml), la collection de champs à éditer à la propriété editableFields.

editableFields = {label, "truc"}

Lorsqu'on demande l'inspection d'un élément, un dialogue se met en place (pour l'instant il est assez laid, mais on pourra arranger cela par la suite) et les champs qui ont été décrits dans editableFields peuvent être modifiés individuellement.

13/04/98 Jak - Version 0.6

Corrections de bugs et autres petites modifs diverses

  • Le bug qui posait problème lorsqu'on essayait d'ouvrir un SModule comprenant des SPin a été corrigé: maintenant il crée bien (à nouveau) des SPort. (les modifications ont été faites dans les fichiers SInPin.java et SOutPin.java, dans la méthode makePort).
  • Corrigé un bug entre les Pin et les Port: quand on supprimait un Pin ou un Port, il ne supprimait pas le Port ou le Pin correspondant. Cela est maintenant corrige (modification des fichiers SPin.java et SPort.java).
  • Modifié la methode Parse dans Formalism.java (de maniere a ce que les "ArrowType" puissent etre eventuellement devant).Modifié le formalisme Bric (BricInPin, etc..)
  • Réparé le bug de suppression des SPin et des SPort (modification des fichiers SPin, et de ses sous-classes, et du fichier SModule).
  • Fait en sorte que plusieurs formalismes puissent être chargés simultanéments s'ils ne sont pas présents (mot clé requires, avec une liste de formalismes. ex: requires = {"Automaton", "minimal"}). Les "" ne sont pas obligatoires (il faut absolument les mettre uniquement si le mot est un symbole.
  • Modifie SVector pour qu'il retourne une String[] (méthode asStringArray)
  • Corrigé le bug qui faisait que c'etait le "Name" qui était affiché dans la fenetre d'une sous-structure et non pas le "Label".
  • Modification de SimpleNode, de SCompNode, de SModule et de SNode (pour faire en sorte que les modules puissent eux aussi utiliser des .gifs). Install est remonte a SNode (alors qu'il etait defini auparavant dans SimpleNode). On peut maintenant intégrer des modules, avec leurs connecteurs, a un niveau quelconque (il y avait auparavant un bug qui empechait d'avoir des modules avec des connecteurs à l'intérieur d'un autre module).
  • Correction du bug d'affichage lors de la translation des diagrammes dans le formalisme Bric.
  • Ajouts et extensions

    	public boolean checkTypes(SNode from, SNode to, Structure struct)
    	{
    
    		if ((from instanceof PetriTransitionBehavior) && 
    		    (to instanceof PetriPlaceBehavior))
    			return(true);
    		else
    			return(false);
    
    	}

    On trouvera d'autres exemples dans le formalisme Bric (ArrowInConnect et ArrowOutConnect) ainsi que dans Etat-Transition (SimpleStateTransitionLink). Cette modification a été proposée (et réalisée) par Eric Burghard.

    // Modifs Jak Version 0.6 : ...

    Pour ceux qui sont intéressés par le système de renommage des SElement lorsqu'ils sont insérer dans un autre modèle, tout se passe dans les méthodes Parse (essentiellement dans SNode, SArrow et SPin). On transmet un "environnement" sous la forme d'une Hashtable. Si l'environnement est différent de null, alors on associe dans cet environnement l'ancien nom et le nouveau. Ainsi les flèches, qui sont des associations entre deux noeuds, sont mises directement à jour lors du chargement. Les sous-structures (qui sont intégrées aux noeuds qui héritent de SCompNode) n'ont pas besoin d'être renommées puisqu'elles disposent déjà de noms locaux. Il suffit donc de renommer les éléments qui se trouvent au top-level d'une hiérarchie d'emboîtement. Et toc!!

    17/04/98 Jak - Version 0.6.1

    Peu de modifications, surtout des corrections, donc pas de nouveau numero de version.

    Corrections de bugs et autres petites modifs diverses

    Ajouts et extensions (qui auraient dûes être dans la version 0.6)

    3/05/98 Jak - Version 0.6.2

    Une seule modif, importante quant aux formalismes, peu importantes en ce qui concerne SEdit même. Le besoin de pouvoir mettre les formalismes dans des .jars commence sérieusement à se faire sentir...

    Modification des formalismes Petri et Bric

    1/09/98 Jak - Version 0.7

    Beaucoup de petites modifications mineures, mais surtout un développement important qui concerne le formalisme Object, lequel peut servir à la conception d'applications objets. Même s'il n'est pas totalement terminé (cf les limites actuelles), il me semble à peu près utilisable.

    Cette version a pour ambition de durer un peu. Il n'y aura pas de modifications importantes sur cette version en attendant la 1.0 qui comprendra des modifications majeures: en particulier elle utilisera un nouveau format de fichiers (pour les formalismes comme pour les schémas) et contiendra un interprète Scheme (réalisé à l'aide de l'excellent Kawa) en interne. Cela vaudra le coup d'attendre.

    Modifications mineures

    	ArrowDesc a3 = new ArrowDesc("InheritanceCC",
    					"Lien d'héritage",
    
    					"Object.InheritanceCC",
    
    					"InheritanceC-C");
    
    	a3.displayLabel = false;
    
    	a3.labelLocation = ElementDesc.displayTop;
    
    	a3.directLine = true;
    
    	f.addArrowDesc(a3);

    Développement du formalisme Object

    Il est maintenant possible de concevoir des applications en suivant le modèle objet: Voici l'écran principal d'un modèle utilisant ce formalisme.

    Les numéros correspondent aux nombres d'attributs (en bleus) et de méthodes (en rouge) que possède une classe. On peut créer des classes (en violet) ou des interfaces (en vert) définir des associations ou des agrégations entre classes, lier les classes (et les interfaces) par héritage. La cardinalité des relations est affichée.

    Voici l'éditeur des propriétés d'une classe:

    Chaque propriété ou chaque méthode peut être éditée séparément. Voici l'éditeur des méthodes:

    et celui des attributs:

    Limites actuelles

    Les bonnes volontés désirant améliorer ce formalisme sont les bienvenues. Envoyer moi simplement un petit message...

    1/09/98 Jak - Version 1.0

    Enfin la version 1.0!! Une grosse différence avec les versions précédentes: l'intégraton d'un langage de commande sous la forme d'un interprète/compilateur Scheme. La version utilisée est Kawa, la super implémentation Scheme en Java de bothner@cygnus.com. L'intérêt de cette version, entre autres, est de compiler Scheme directement dans la machine virtuelle Java. Du coup, les performances de Scheme ne sont pas ridicules. De plus, l'intégration de Scheme avec Java est très réussie, puisque le type générique des objets Scheme est java.lang.Object!

    Du coup, SEdit utilise maintenant la syntaxe Scheme pour les fichiers des modèles comme pour ceux des formalismes. En fait, charger un modèle revient simplement à exécuter un ensemble de commandes écrites en Scheme. La description des commandes se trouve dans le fichier scheme.htm.Elle n'est peut être pas totalement complète, mais presque. Les fichiers de commandes se trouvent dans le directory 'Scheme', situé au premier niveau de SEdit. On y trouve en particulier init.scm qui contient toutes les commandes nécessaires écrites en Scheme, et Object.scm qui contient un ensemble de commandes utilisées par le formalisme Object.

    On peut ouvrir une fenêtre d'évaluation comprenant deux editeurs de texte, le premier pour les commandes à évaluer, le second pour l'affichage des résultats. On peut ainsi voir ce que font les diverses commandes et les tester pas à pas.

    En fait, extérieurement pas beaucoup de choses de changées, mais intérieurement, c'est énorme...

     

    15/09/98 Jak - Version 1.1

    Déjà la 1.1.. Et oui! Cette version contient de nouvelles fonctionnalités:

    Variables

    Caractéristiques des noeuds

    (setProperty a 'defaultLabel "lié à")

    la chaîne "lié à" sera attribuée par défaut à la flèche dont le descripteur est a.

    Couper-coller

    09/02/99 Ol. G - Version 1.1.3 (Short cut)

    Mise à jour par rapport aux sources externes

    Corrections diverses

    01/06/99 Ol. G - Version 1.2 (Demolition Man)

    Mise à jour par rapport aux sources externes

    Corrections diverses