From: <de...@us...> - 2012-10-10 20:25:19
|
Revision: 7733 http://fudaa.svn.sourceforge.net/fudaa/?rev=7733&view=rev Author: deniger Date: 2012-10-10 20:25:08 +0000 (Wed, 10 Oct 2012) Log Message: ----------- Modified Paths: -------------- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGActionInteraction.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquesPanel.java trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionAbstract.java trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionInterface.java trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliLib.java Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGActionInteraction.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGActionInteraction.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGActionInteraction.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -1,8 +1,8 @@ /** - * @creation 24 juin 2004 - * @modification $Date: 2006-07-13 13:35:42 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @creation 24 juin 2004 + * @modification $Date: 2006-07-13 13:35:42 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... */ package org.fudaa.ebli.courbe; @@ -19,30 +19,31 @@ * @version $Id: EGActionInteraction.java,v 1.5 2006-07-13 13:35:42 deniger Exp $ */ public class EGActionInteraction extends EbliActionChangeState implements PropertyChangeListener { - + @Override public void propertyChange(final PropertyChangeEvent _evt) { final boolean newVal = ((Boolean) _evt.getNewValue()).booleanValue(); - if(newVal!=isSelected()) { + if (newVal != isSelected()) { setSelected(newVal); } } - EGInteractiveComponent interComp_; - + public EGActionInteraction(final String _name, final Icon _ic, final String _action, final EGInteractiveComponent _inter) { super(_name, _ic, _action); setTarget(_inter); } - + public final void setTarget(final EGInteractiveComponent _inter) { + if (interComp_ != null) { + interComp_.removePropertyChangeListener("active", this); + } interComp_ = _inter; interComp_.addPropertyChangeListener("active", this); } - + @Override public void changeAction() { interComp_.setActive(isSelected()); } - -} \ No newline at end of file +} Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -59,7 +59,7 @@ */ public class EGFillePanel extends BuPanel implements PropertyChangeListener, ActionListener, CtuluSelectionInterface, CtuluImageProducer { - + protected final EGVue vue_; JLabel lbTools_; EbliActionInterface[] personnalAction_; @@ -72,16 +72,24 @@ public EGFillePanel(final EGGraphe _a) { this(_a, null); } - + public EGFillePanel duplicate() { return new EGFillePanel(vue_.getGraphe().duplicate()); } - + + /** + * doit etre appelee si le panneau est ferm\xE9 definitivement + */ + public void cleanListeners() { + EbliLib.cleanListener(personnalAction_); + EbliLib.cleanListener(specificTools_); + } + public void addSelectionListener(final CtuluListSelectionListener _l) { selection_.addSelectionListener(_l); - + } - + public EGFillePanel(final EGGraphe _a, final EbliActionInterface[] _userAction) { setLayout(new BuBorderLayout(5, 0)); personnalAction_ = _userAction; @@ -96,7 +104,7 @@ lbTools_.setPreferredSize(new Dimension(200, 20)); lbTools_.setSize(new Dimension(100, 20)); lbTools_.setOpaque(false); - + add(lbTools_, BuBorderLayout.SOUTH); vue_ = new EGVue(_a); add(vue_, BuBorderLayout.CENTER); @@ -105,7 +113,7 @@ // suiviInfos_ = new EGInteractionSuiviAllOrdonnees(vue_.getGraphe()); } - + protected void addListenerCourbePoint(final CtuluListSelectionListener _l) { selection_.getSelection().addListeSelectionListener(_l); } @@ -126,7 +134,7 @@ r.add(a); selection_.addPropertyChangeListener(this); actionForGroup.add(a); - + EbliActionAbstract s = new EbliActionSimple(EbliResource.EBLI.getString("Restaurer"), EbliResource.EBLI .getIcon("restore"), "RESTORE") { @Override @@ -161,7 +169,7 @@ r.add(a); actionForGroup.add(a); zoom.addPropertyChangeListener(this); - + final EGInteractionMove move = new EGInteractionMove(vue_.graphe_); move.setDefaultInteractiveComponent(selection_); vue_.addInteractiveCmp(move); @@ -170,7 +178,7 @@ a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('m')); r.add(a); actionForGroup.add(a); - + final EGInteractionSuivi suivi = new EGInteractionSuivi(vue_.getGraphe()); vue_.addInteractiveCmp(suivi); a = new EGActionInteraction(EbliLib.getS("suivi"), EbliResource.EBLI.getIcon("pointeur"), "SUIVI", suivi); @@ -181,7 +189,7 @@ actionForGroup.add(a); EbliActionSimple actionpal = new EGActionPaletteAllCoordonnees(this); r.add(actionpal); - + if (getModel().isContentModifiable()) { r.add(null); final EGInteractionAddPoint addPt = new EGInteractionAddPoint(this); @@ -200,7 +208,7 @@ r.add(a); pt.addPropertyChangeListener(this); actionForGroup.add(a); - + EbliActionSimple act = new EGSimplificationAction(vue_.graphe_); r.add(act); r.add(null); @@ -215,16 +223,16 @@ EGPaletteLegendeGraphe palette = new EGPaletteLegendeGraphe(getGraphe()); palette.setPreferredSize(new Dimension(500, 600)); palette.afficheModale(CtuluLibSwing.getFrameAncestor(EGFillePanel.this)); - + } }); - + final BPaletteInfoAbstractAction info = new BPaletteInfoAbstractAction() { @Override public JComponent buildContentPane() { return new EGPaletteInfo(EGFillePanel.this, null); } - + @Override protected boolean mustBeUpdated() { return getModel().getNbSelectedObjects() >= 0; @@ -232,9 +240,9 @@ }; r.add(info); r.add(new EGTableAction(getGraphe())); - + new EbliActionGroup(actionForGroup); - + if (personnalAction_ != null) { r.add(null); final int nb = personnalAction_.length; @@ -259,43 +267,43 @@ | InputEvent.SHIFT_DOWN_MASK)); r.add(addAction); } - + final EbliActionInterface[] rf = new EbliActionInterface[r.size()]; r.toArray(rf); EbliLib.updateMapKeyStroke(this, rf); - + return rf; } - + protected EGCourbe getCourbeSelected() { return vue_.graphe_.getSelectedComponent(); } - + public EGGraphe getGraphe() { return vue_.graphe_; } - + protected EGGrapheModel getModel() { return vue_.graphe_.getModel(); } - + public CtuluListSelection getSelection() { return selection_.getSelection(); } - + public void majSelectionListener(final EGTableGraphePanel _tablePanel) { if ((selection_ != null) && (_tablePanel != null)) { _tablePanel.setListenerToSelection(selection_); } } - + protected void majLabelInfo(final String _s) { lbTools_.setText(_s); } - + protected void fillPopupMenu(final BuPopupMenu _menu) { } - + public void popupMenu(final int _x, final int _y) { final BuPopupMenu m = new BuPopupMenu(); m.setInvoker(this); @@ -305,7 +313,7 @@ fillSpecificMenu(m); m.show(this, _x, _y); } - + @Override public void actionPerformed(final ActionEvent _evt) { if (FuLog.isTrace()) { @@ -377,7 +385,7 @@ } } } - + @Override public void find() { } @@ -389,23 +397,23 @@ public Dimension getDefaultImageDimension() { return vue_.getDefaultImageDimension(); } - + public EGVue getView() { return vue_; } - + public EbliActionInterface[] getSpecificActions() { if (specificTools_ == null) { specificTools_ = buildActions(); } return specificTools_; } - + @Override public void clearSelection() { selection_.clearSelection(); } - + @Override public void inverseSelection() { selection_.inverseSelection(); @@ -416,15 +424,15 @@ */ @Override public BufferedImage produceImage(final Map _params) { - + return vue_.produceImage(_params); } - + @Override public BufferedImage produceImage(final int _w, final int _h, final Map _params) { return vue_.produceImage(_w, _h, _params); } - + @Override public void propertyChange(final PropertyChangeEvent _evt) { if (_evt.getSource() instanceof EGInteractiveComponent) { @@ -436,11 +444,11 @@ } } } - + @Override public void replace() { } - + @Override public void select() { selection_.selectAll(); @@ -461,65 +469,65 @@ BuMenuItem alignPointMenuItem; BuMenuItem refinePointMenuItem; BuMenuItem removePointMenuItem; - + public void fillMenuWithActions(final BuPopupMenu m) { modifiyPointsMenuItem = addModifiyPointsMenuItem(m); alignPointMenuItem = addAlignPointMenuItem(m); refinePointMenuItem = addRefinePointMenuItem(m); removePointMenuItem = addRemovePointMenuItem(m); } - + public boolean isSelectedCourbeModifiable() { final EGCourbe c = vue_.graphe_.getSelectedComponent(); return (c != null) && (c.getModel().isModifiable()) && (getSelection() != null) && (!getSelection().isEmpty()); } - + public boolean isSelectionAlignable() { return isSelectedCourbeModifiable() && (getSelection().getNbSelectedIndex() >= 2); } - + public boolean isSelectionRefinable() { return isSelectedCourbeModifiable() && (getSelection().getNbSelectedIndex() >= 2); } - + public boolean isSelectionRemovable() { return isSelectedCourbeModifiable(); } - + public BuMenuItem addModifiyPointsMenuItem(final BuPopupMenu m) { return m.addMenuItem(EbliLib.getS("Modifier les points s\xE9lectionn\xE9s"), "MODIFY_POINTS", EbliResource.EBLI .getToolIcon("node-edit"), isSelectedCourbeModifiable()); } - + public BuMenuItem addModifiyPointsMenuItem(final CtuluPopupMenu m) { return m.addMenuItem(EbliLib.getS("Modifier les points s\xE9lectionn\xE9s"), "MODIFY_POINTS", EbliResource.EBLI .getToolIcon("node-edit"), isSelectedCourbeModifiable()); } - + public BuMenuItem addAlignPointMenuItem(final CtuluPopupMenu m) { return m.addMenuItem(EbliLib.getS("Aligner les points"), "ALIGN_POINTS", EbliResource.EBLI.getToolIcon("node-corner"), isSelectionAlignable()); } - + public BuMenuItem addAlignPointMenuItem(final BuPopupMenu m) { return m.addMenuItem(EbliLib.getS("Aligner les points"), "ALIGN_POINTS", EbliResource.EBLI.getToolIcon("node-corner"), isSelectionAlignable()); } - + public BuMenuItem addRefinePointMenuItem(final CtuluPopupMenu m) { return m.addMenuItem(EbliLib.getS("Raffiner"), "ADD_POINTS", EbliResource.EBLI.getToolIcon("node-add"), isSelectionRefinable()); } - + public BuMenuItem addRefinePointMenuItem(final BuPopupMenu m) { return m.addMenuItem(EbliLib.getS("Raffiner"), "ADD_POINTS", EbliResource.EBLI.getToolIcon("node-add"), isSelectionRefinable()); } - + public BuMenuItem addRemovePointMenuItem(final CtuluPopupMenu m) { final BuMenuItem addMenuItem = m.addMenuItem(EbliLib.getS("Supprimer un point"), "REMOVE_POINTS", EbliResource.EBLI.getToolIcon("node-delete"), isSelectionRemovable()); addMenuItem.setAccelerator(EGTableGraphePanel.getDeleteKeyStroke()); return addMenuItem; } - + public BuMenuItem addRemovePointMenuItem(final BuPopupMenu m) { final BuMenuItem addMenuItem = m.addMenuItem(EbliLib.getS("Supprimer un point"), "REMOVE_POINTS", EbliResource.EBLI.getToolIcon("node-delete"), isSelectionRemovable()); addMenuItem.setAccelerator(EGTableGraphePanel.getDeleteKeyStroke()); Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -55,10 +55,9 @@ import org.fudaa.ebli.palette.BPaletteInfo; /** - * Un controleur des actions du panneau d'affichage 2D des calques. Il gere en particulier les actions de navigation, de - * selection. Il g\xE8re \xE9galement les actions exclusives. Une action est exclusive lorsqu'elle d\xE9sactive une autre action en cours. - * <p> Exemple : une action s\xE9lection d\xE9sactivera une action zoom en cours. <p> Ce controleur peut \xE9galement g\xE9rer des actions - * exclusives sp\xE9cifiques. + * Un controleur des actions du panneau d'affichage 2D des calques. Il gere en particulier les actions de navigation, de selection. Il g\xE8re \xE9galement + * les actions exclusives. Une action est exclusive lorsqu'elle d\xE9sactive une autre action en cours. <p> Exemple : une action s\xE9lection d\xE9sactivera + * une action zoom en cours. <p> Ce controleur peut \xE9galement g\xE9rer des actions exclusives sp\xE9cifiques. * * @author Fred Deniger * @version $Id$ @@ -140,7 +139,7 @@ // TODO : Le calque interactif d'accrochage pourrait n'etre actif que si le calque courant interactif est un calque // implementant ZCatchListener if (cqInteractionActif_ == null || !(cqInteractionActif_ instanceof ZCatchListener) - || !((ZCatchListener) cqInteractionActif_).isCachingEnabled()) { + || !((ZCatchListener) cqInteractionActif_).isCachingEnabled()) { return; } @@ -179,7 +178,7 @@ String[] vars = {cqName, idxGeom, idxVertex, xname, x, yname, y, zname, z}; String text = - EbliResource.EBLI.getString( + EbliResource.EBLI.getString( "Accroche : Calque={0} Geom={1} Sommet={2} {3}={4} {5}={6} {7}={8} (n:Suivant, u:D\xE9crocher)", vars); pn_.setInfoText(text); } else { @@ -243,6 +242,16 @@ this(true, _ui); } + /** + * Attention a n'utiliser que si les composants est d\xE9truit et plus utilise. + */ + public void clearListeners() { + EbliLib.cleanListener(navigationActionGroup_); + EbliLib.cleanListener(specificActionGroup_); + EbliLib.cleanListener(standardActionGroup_); + + } + private void activeActionForSelectedLayer() { // Le panneau des boutons de s\xE9lection est invisible => Pas d'action. if (selectedActionGroup_ == null) { @@ -289,9 +298,8 @@ protected EbliActionInterface createRepereAction() { final EbliActionPaletteAbstract plAction = new EbliActionPaletteAbstract(EbliLib.getS("Rep\xE8re"), - EbliResource.EBLI.getIcon("repere"), - "CHANGE_REFERENCE") { - + EbliResource.EBLI.getIcon("repere"), + "CHANGE_REFERENCE") { @Override public JComponent buildContentPane() { final BControleRepereTexte crt = new BControleRepereTexte(pn_.getVueCalque()); @@ -315,8 +323,7 @@ navigationActionGroup_ = new EbliActionInterface[7]; // RESTORE ACTION final EbliActionSimple restore = new EbliActionSimple(EbliLib.getS("Restaurer"), EbliResource.EBLI.getIcon("restore"), - "RESTORE") { - + "RESTORE") { @Override public void actionPerformed(ActionEvent _arg) { pn_.restaurer(); @@ -329,7 +336,7 @@ navigationActionGroup_[i++] = restore; // ZOOM ACTION CalqueActionInteraction action = new CalqueActionInteraction(EbliLib.getS("Zoom"), EbliResource.EBLI.getIcon("loupe"), "ZOOM", - cqZoomI_); + cqZoomI_); action.setDefaultToolTip(EbliLib.getZoomDesc()); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('z')); @@ -338,8 +345,7 @@ // VIEW NAVIGATION navigationActionGroup_[i] = new EbliActionSimple(EbliLib.getS("Derni\xE8re vue"), EbliResource.EBLI.getIcon("zoom-previous"), - "LAST_VIEW") { - + "LAST_VIEW") { @Override public void actionPerformed(final ActionEvent _arg) { pn_.getVueCalque().undoRepere(); @@ -349,7 +355,7 @@ navigationActionGroup_[i++].setDefaultToolTip(EbliLib.getS("Retourner \xE0 la derni\xE8re vue")); // action.putValue(Action.MNEMONIC_KEY, new Int); action = new CalqueActionInteraction(EbliLib.getS("D\xE9placer la vue"), EbliResource.EBLI.getIcon("main"), "MOVE_VIEW", - cqDepVueI_); + cqDepVueI_); action.putValue(Action.SHORT_DESCRIPTION, EbliLib.getS("D\xE9placer la vue")); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('m')); navigationActionGroup_[i++] = action; @@ -360,8 +366,7 @@ } // NAVIGATION final EbliActionPaletteAbstract plAction = new EbliActionPaletteAbstract(EbliLib.getS("Navigation"), - EbliResource.EBLI.getIcon("navigation"), "NAVIGATE") { - + EbliResource.EBLI.getIcon("navigation"), "NAVIGATE") { @Override public JComponent buildContentPane() { return new ZTransformationDomaine(pn_.getVueCalque()); @@ -386,19 +391,19 @@ // les eblistatebutton permettent de creer des etats et de mettre // a jour la fenetre en fonction. CalqueSelectionAction action = new CalqueSelectionAction(this, EbliResource.EBLI.getIcon("fleche"), - "RECTANGLE_SELECTION", ZCalqueSelectionInteractionAbstract.RECTANGLE); + "RECTANGLE_SELECTION", ZCalqueSelectionInteractionAbstract.RECTANGLE); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('s')); final String tltTip = "<table><tr><td><b>" + EbliLib.getS("Raccourci") + "</b></td><td><b>" - + EbliLib.getS("Action") + "</td></tr><tr><td><i>Shift</i></td><td>" - + EbliLib.getS("Ajouter \xE0 la s\xE9lection courante") + "</td></tr><tr><td><i>Ctrl</i></td><td>" - + EbliLib.getS("Enlever de la s\xE9lection courante") + "</td></tr><tr><td><i>Ctrl+Shift</i></td><td>" - + EbliLib.getS("Op\xE9ration OU Exclusif") + "</td></tr><tr><td><i>Ctrl+Alt</i> (opt.) </td><td>" - + EbliLib.getS("S\xE9lectionner entre 2 points") + "</td></tr></table>";; + + EbliLib.getS("Action") + "</td></tr><tr><td><i>Shift</i></td><td>" + + EbliLib.getS("Ajouter \xE0 la s\xE9lection courante") + "</td></tr><tr><td><i>Ctrl</i></td><td>" + + EbliLib.getS("Enlever de la s\xE9lection courante") + "</td></tr><tr><td><i>Ctrl+Shift</i></td><td>" + + EbliLib.getS("Op\xE9ration OU Exclusif") + "</td></tr><tr><td><i>Ctrl+Alt</i> (opt.) </td><td>" + + EbliLib.getS("S\xE9lectionner entre 2 points") + "</td></tr></table>";; action.setDefaultToolTip(tltTip); selectedActionGroup_[i++] = action; action = new CalqueSelectionAction(this, EbliResource.EBLI.getIcon("fleche-polygone"), "POLYGON_SELECTION", - ZCalqueSelectionInteractionAbstract.POLYGONE); + ZCalqueSelectionInteractionAbstract.POLYGONE); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('p')); action.setDefaultToolTip(tltTip); selectedActionGroup_[i++] = action; @@ -419,9 +424,8 @@ plAction.setParent(pn_); l.add(plAction); EbliActionPaletteAbstract ebliActionPaletteAbstract = new EbliActionPaletteAbstract(EbliLib.getS("L\xE9gende"), - EbliResource.EBLI.getToolIcon("legend"), - "EDIT_LEGEND", true) { - + EbliResource.EBLI.getToolIcon("legend"), + "EDIT_LEGEND", true) { @Override public JComponent buildContentPane() { return new BCalqueLegendeCustomizer(getView().getCqLegend()); @@ -432,7 +436,6 @@ l.add(new BConfigurePaletteAction(getView().getArbreCalqueModel().getTreeSelectionModel())); if (useInfo_) { infoPalette_ = new BPaletteInfoAbstractAction() { - @Override protected boolean mustBeUpdated() { return getCalqueActif() != null; @@ -666,6 +669,7 @@ /** * Seulement les actions non specifiques d'une vue 2d. + * * @return */ public List<EbliActionInterface> getNonSpecificsActions() { @@ -781,7 +785,7 @@ if ("visible".equals(_evt.getPropertyName())) { activeActionForSelectedLayer(); } else if ((_evt.getSource() == pn_.getScene().getCalqueActif()) - || ((cqInteractionActif_ != null) && (_evt.getSource() == cqInteractionActif_))) { + || ((cqInteractionActif_ != null) && (_evt.getSource() == cqInteractionActif_))) { updateModeText(); } } @@ -876,6 +880,7 @@ /** * Affecte les d\xE9finitions pour les coordonn\xE9es affich\xE9es dans la barre de statut. + * * @param _defs Les d\xE9finitions. */ public void setCoordinateDefinitions(EbliCoordinateDefinition[] _defs) { @@ -884,6 +889,7 @@ /** * Retourne les d\xE9finition des coordonn\xE9es du syst\xE8me de coordonn\xE9es. + * * @return Les d\xE9finitions */ public EbliCoordinateDefinition[] getCoordinateDefinitions() { @@ -953,8 +959,8 @@ /** * TreeSelection (mise a jour des etats des boutons de Selection en fonction du calque). Affecte le calque actif ( - * <code>getCalqueActif</code>) de cette classe, modifie les calque actifs du calque de selection ( un seul calque actif) et met - * a jour l'etat des specific tools (si option validee). + * <code>getCalqueActif</code>) de cette classe, modifie les calque actifs du calque de selection ( un seul calque actif) et met a jour l'etat des + * specific tools (si option validee). * * @param _evt */ Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquesPanel.java =================================================================== --- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -365,6 +365,14 @@ public ZEbliCalquesPanel(final BCalque _gcInit, final ZEbliCalquePanelController _controller) { this(_gcInit, _controller, true); } + + /** + * Attention a n'utiliser que si les composants est d\xE9truit et plus utilise. + */ + public void clearListeners() { + controller_.clearListeners(); + contextTools_.removeAll(); + } /** * Construction des calques par defaut. Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionAbstract.java =================================================================== --- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionAbstract.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionAbstract.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -10,6 +10,7 @@ import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.beans.PropertyChangeListener; import java.util.Collection; import javax.swing.AbstractAction; @@ -22,8 +23,8 @@ import org.fudaa.ctulu.CtuluResource; /** - * Une action avec tooltip adapt\xE9 \xE0 l'\xE9tat du bouton. Si le bouton est d\xE9sactiv\xE9, un tooltip expliquant commant - * le rendre actif est affich\xE9. + * Une action avec tooltip adapt\xE9 \xE0 l'\xE9tat du bouton. Si le bouton est d\xE9sactiv\xE9, un tooltip expliquant commant le rendre actif est affich\xE9. + * * @author deniger * @version $Id: EbliActionAbstract.java,v 1.14.6.1 2008-02-22 16:25:43 bmarchan Exp $ */ @@ -48,6 +49,16 @@ putValue(Action.SMALL_ICON, _ic); } + /** + * attention: doit etre appele pour faire le menage uniquement ! + */ + public void cleanListener() { + PropertyChangeListener[] propertyChangeListeners = getPropertyChangeListeners(); + for (PropertyChangeListener propertyChangeListener : propertyChangeListeners) { + removePropertyChangeListener(propertyChangeListener); + } + } + public String getTitle() { return (String) super.getValue(Action.NAME); } @@ -93,7 +104,8 @@ return r.toString(); } - public void actionPerformed(final ActionEvent _e) {} + public void actionPerformed(final ActionEvent _e) { + } public AbstractButton buildButton(final EbliComponentFactory _f) { return null; @@ -111,10 +123,10 @@ final StringBuffer r = new StringBuffer("<p style=\"margin:2px\">").append(getDefaultTooltip()).append("</p>"); if (_endMessage != null) { r.append("<p style=\"margin:5px;margin-top:2px;\"><u color=\"red\">").append( - CtuluResource.CTULU.getString("Message:")).append("</u>").append(_endMessage).append("</p>"); + CtuluResource.CTULU.getString("Message:")).append("</u>").append(_endMessage).append("</p>"); } r.append("<p style=\"margin:5px;margin-top:2px\"><u>").append(EbliLib.getS("Condition:")).append("</u><br>") - .append(_message).append("</p>"); + .append(_message).append("</p>"); return r.toString(); } @@ -158,7 +170,6 @@ } public void updateStateBeforeShow() { - } public final void setDefaultToolTip(final String _s) { @@ -180,10 +191,14 @@ * @return l'action trouvee ou null sinon. */ public static Action findAction(Collection<EbliActionInterface> acts, String _actionCmd) { - if ((acts == null) || (_actionCmd == null)) { return null; } + if ((acts == null) || (_actionCmd == null)) { + return null; + } for (Action action : acts) { - if (action != null && action.getValue(Action.ACTION_COMMAND_KEY).equals(_actionCmd)) return action; + if (action != null && action.getValue(Action.ACTION_COMMAND_KEY).equals(_actionCmd)) { + return action; + } } return null; } -} \ No newline at end of file +} Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionInterface.java =================================================================== --- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionInterface.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionInterface.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -11,9 +11,8 @@ import javax.swing.Action; /** - * Une interface Action au sens Ebli. Cette interface sait creer les boutons correspondants - * \xE0 l'action. - * + * Une interface Action au sens Ebli. Cette interface sait creer les boutons correspondants \xE0 l'action. + * * @author deniger * @version $Id: EbliActionInterface.java,v 1.7.8.1 2008-01-17 11:42:52 bmarchan Exp $ */ @@ -31,10 +30,14 @@ */ AbstractButton buildToolButton(EbliComponentFactory _f); - void setDefaultToolTip(String _s); /** + * attention: doit etre appele pour faire le menage uniquement ! + */ + void cleanListener(); + + /** * @param _f l'usine des JComponent * @return un bouton pour les panels normaux */ Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliLib.java =================================================================== --- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliLib.java 2012-10-09 23:18:52 UTC (rev 7732) +++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliLib.java 2012-10-10 20:25:08 UTC (rev 7733) @@ -46,25 +46,24 @@ /** * Ensemble de methodes utilitaires non classees. - * + * * @author Fred Deniger * @version $Id: EbliLib.java,v 1.37 2007-05-04 13:49:47 deniger Exp $ */ public final class EbliLib { private EbliLib() { - } public static ObjectInputStream createObjectInpuStream(final File file, XStream parser) throws IOException, - FileNotFoundException { + FileNotFoundException { return parser.createObjectInputStream(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"))); } public static ObjectOutputStream createObjectOutpuStream(final File file, XStream parser) throws IOException, - FileNotFoundException { + FileNotFoundException { return parser - .createObjectOutputStream(new OutputStreamWriter(new FileOutputStream(file), Charset.forName("UTF-8"))); + .createObjectOutputStream(new OutputStreamWriter(new FileOutputStream(file), Charset.forName("UTF-8"))); } public static boolean isAlphaChanged(final int _alpha) { @@ -72,7 +71,9 @@ } public static Color getAlphaColor(final Color _init, final int _alpha) { - if (_init == null || _alpha <= 0 || _alpha >= 255) { return _init; } + if (_init == null || _alpha <= 0 || _alpha >= 255) { + return _init; + } return new Color(_init.getRed(), _init.getGreen(), _init.getBlue(), _alpha); } @@ -80,12 +81,15 @@ * @param _initValue la valeur initiale * @param _min la valeur min autorisee * @param _max la valeur max autorisee - * @return la valeur _initValue si elle est comprise entre les bornes min,max. Sinon, min si valeur inferieur et max - * si max + * @return la valeur _initValue si elle est comprise entre les bornes min,max. Sinon, min si valeur inferieur et max si max */ private static int setIn(int _initValue, int _min, int _max) { - if (_initValue < _min) return _min; - if (_initValue > _max) return _max; + if (_initValue < _min) { + return _min; + } + if (_initValue > _max) { + return _max; + } return _initValue; } @@ -101,17 +105,17 @@ public static String getZoomDesc() { return "<table cellpadding='1'><tr><td>" + EbliLib.getS("Un clic gauche") + "</td><td>:" - + EbliLib.getS("Zoom centr\xE9 sur le point cliqu\xE9") + "</tr><tr><td>" + EbliLib.getS("Rectangle dessin\xE9") - + "</td><td>:" + EbliLib.getS("Zoom sur le rectangle dessin\xE9") + "</tr><tr><td<i>Shift</i>+" - + EbliLib.getS("un clic gauche") + "</td><td>:" + EbliLib.getS("Zoom arri\xE8re centr\xE9 sur le point cliqu\xE9") - + "</table>"; + + EbliLib.getS("Zoom centr\xE9 sur le point cliqu\xE9") + "</tr><tr><td>" + EbliLib.getS("Rectangle dessin\xE9") + + "</td><td>:" + EbliLib.getS("Zoom sur le rectangle dessin\xE9") + "</tr><tr><td<i>Shift</i>+" + + EbliLib.getS("un clic gauche") + "</td><td>:" + EbliLib.getS("Zoom arri\xE8re centr\xE9 sur le point cliqu\xE9") + + "</table>"; } /** * @param _sortedArray le tableau des indices dans l'ordre croissant * @param _nbItem le nombre d'item - * @return -1 if no contiguous selection 0 if one selection without loop of index i>0 if one selection with loop of - * index (the first non selected idx). + * @return -1 if no contiguous selection 0 if one selection without loop of index i>0 if one selection with loop of index (the first non selected + * idx). */ public static int isSelectionContiguous(final int[] _sortedArray, final int _nbItem) { final int n = _sortedArray.length; @@ -216,29 +220,37 @@ } /** - * Renvoie le bouton dont l'actionCommand est egale a <code>_actionCommand</code>. Renvoie null si un des deux - * parametres est nul. - * + * Renvoie le bouton dont l'actionCommand est egale a + * <code>_actionCommand</code>. Renvoie null si un des deux parametres est nul. + * * @return le bouton de <code>_buttons</code> tel que <code>_actionCommand.equals(_buttons.getActionCommand)</code>. */ public static AbstractButton getAbstractButton(final String _actionCommand, final AbstractButton[] _buttons) { - if ((_actionCommand == null) || (_buttons == null)) { return null; } + if ((_actionCommand == null) || (_buttons == null)) { + return null; + } final int n = _buttons.length - 1; AbstractButton b; for (int i = n; i >= 0; i--) { b = _buttons[i]; - if (b != null && _actionCommand.equals(b.getActionCommand())) { return b; } + if (b != null && _actionCommand.equals(b.getActionCommand())) { + return b; + } } return null; } public static int getAbstractButtonIndex(final String _actionCommand, final AbstractButton[] _buttons) { - if ((_actionCommand == null) || (_buttons == null)) { return -1; } + if ((_actionCommand == null) || (_buttons == null)) { + return -1; + } final int n = _buttons.length - 1; AbstractButton b; for (int i = n; i >= 0; i--) { b = _buttons[i]; - if (b != null && _actionCommand.equals(b.getActionCommand())) { return i; } + if (b != null && _actionCommand.equals(b.getActionCommand())) { + return i; + } } return -1; } @@ -282,6 +294,20 @@ return EbliResource.EBLI.getString(_s, _v0, _v1); } + public static void cleanListener(EbliActionInterface[] actions) { + if (actions != null) { + for (EbliActionInterface ebliActionInterface : actions) { + cleanListener(ebliActionInterface); + } + } + } + + public static void cleanListener(EbliActionInterface action) { + if (action != null) { + action.cleanListener(); + } + } + public static List<JComponent> updateToolButtons(final List<? extends EbliActionInterface> _dest, final BuDesktop _bu) { if (_dest != null) { final List<JComponent> res = new ArrayList<JComponent>(_dest.size()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |