From: <had...@us...> - 2008-09-03 17:05:24
|
Revision: 3875 http://fudaa.svn.sourceforge.net/fudaa/?rev=3875&view=rev Author: hadouxad Date: 2008-09-03 17:05:28 +0000 (Wed, 03 Sep 2008) Log Message: ----------- - refactorisation de trpostLayoutFille - il n' y a plus qu'une unique creation des composants graphique pour les objets calques, graphe et scene - methode d acces au composants graphiques sont dans les controlleurs - getOverviewComponent () donne l arbre principal - getToolbarComponent() donne la toolbar - getMenus() donne le menu - methode addFonctionsSpecific() qui permet d ajouter des actions haut niveau (trpost) sans etre g?\195?\169n?\195?\169 cot?\195?\169 ebli - methode du trpostfilel sont synchronized pour eviter de faire bugger les composant si on clic comme un fou... - ajout du trac?\195?\169 souris dans le cas du calque - creation d un controller de la scene qui gere les actions et els constructions graphiques - l'arbre et de la scene est inclu dans l objet EbliSceneController necessaire pour la gestion multi scene - mise en oeuvre le syst?\195?\168me d?\195?\169crit hier pour la creation de toutes les courbes dans n'importe quel graphe - action disponible dans la palette principale - selection simultan?\195?\169e des graphes et du calque unique - gestion des messages d erreurs en cas de prob. Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetBordure.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java 2008-09-03 16:55:56 UTC (rev 3874) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java 2008-09-03 17:05:28 UTC (rev 3875) @@ -34,5 +34,11 @@ */ public boolean isMovable(); + /** + * obtient la widget associee + * + * @return + */ + public EbliWidget getWidget(); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-09-03 16:55:56 UTC (rev 3874) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-09-03 17:05:28 UTC (rev 3875) @@ -5,9 +5,8 @@ import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetEditCreator; -import org.netbeans.api.visual.action.ActionFactory; +import org.fudaa.ebli.visuallibrary.tree.EbliWidgetJXTreeTableModel; import org.netbeans.api.visual.action.SelectProvider; -import org.netbeans.api.visual.action.WidgetAction; import org.netbeans.api.visual.graph.GraphScene; import org.netbeans.api.visual.widget.LayerWidget; import org.netbeans.api.visual.widget.Scene; @@ -20,6 +19,19 @@ */ public class EbliScene extends GraphScene<EbliNode, EbliEdge> { + /** + * model de la scene pour l affichage de ses composants + */ + EbliWidgetJXTreeTableModel treeModel_; + + /** + * controller de la scene qui gere les actions et les constructions graphiques + */ + private EbliSceneController controller_; + + + + private class ObjectSelectProvider implements SelectProvider { public boolean isAimingAllowed(Widget widget, Point localLocation, boolean invertSelection) { @@ -48,8 +60,7 @@ } - final private WidgetAction alignWithMoveAction; - final private WidgetAction alignWithResizeAction; + /** * Le gestionnaire de commande associe \xE0 la scene */ @@ -59,8 +70,10 @@ private LayerWidget interactionLayer_; - public final WidgetAction rectangularSelection_; + + + /** * la visu du graphscene */ @@ -79,21 +92,14 @@ visu_ = new LayerWidget(this); addChild(visu_); + // -- creation de son model tree --// + treeModel_ = new EbliWidgetJXTreeTableModel(this); + + // -- creation de son controlleur --// + controller_ = new EbliSceneController(this); - alignWithMoveAction = ActionFactory.createAlignWithMoveAction(visu_, interactionLayer_, ActionFactory - .createDefaultAlignWithMoveDecorator(), false); - alignWithResizeAction = ActionFactory.createAlignWithResizeAction(visu_, interactionLayer_, ActionFactory - .createDefaultAlignWithMoveDecorator(), false); - - rectangularSelection_=ActionFactory.createRectangularSelectAction(this, interactionLayer_); - // -- ajoute l'action du zoom ( ctrl + clic) - getActions().addAction(ActionFactory.createCenteredZoomAction(1.1)); - getActions().addAction(rectangularSelection_); - // -- ajouter le menu popup de base - setMenuBase(); - } @Override @@ -157,17 +163,8 @@ return visu_; } - public WidgetAction getMoveAction() { - return alignWithMoveAction; - } + - /** - * @return the rectangularSelection - */ - public WidgetAction getRectangularSelection() { - return rectangularSelection_; - } - public LayerWidget getVisu() { return visu_; } @@ -243,53 +240,24 @@ editor_ = _editor; } - public void setMenuBase() { - // getActions().addAction(ActionFactory.createPopupMenuAction(new - // PopupMenuProvider() { - // public JPopupMenu getPopupMenu(Widget widget, Point localLocation) { - // JPopupMenu popup = new JPopupMenu(); - // - // JMenuItem menuItem1 = popup.add("Ajouter Graphe"); - // menuItem1.addActionListener(new ActionListener() { - // - // public void actionPerformed(ActionEvent e) { - // - // } - // - // }); - // - // JMenuItem menuItem2 = popup.add("Ajouter Maillage"); - // menuItem2.addActionListener(new ActionListener() { - // - // public void actionPerformed(ActionEvent e) { - // - // } - // - // }); - // - // JMenuItem menuItem3 = popup.add("Fermer l'objet"); - // menuItem3.addActionListener(new ActionListener() { - // - // public void actionPerformed(ActionEvent e) { - // - // // fermeture des widgets children - // EbliScene.this.removeChildren(); - // // fermeture du widget donne - // EbliScene.this.removeFromParent(); - // - // } - // - // }); - // return popup; - // } - // })); - } + public void setVisu_(LayerWidget visu_) { this.visu_ = visu_; } + - + public LayerWidget getInteractionLayer() { + return interactionLayer_; + } + + public EbliSceneController getController() { + return controller_; + } + public EbliWidgetJXTreeTableModel getTreeModel() { + return treeModel_; + } + } Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java 2008-09-03 17:05:28 UTC (rev 3875) @@ -0,0 +1,173 @@ +package org.fudaa.ebli.visuallibrary; + +import javax.swing.ListSelectionModel; + +import org.fudaa.ebli.visuallibrary.tree.EbliJXTreeTableCellRenderer; +import org.jdesktop.swingx.JXTreeTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.netbeans.api.visual.action.ActionFactory; +import org.netbeans.api.visual.action.WidgetAction; +import org.netbeans.api.visual.model.ObjectSceneEventType; + +import com.memoire.bu.BuMenuBar; +import com.memoire.bu.BuToolBar; + +public class EbliSceneController { + /** + * Tree qui contient la hierarchie des widget de la scene. + */ + JXTreeTable treeScene_ = null; + + BuToolBar toolbarCalque_ = null; + BuMenuBar menuCalque_ = null; + + EbliScene scene_; + + final private WidgetAction alignWithMoveAction; + final private WidgetAction alignWithResizeAction; + + + + public final WidgetAction rectangularSelection_; + + public EbliSceneController(EbliScene _scene) { + + + scene_ = _scene; + + + + alignWithMoveAction = ActionFactory.createAlignWithMoveAction(scene_.getVisu(), scene_.getInteractionLayer(), + ActionFactory + .createDefaultAlignWithMoveDecorator(), false); + + alignWithResizeAction = ActionFactory.createAlignWithResizeAction(scene_.getVisu(), scene_.getInteractionLayer(), + ActionFactory + .createDefaultAlignWithMoveDecorator(), false); + + rectangularSelection_ = ActionFactory.createRectangularSelectAction(scene_, scene_.getInteractionLayer()); + // -- ajoute l'action du zoom ( ctrl + clic) + scene_.getActions().addAction(ActionFactory.createCenteredZoomAction(1.1)); + scene_.getActions().addAction(rectangularSelection_); + + // -- ajouter le menu popup de base + setMenuBase(); + + } + + + public void setMenuBase() { + // getActions().addAction(ActionFactory.createPopupMenuAction(new + // PopupMenuProvider() { + // public JPopupMenu getPopupMenu(Widget widget, Point localLocation) { + // JPopupMenu popup = new JPopupMenu(); + // + // JMenuItem menuItem1 = popup.add("Ajouter Graphe"); + // menuItem1.addActionListener(new ActionListener() { + // + // public void actionPerformed(ActionEvent e) { + // + // } + // + // }); + // + // JMenuItem menuItem2 = popup.add("Ajouter Maillage"); + // menuItem2.addActionListener(new ActionListener() { + // + // public void actionPerformed(ActionEvent e) { + // + // } + // + // }); + // + // JMenuItem menuItem3 = popup.add("Fermer l'objet"); + // menuItem3.addActionListener(new ActionListener() { + // + // public void actionPerformed(ActionEvent e) { + // + // // fermeture des widgets children + // EbliScene.this.removeChildren(); + // // fermeture du widget donne + // EbliScene.this.removeFromParent(); + // + // } + // + // }); + // return popup; + // } + // })); + } + + /** + * Methode qui retourne ou cree le tree associe a la scene + * + * @return + */ + public JXTreeTable getOverviewComponent() { + + if (treeScene_ != null) { + + // FuLog.warning("treeScene JE SUIS PA nul"); + return treeScene_; + } + + treeScene_ = new JXTreeTable(scene_.getTreeModel()); + + // -- ajout du tree au model pour les dimensionnements --// + // modeltable.setTree_(tree_); + + // --vision du noeud root --// + treeScene_.setRootVisible(false); + + // --ajout du renderer pour les images-// + treeScene_.setTreeCellRenderer(new EbliJXTreeTableCellRenderer()); + + // -- ouvert par defaut --// + treeScene_.expandAll(); + + // -- ajout des highlighters customs --// + treeScene_.setHighlighters(HighlighterFactory.createSimpleStriping()); + treeScene_.setShowsRootHandles(true); + // -- selection unique --// + treeScene_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + treeScene_.setEditable(true); + + // --dimensions des colonnes --// + treeScene_.getColumn(0).setPreferredWidth(60); + treeScene_.getColumn(1).setPreferredWidth(50); + treeScene_.getColumn(2).setPreferredWidth(5); + // FIXME Adrien: si on edite du texte dans le jxtreetable els colonnes se + // redimensionnents + treeScene_.getColumn(0).setResizable(false); + treeScene_.getColumn(1).setResizable(false); + treeScene_.getColumn(2).setResizable(false); + treeScene_.validate(); + + // -- ajout du synchroniser du tree/scene --// + + scene_.addObjectSceneListener(new EbliWidgetSynchroniser(scene_.getTreeModel(), treeScene_), + ObjectSceneEventType.OBJECT_SELECTION_CHANGED); + + return treeScene_; + + } + + public BuToolBar getToolbarComponent() { + return null; + } + + public BuMenuBar getMenubarComponent() { + return null; + } + public WidgetAction getMoveAction() { + return alignWithMoveAction; + } + + /** + * @return the rectangularSelection + */ + public WidgetAction getRectangularSelection() { + return rectangularSelection_; + } + +} Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetBordure.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetBordure.java 2008-09-03 16:55:56 UTC (rev 3874) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetBordure.java 2008-09-03 17:05:28 UTC (rev 3875) @@ -26,10 +26,15 @@ */ EbliWidget intern_; - + /** + * Retourne le controlleur de son objet contenu. Le controlleur de la bordure + * n'a pas besoin d'etre recup\xE9r\xE9. + */ + @Override + public EbliWidgetController getController_() { + return getIntern().getController_(); + } - - public float epaisseurHisto_ = 0; /** * constructeur qui gere un controller uniquement pour les actions. Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java 2008-09-03 16:55:56 UTC (rev 3874) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java 2008-09-03 17:05:28 UTC (rev 3875) @@ -5,13 +5,16 @@ import java.awt.event.ActionListener; import java.util.ArrayList; +import javax.swing.JComponent; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.controle.BConfigurableComposite; import org.fudaa.ebli.controle.BConfigurePalette; import org.fudaa.ebli.visuallibrary.actions.CommandMasquer; @@ -23,7 +26,9 @@ import org.netbeans.api.visual.action.WidgetAction; import org.netbeans.api.visual.widget.Widget; +import com.memoire.bu.BuMenuBar; import com.memoire.bu.BuResource; +import com.memoire.bu.BuToolBar; /** * Classe qui g\xE8re les actions de contr\xF4le de la widget @@ -94,7 +99,7 @@ widget_.getActions().addAction(widget_.getEbliScene().createWidgetHoverAction()); - actionMove_ = widget_.getEbliScene().getMoveAction(); + actionMove_ = widget_.getEbliScene().getController().getMoveAction(); if (canMove_) widget_.getActions().addAction(actionMove_); } @@ -317,4 +322,34 @@ this.widget_ = widget_; }; + + public JComponent getOverviewComponent() { + + + + return null; + } + + public BuToolBar getToolbarComponent() { + return null; + } + + public BuMenuBar getMenubarComponent() { + return null; + } + public void addFonctionsSpecific(ArrayList<EbliActionSimple> _listeActions) { + + } + + public boolean fonctionsAlreadySpecified() { + return false; + } + + + public JComponent gettracableComponent() { + + return new JLabel(); + } + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |