From: <had...@us...> - 2008-08-05 07:51:16
|
Revision: 3709 http://fudaa.svn.sourceforge.net/fudaa/?rev=3709&view=rev Author: hadouxad Date: 2008-08-05 07:51:22 +0000 (Tue, 05 Aug 2008) Log Message: ----------- AFFECT?\195?\137 - # 40: L?\195?\169gende pour les courbe 1d http://mantis.genesis-groupe.com//view.php?id=40 - creation du package visual librarie - creation de EbliWidget - creation de LineWidget : dessin de la ligne et icone - creation de TitleWidget : label du titre Les libell?\195?\169s et couleurs icones se mettent a jour a la modification de la conf de la courbe Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/LineWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/TitleWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManager.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManagerOLD.java Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -0,0 +1,35 @@ +package org.fudaa.ebli.visuallibrary; + +import org.netbeans.api.visual.action.ActionFactory; +import org.netbeans.api.visual.laf.LookFeel; +import org.netbeans.api.visual.model.ObjectState; +import org.netbeans.api.visual.widget.Scene; +import org.netbeans.api.visual.widget.Widget; + + +/** + * Widget version EBLI + * @author genesis + * + */ +class EbliWidget extends Widget { + + /** + * @param scene + */ + public EbliWidget(Scene scene) { + super(scene); + getActions().addAction( ActionFactory.createResizeAction()); + getActions().addAction(ActionFactory.createMoveAction()); + getActions().addAction(scene.createWidgetHoverAction());//a voir pour que le parent soit + //aussi en hover : a voir apr\xE8s. + setBorder(getScene().getLookFeel().getMiniBorder(ObjectState.createNormal())); + } + + @Override + public void notifyStateChanged(ObjectState previousState, ObjectState newState) { + LookFeel lookFeel = getScene().getLookFeel(); + setBorder(lookFeel.getMiniBorder(newState)); + } + +} \ No newline at end of file Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/LineWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/LineWidget.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/LineWidget.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -0,0 +1,52 @@ +package org.fudaa.ebli.visuallibrary; + +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.Rectangle; + +import org.fudaa.ebli.courbe.EGCourbe; +import org.fudaa.ebli.trace.TraceIcon; +import org.fudaa.ebli.trace.TraceIconModel; +import org.fudaa.ebli.trace.TraceLigne; +import org.netbeans.api.visual.widget.Scene; + + +/** + * Legende + * Widget qui contient le trac\xE9 de la ligne de la l\xE9gende courbe + * @author genesis + * + */ +public class LineWidget extends EbliWidget { + + EGCourbe cb_; + + /** + * @param _scene + */ + public LineWidget(Scene _scene, EGCourbe _cb) { + super(_scene); + cb_ = _cb; + setMinimumSize(new Dimension(30, 10)); + setPreferredSize(new Dimension(40, 10)); + } + + /** + * + */ + @Override + protected void paintWidget() { + Graphics2D g = getGraphics(); + Rectangle rec = getClientArea(); + g.translate(rec.x, rec.y); + //la ligne + TraceLigne l = new TraceLigne(cb_.getLigneModel()); + l.dessineTrait(g, 0, rec.height / 2, rec.width, rec.height / 2); + //l'icone + TraceIconModel icm = new TraceIconModel(cb_.getIconModel()); + icm.setTaille(Math.min(rec.width / 2, rec.height));//a voir + TraceIcon ic = new TraceIcon(icm); + ic.paintIconCentre(g, rec.width / 2, rec.height / 2); + g.translate(-rec.x, -rec.y); + } +} Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/LineWidget.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/TitleWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/TitleWidget.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/TitleWidget.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -0,0 +1,57 @@ +package org.fudaa.ebli.visuallibrary; + +import org.fudaa.ebli.courbe.EGCourbe; +import org.netbeans.api.visual.layout.LayoutFactory.SerialAlignment; +import org.netbeans.api.visual.widget.LabelWidget; +import org.netbeans.api.visual.widget.Scene; +import org.netbeans.modules.visual.layout.FlowLayout; + + +/** + * Legende + * Widget qui contient le titre de la ligne de la l\xE9gende courbe + * @author genesis + * + */ +public class TitleWidget extends EbliWidget { + + EGCourbe cb_; + + LabelWidget intern; + + /** + * @param _scene + */ + public TitleWidget(Scene _scene, EGCourbe _cb) { + super(_scene); + setLayout(new FlowLayout(true, SerialAlignment.LEFT_TOP, 0)); + intern = new LabelWidget(_scene); + intern.setForeground(_cb.getAspectContour()); + addChild(intern); + setCourbe(_cb); + } + + public void majLabel(){ + intern.setForeground(cb_.getAspectContour()); + intern.setLabel(cb_.getTitle()); + } + + + /** + * @return the cb_ + */ + public EGCourbe getCourbe() { + return cb_; + } + + /** + * @param _cb the cb_ to set + */ + public void setCourbe(EGCourbe _cb) { + this.cb_ = _cb; + if (cb_ != null) { + intern.setLabel(cb_.getTitle()); + } + } + +} \ No newline at end of file Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/TitleWidget.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManager.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManager.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManager.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -0,0 +1,108 @@ +package org.fudaa.ebli.visuallibrary; + + + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.Rectangle; + +import javax.swing.JFrame; +import javax.swing.JPanel; + +import org.fudaa.ctulu.iterator.LogarithmicNumberIterator; +import org.fudaa.ebli.courbe.EGAxe; +import org.fudaa.ebli.courbe.EGAxeHorizontal; +import org.fudaa.ebli.courbe.EGAxeVertical; +import org.fudaa.ebli.courbe.EGCourbe; +import org.fudaa.ebli.courbe.EGCourbeChild; +import org.fudaa.ebli.courbe.EGCourbeModelDefault; +import org.fudaa.ebli.courbe.EGGraphe; +import org.fudaa.ebli.courbe.EGGrapheModelListener; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; +import org.fudaa.ebli.courbe.EGGroup; +import org.fudaa.ebli.courbe.EGObject; +import org.fudaa.ebli.trace.TraceIcon; +import org.fudaa.ebli.trace.TraceIconModel; +import org.fudaa.ebli.trace.TraceLigne; +import org.fudaa.ebli.trace.TraceLigneModel; +import org.netbeans.api.visual.action.ActionFactory; +import org.netbeans.api.visual.graph.GraphScene; +import org.netbeans.api.visual.laf.LookFeel; +import org.netbeans.api.visual.layout.LayoutFactory.SerialAlignment; +import org.netbeans.api.visual.model.ObjectState; +import org.netbeans.api.visual.widget.LabelWidget; +import org.netbeans.api.visual.widget.LayerWidget; +import org.netbeans.api.visual.widget.Scene; +import org.netbeans.api.visual.widget.Widget; +import org.netbeans.modules.visual.layout.FlowLayout; + +/** + * @author denf01a adrien hadous + * @creation 5 ao\xFBt 2008 + * @version + * + */ +public class WidgetLegendeManager { + + + + //exemple a ameliorer + public static EbliWidget createLegende(EGGraphe g, Scene scene) { + EGCourbe[] cs = g.getModel().getCourbes(); + EbliWidget res = new EbliWidget(scene); + res.setLayout(new FlowLayout(true, SerialAlignment.LEFT_TOP, 10));// a modifier pour setter le gap + for (int i = 0; i < cs.length; i++) { + final EbliWidget line = new EbliWidget(scene); + line.setLayout(new FlowLayout(false, SerialAlignment.CENTER, 5)); + + //creation de la widget titre + final TitleWidget tw=new TitleWidget(scene, cs[i]); + + //creation de la widget ligne + LineWidget lw=new LineWidget(scene, cs[i]); + + line.addChild(lw); + line.addChild(tw); + res.addChild(line); + + //-- ajouter le listener EGGraphe pour ecouter et \xE9ettre a jour els l\xE9gendes --// + g.getModel().addModelListener(new EGGrapheModelListener() { + + public void structureChanged() { + line.repaint(); + tw.majLabel(); + + } + + public void courbeContentChanged(EGObject _c, boolean restore) { + line.repaint(); + tw.majLabel(); + + } + + public void courbeAspectChanged(EGObject _c, boolean _visibil) { + line.repaint(); + tw.majLabel(); + + } + + public void axeContentChanged(EGAxe _c) { + line.repaint(); + tw.majLabel(); + } + + public void axeAspectChanged(EGAxe _c) { + line.repaint(); + tw.majLabel(); + } + }); + + } + return res; + } + + + +} Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManager.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManagerOLD.java (from rev 3708, branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/WidgetLegendeManager.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManagerOLD.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManagerOLD.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -0,0 +1,184 @@ +package org.fudaa.ebli.visuallibrary; + + + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ctulu.image.CtuluImageProducer; +import org.fudaa.ctulu.image.CtuluLibImage; +import org.fudaa.ebli.courbe.EGAxe; +import org.fudaa.ebli.courbe.EGCourbe; +import org.fudaa.ebli.courbe.EGGraphe; +import org.fudaa.ebli.courbe.EGGrapheModelListener; +import org.fudaa.ebli.courbe.EGObject; +import org.netbeans.api.visual.action.ActionFactory; +import org.netbeans.api.visual.action.SelectProvider; +import org.netbeans.api.visual.action.TextFieldInplaceEditor; +import org.netbeans.api.visual.graph.GraphScene; +import org.netbeans.api.visual.laf.LookFeel; +import org.netbeans.api.visual.model.ObjectState; +import org.netbeans.api.visual.widget.ImageWidget; +import org.netbeans.api.visual.widget.LabelWidget; +import org.netbeans.api.visual.widget.LayerWidget; +import org.netbeans.api.visual.widget.Widget; + +import sun.awt.image.ToolkitImage; + + + +/** + * Classe qui g\xE9n\xE8re les l\xE9gendes de chacun des graphes + * + * + * @author Adrien Hadoux + * + */ + +public class WidgetLegendeManagerOLD { + + + static List<ImageWidget> listeWidgets=null; + + //gap vertical entre chaque widget legendes + final static int Vgap=10; + //gap horizontal entre chaque widget legendes + final static int Hgap=10; + + final static int widthDefault=100; + final static int heightDefault=30; + + + public static void createWidgetLegendeGraphe(GraphScene scene,LayerWidget visu,EGGraphe graphe, Rectangle areaGraphe) { + + + listeWidgets=new ArrayList<ImageWidget>(); + + //-- cr\xE9ation, affichage et ajout du listener du graphe pour chacune des widgets suivantes --// + + for(int i=0; i<graphe.getModel().getCourbes().length;i++){ + + final EGCourbe courbe=graphe.getModel().getCourbes()[i]; + final int cpt=i; + + + + //--creation d un nouveau widget image --// + final ImageWidget legendeWidget=new ImageWidget (scene){ + public void notifyStateChanged(ObjectState previousState, + ObjectState newState) { + LookFeel lookFeel = getScene().getLookFeel(); + // setBorder(lookFeel.getBorder(newState)); + // setForeground(lookFeel.getForeground(newState)); + + setBorder(lookFeel.getBorder(newState)); + // setBorder(newState.isSelected() ? + // (DEFAULT_SELECTED_BORDER) : + // (newState.isHovered() ? RESIZE_BORDER + // : DEFAULT_BORDER)); + //repaint(); + + } + + //-- redessinne la l\xE9gende + protected void paintWidget() { + + // recuperation du rectangle contour + Rectangle rec = getClientArea(); + Graphics2D g=getGraphics(); + + g.translate(rec.x, rec.y); + + + //dimension du cadre de la l\xE9gende // + int widthCadre=rec.width; + int heightCadre=rec.height; + + //cas initial: dessin vide + if(widthCadre==0) + widthCadre=widthDefault; + if(heightCadre==0) + heightCadre=heightDefault; + + g.setColor(Color.GRAY); + g.drawRect(rec.x, rec.y,widthCadre - 1, heightCadre - 1); + + //-- dessin du titre et des lignes --// + g.setFont(new Font("Serif",Font.PLAIN,rec.height/2)); + g.setColor(courbe.getAspectContour()); + g.drawString(courbe.getTitle(),rec.x + Hgap/2 , (int)(rec.y + rec.height/2)); + //FIXME Comment je peux obtenir les icones et les lignes et les dimensionner? + } + + }; +legendeWidget.setPreferredSize(new Dimension(widthDefault,heightDefault)); + + //-- ajouter le listener EGGraphe pour ecouter et \xE9ettre a jour els l\xE9gendes --// + graphe.getModel().addModelListener(new EGGrapheModelListener() { + + public void structureChanged() { + legendeWidget.repaint(); + + } + + public void courbeContentChanged(EGObject _c, boolean restore) { + legendeWidget.repaint(); + + } + + public void courbeAspectChanged(EGObject _c, boolean _visibil) { + legendeWidget.repaint(); + // TODO Auto-generated method stub + + } + + public void axeContentChanged(EGAxe _c) { + legendeWidget.repaint(); + + } + + public void axeAspectChanged(EGAxe _c) { + legendeWidget.repaint(); + + } + }); + + //-- ajouter les actions liees au widget --// + legendeWidget.getActions().addAction( ActionFactory.createResizeAction()); + legendeWidget.getActions().addAction(ActionFactory.createMoveAction()); + legendeWidget.getActions().addAction(scene.createWidgetHoverAction()); + + + //-- ajout de la widget dans la liste --// + listeWidgets.add(legendeWidget); + + //-- positionner le widget dans la scene par rapport au graphe et a ses autres widgets --// + //FIXME am\xE9eliorer en discuter avec Fred + legendeWidget.setPreferredLocation (new Point ((widthDefault+Hgap)*cpt, Vgap)); + + scene.addChild(legendeWidget); + + }//fin for + + //-- positionner le widget dans la scene par rapport au graphe et a ses autres widgets --// + //TODO am\xE9eliorer en discuter avec Fred + //visu.addChildren(listeWidgets); + + } + + +} + + Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/WidgetLegendeManagerOLD.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java 2008-08-05 06:21:31 UTC (rev 3708) +++ branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java 2008-08-05 07:51:22 UTC (rev 3709) @@ -41,9 +41,10 @@ import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGGroup; import org.fudaa.ebli.courbe.EGObject; -import org.fudaa.ebli.courbe.WidgetLegendeManager; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.ebli.visuallibrary.WidgetLegendeManager; +import org.fudaa.ebli.visuallibrary.WidgetLegendeManagerOLD; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.graph.GraphScene; import org.netbeans.api.visual.laf.LookFeel; @@ -324,8 +325,9 @@ }; - WidgetLegendeManager.createWidgetLegendeGraphe(this, visu, courbe, graphe.getClientArea()); + //WidgetLegendeManagerOLD.createWidgetLegendeGraphe(this, visu, courbe, graphe.getClientArea()); + visu.addChild (WidgetLegendeManager.createLegende(courbe, this)); //ajout des resize et drag imageWidget.getActions().addAction( ActionFactory.createResizeAction()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |