From: <bma...@us...> - 2009-01-28 14:47:10
|
Revision: 4420 http://fudaa.svn.sourceforge.net/fudaa/?rev=4420&view=rev Author: bmarchan Date: 2009-01-28 14:47:05 +0000 (Wed, 28 Jan 2009) Log Message: ----------- Created tag FudaaModeleur_0_11. Added Paths: ----------- tags/FudaaModeleur_0_11/ tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Removed Paths: ------------- tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Property changes on: tags/FudaaModeleur_0_11 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java 2009-01-27 18:04:48 UTC (rev 4414) +++ tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -1,205 +0,0 @@ -/* - * @creation 19 mai 2005 - * @modification $Date: 2008-03-28 14:59:28 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis.gml; - -import gnu.trove.TIntArrayList; -import gnu.trove.TObjectIntHashMap; - -import java.io.IOException; -import java.io.OutputStream; - -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.ProgressionUpdater; -import org.fudaa.ctulu.gis.GISAttributeConstants; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.geotools.data.DataStore; -import org.geotools.data.FeatureWriter; -import org.geotools.data.Transaction; -import org.geotools.feature.AttributeType; -import org.geotools.feature.AttributeTypeFactory; -import org.geotools.feature.Feature; -import org.geotools.feature.FeatureType; -import org.geotools.feature.FeatureTypes; -import org.geotools.feature.IllegalAttributeException; -import org.geotools.feature.SchemaException; -import org.geotools.feature.type.BasicFeatureTypes; - -import org.fudaa.ctulu.gis.GISDataModel; - -import com.memoire.fu.FuLog; -import com.vividsolutions.jts.geom.Geometry; - -/** - * @author Fred Deniger - * @version $Id: GISGMLZoneExporter.java,v 1.1.6.1 2008-03-28 14:59:28 bmarchan Exp $ - */ -public class GISGMLZoneExporter implements CtuluActivity { - - boolean stop_; - - public void stop() { - stop_ = true; - } - - public GISGMLZoneExporter() { - super(); - } - - private boolean useIdAsName_; - - public AttributeType[] createAttributes(final GISDataModel _zone, final TObjectIntHashMap _attrIdx) { - final int attributeNb = _zone.getNbAttributes(); - final TIntArrayList attribute = new TIntArrayList(attributeNb); - // pour l'instant, les attributs atomiques (definis sur chaque sommets) ne sont pas - // support\xE9s. - for (int i = 0; i < attributeNb; i++) { - if (!_zone.getAttribute(i).isAtomicValue()) { - attribute.add(i); - if (FuLog.isDebug()) { - FuLog.debug("add attribute " + _zone.getAttribute(i).getID() + " classe " - + _zone.getAttribute(i).getDataClass()); - } - } - } - final int size = attribute.size(); - // on construit les attributs que vont bien - final AttributeType[] atts = new AttributeType[2 + size]; - // le premier correspond a la geometrie - atts[0] = AttributeTypeFactory.newAttributeType(BasicFeatureTypes.GEOMETRY_ATTRIBUTE_NAME, Geometry.class); - - for (int i = 0; i < size; i++) { - final int posInZone = attribute.get(i); - final GISAttributeInterface atti = _zone.getAttribute(posInZone); - // 18 pour les shapefiles ...; - atts[1 + i] = AttributeTypeFactory.newAttributeType(useIdAsName_ ? atti.getID() : atti.getName(), atti - .getDataClass(), true, 18); - _attrIdx.put(atts[i + 1], posInZone); - } - // Le dernier correspond \xE0 l'index de la g\xE9om\xE9trie dans la GISZone - GISAttributeInterface attInd=GISAttributeConstants.INDEX_GEOM; - atts[atts.length-1]=AttributeTypeFactory.newAttributeType(attInd.getID(), attInd.getDataClass()); - return atts; - } - - DataStore store_; - OutputStream out_; - - protected FeatureWriter createWriter(final FeatureType _type) throws IOException { - if (store_ != null) { - store_.createSchema(_type); - return store_.getFeatureWriter(_type.getTypeName(), Transaction.AUTO_COMMIT); - } - return new GMLFeatureWriter(_type, out_); - } - - /** - * @param _prog la barre de progression - * @param _zone la zone a exporter - * @param _dest la destination - * @throws IOException - * @throws SchemaException - * @throws IllegalAttributeException - */ - public void process(final ProgressionInterface _prog, final GISDataModel _zone, final DataStore _dest) - throws IOException, SchemaException, IllegalAttributeException { - out_ = null; - store_ = _dest; - process(_prog, _zone); - } - - /** - * Attention: l'outputstream n'est pas ferme. - * - * @param _prog - * @param _zone - * @param _dest - * @throws IOException - * @throws SchemaException - * @throws IllegalAttributeException - */ - public void processGML(final ProgressionInterface _prog, final GISZoneCollection _zone, final OutputStream _dest) - throws IOException, SchemaException, IllegalAttributeException { - out_ = _dest; - store_ = null; - process(_prog, _zone); - - } - - private void process(final ProgressionInterface _prog, final GISDataModel _zone) throws IOException, - SchemaException, IllegalAttributeException { - stop_ = false; - final TObjectIntHashMap attIdx = new TObjectIntHashMap(_zone.getNbAttributes()); - final AttributeType[] atts = createAttributes(_zone, attIdx); - if (stop_) { - return; - } - final FeatureType featureType = createFeatureType(_zone, atts); - FeatureWriter writer = null; - try { - writer = createWriter(featureType); - if (stop_) { - return; - } - final int nb = _zone.getNumGeometries(); - final ProgressionUpdater up = new ProgressionUpdater(_prog); - up.setValue(9, nb, 10, 90); - final int nbAttribute = atts.length; - for (int i = 0; i < nb; i++) { - if (stop_) { - return; - } - final Feature feature = writer.next(); - feature.setDefaultGeometry(_zone.getGeometry(i)); - for (int j = 1; j < nbAttribute-1; j++) { - feature.setAttribute(j, _zone.getValue(attIdx.get(atts[j]), i)); - } - // Enregistrement de l'index de la g\xE9om\xE9trie dans le fichier - feature.setAttribute(nbAttribute-1, new Integer(i)); - writer.write(); - - up.majAvancement(); - } - } finally { - if (writer != null) { - if (out_ == null) { - writer.close(); - } else { - ((GMLFeatureWriter) writer).writeFooter(); - } - } - } - - } - - public FeatureType createFeatureType(final GISDataModel _zone, final AttributeType[] _atts) - throws SchemaException { - /* Changement de GISZoneCollection en GISDataModel, suppression des lignes dessous - String name = _zone.getTitle(); - if (name == null) { - name = "zone"; - }*/ - final FeatureType featureType = FeatureTypes.newFeatureType(_atts, "zone"); - return featureType; - } - - /** - * A utiliser pour des donn\xE9es sensibles lorsque l'on veut que certains attributs soient retrouv\xE9 dans toutes les - * langues. - * - * @return true si on utilise l'ID de la variable pour construire l'attribut \xE0 inclure dans le fichier de sortie. - */ - protected boolean isUseIdAsName() { - return useIdAsName_; - } - - public void setUseIdAsName(final boolean _useIdAsName) { - useIdAsName_ = _useIdAsName; - } -} Copied: tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java (from rev 4418, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java) =================================================================== --- tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java (rev 0) +++ tags/FudaaModeleur_0_11/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -0,0 +1,211 @@ +/* + * @creation 19 mai 2005 + * @modification $Date: 2008-03-28 14:59:28 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis.gml; + +import gnu.trove.TIntArrayList; +import gnu.trove.TObjectIntHashMap; + +import java.io.IOException; +import java.io.OutputStream; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.ProgressionUpdater; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.geotools.data.DataStore; +import org.geotools.data.FeatureWriter; +import org.geotools.data.Transaction; +import org.geotools.feature.AttributeType; +import org.geotools.feature.AttributeTypeFactory; +import org.geotools.feature.Feature; +import org.geotools.feature.FeatureType; +import org.geotools.feature.FeatureTypes; +import org.geotools.feature.IllegalAttributeException; +import org.geotools.feature.SchemaException; +import org.geotools.feature.type.BasicFeatureTypes; + +import org.fudaa.ctulu.gis.GISDataModel; + +import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.Geometry; + +/** + * @author Fred Deniger + * @version $Id: GISGMLZoneExporter.java,v 1.1.6.1 2008-03-28 14:59:28 bmarchan Exp $ + */ +public class GISGMLZoneExporter implements CtuluActivity { + + boolean stop_; + + public void stop() { + stop_ = true; + } + + public GISGMLZoneExporter() { + super(); + } + + private boolean useIdAsName_; + + public AttributeType[] createAttributes(final GISDataModel _zone, final TObjectIntHashMap _attrIdx) { + final int attributeNb = _zone.getNbAttributes(); + final TIntArrayList attribute = new TIntArrayList(attributeNb); + // pour l'instant, les attributs atomiques (definis sur chaque sommets) ne sont pas + // support\xE9s. + for (int i = 0; i < attributeNb; i++) { + if (!_zone.getAttribute(i).isAtomicValue()) { + attribute.add(i); + if (FuLog.isDebug()) { + FuLog.debug("add attribute " + _zone.getAttribute(i).getID() + " classe " + + _zone.getAttribute(i).getDataClass()); + } + } + } + final int size = attribute.size(); + // on construit les attributs que vont bien + final AttributeType[] atts = new AttributeType[2 + size]; + // le premier correspond a la geometrie + atts[0] = AttributeTypeFactory.newAttributeType(BasicFeatureTypes.GEOMETRY_ATTRIBUTE_NAME, Geometry.class); + + for (int i = 0; i < size; i++) { + final int posInZone = attribute.get(i); + final GISAttributeInterface atti = _zone.getAttribute(posInZone); + // 18 pour les shapefiles ...; + atts[1 + i] = AttributeTypeFactory.newAttributeType(useIdAsName_ ? atti.getID() : atti.getName(), atti + .getDataClass(), true, 18); + _attrIdx.put(atts[i + 1], posInZone); + } + // Le dernier correspond \xE0 l'index de la g\xE9om\xE9trie dans la GISZone + GISAttributeInterface attInd=GISAttributeConstants.INDEX_GEOM; + atts[atts.length-1]=AttributeTypeFactory.newAttributeType(attInd.getID(), attInd.getDataClass()); + return atts; + } + + DataStore store_; + OutputStream out_; + + protected FeatureWriter createWriter(final FeatureType _type) throws IOException { + if (store_ != null) { + store_.createSchema(_type); + return store_.getFeatureWriter(_type.getTypeName(), Transaction.AUTO_COMMIT); + } + return new GMLFeatureWriter(_type, out_); + } + + /** + * @param _prog la barre de progression + * @param _zone la zone a exporter + * @param _dest la destination + * @throws IOException + * @throws SchemaException + * @throws IllegalAttributeException + */ + public void process(final ProgressionInterface _prog, final GISDataModel _zone, final DataStore _dest) + throws IOException, SchemaException, IllegalAttributeException { + out_ = null; + store_ = _dest; + process(_prog, _zone); + } + + /** + * Attention: l'outputstream n'est pas ferme. + * + * @param _prog + * @param _zone + * @param _dest + * @throws IOException + * @throws SchemaException + * @throws IllegalAttributeException + */ + public void processGML(final ProgressionInterface _prog, final GISZoneCollection _zone, final OutputStream _dest) + throws IOException, SchemaException, IllegalAttributeException { + out_ = _dest; + store_ = null; + _zone.prepareExport(); + process(_prog, _zone); + + } + + private void process(final ProgressionInterface _prog, final GISDataModel _zone) throws IOException, + SchemaException, IllegalAttributeException { + /* + * Pour que les z atomiques soient exporter correctement, il faut que + * prepareExport() est \xE9t\xE9 appel\xE9 sur la GISZoneCollection dans le + * GISDataModel. + */ + stop_ = false; + final TObjectIntHashMap attIdx = new TObjectIntHashMap(_zone.getNbAttributes()); + final AttributeType[] atts = createAttributes(_zone, attIdx); + if (stop_) { + return; + } + final FeatureType featureType = createFeatureType(_zone, atts); + FeatureWriter writer = null; + try { + writer = createWriter(featureType); + if (stop_) { + return; + } + final int nb = _zone.getNumGeometries(); + final ProgressionUpdater up = new ProgressionUpdater(_prog); + up.setValue(9, nb, 10, 90); + final int nbAttribute = atts.length; + for (int i = 0; i < nb; i++) { + if (stop_) { + return; + } + final Feature feature = writer.next(); + feature.setDefaultGeometry(_zone.getGeometry(i)); + for (int j = 1; j < nbAttribute-1; j++) { + feature.setAttribute(j, _zone.getValue(attIdx.get(atts[j]), i)); + } + // Enregistrement de l'index de la g\xE9om\xE9trie dans le fichier + feature.setAttribute(nbAttribute-1, new Integer(i)); + writer.write(); + + up.majAvancement(); + } + } finally { + if (writer != null) { + if (out_ == null) { + writer.close(); + } else { + ((GMLFeatureWriter) writer).writeFooter(); + } + } + } + + } + + public FeatureType createFeatureType(final GISDataModel _zone, final AttributeType[] _atts) + throws SchemaException { + /* Changement de GISZoneCollection en GISDataModel, suppression des lignes dessous + String name = _zone.getTitle(); + if (name == null) { + name = "zone"; + }*/ + final FeatureType featureType = FeatureTypes.newFeatureType(_atts, "zone"); + return featureType; + } + + /** + * A utiliser pour des donn\xE9es sensibles lorsque l'on veut que certains attributs soient retrouv\xE9 dans toutes les + * langues. + * + * @return true si on utilise l'ID de la variable pour construire l'attribut \xE0 inclure dans le fichier de sortie. + */ + protected boolean isUseIdAsName() { + return useIdAsName_; + } + + public void setUseIdAsName(final boolean _useIdAsName) { + useIdAsName_ = _useIdAsName; + } +} Deleted: tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java 2009-01-27 18:04:48 UTC (rev 4414) +++ tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -1,251 +0,0 @@ -/* - * @creation 4 avr. 2005 - * @modification $Date: 2008-05-13 12:10:33 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ebli.calque.edition; - -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; - -import javax.swing.SwingUtilities; - -import com.memoire.bu.BuResource; - -import org.fudaa.ebli.calque.BCalqueInteraction; -import org.fudaa.ebli.calque.ZCalqueSelectionInteractionAbstract; -import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.commun.EbliSelectionState; -import org.fudaa.ebli.geometrie.GrPoint; -import org.fudaa.ebli.geometrie.GrVecteur; -import org.fudaa.ebli.ressource.EbliResource; -import org.fudaa.ebli.trace.TraceIcon; - -/** - * @author Fred Deniger - * @version $Id: ZCalqueDeplacement.java,v 1.13.6.2 2008-05-13 12:10:33 bmarchan Exp $ - */ -public class ZCalqueDeplacement extends BCalqueInteraction implements MouseListener, MouseMotionListener { - /** - * @author fred deniger - * @version $Id: ZCalqueDeplacement.java,v 1.13.6.2 2008-05-13 12:10:33 bmarchan Exp $ - */ - public interface SpecPanel { - void updateState(); - } - - SpecPanel specPanel_; - int dx_, dy_; - - TraceIcon ic_ = new TraceIcon(TraceIcon.CARRE, 2, Color.LIGHT_GRAY); - int initX_, initY_; - - private boolean isDragged_; - - ZCalqueDeplacementTargetInterface target_; - - GrVecteur vect_; - - public final SpecPanel getSpecPanel() { - return specPanel_; - } - - public Cursor getSpecificCursor() { - return EbliResource.EBLI.getCursor("fleche-deplacement", -1, new Point(0, 0)); - } - - public String getDescription() { - return BuResource.BU.getString("D\xE9placer"); - } - - /** - * Deplacement des objets s\xE9lectionn\xE9s. - * - * @param _dx dx reel - * @param _dy dy reel - */ - public final void manualMove(final double _dx, final double _dy, final double _dz) { -// if (isGele()) { -// return; -// } - isDragged_ = false; - if (target_ != null) { - target_.moved(_dx, _dy, _dz); - repaint(); - } - } - - public final void setSpecPanel(final SpecPanel _specPanel) { - specPanel_ = _specPanel; - } - - private void updateVect() { - if (vect_ == null) { - vect_ = new GrVecteur(); - } - vect_.x_ = dx_; - vect_.y_ = dy_; - vect_.autoApplique(getVersReel()); - } - - public double getReelDx() { - updateVect(); - return vect_.x_; - - } - - public double getReelDy() { - updateVect(); - return vect_.y_; - - } - - /** - * @return true si en cours de deplacement - */ - public final boolean isDragged() { - return isDragged_; - } - - /** - * @return true si selection vide - */ - public final boolean isSelectionEmpty() { - return target_.getSupport() == null || target_.getSupport().isSelectionEmpty(); - } - - /** - * @param _select le calque de selection - */ - public ZCalqueDeplacement(final ZCalqueSelectionInteractionAbstract _select) { - super(); - selection_ = _select; - setName("cqDeplacement"); - addMouseListener(this); - addMouseMotionListener(this); - } - - public boolean alwaysPaint() { - return true; - } - - public final ZCalqueDeplacementTargetInterface getTarget() { - return target_; - } - - public void mouseClicked(final MouseEvent _e) {} - - public void mouseDragged(final MouseEvent _e) { - if (isGele()) { - isDragged_ = false; - return; - } - if (_e.isControlDown() || _e.isAltDown()) { - return; - } - dx_ = _e.getX() - initX_; - dy_ = _e.getY() - initY_; - if (!isDragged_ && (dx_ * dx_ + dy_ * dy_) > 10) { - isDragged_ = true; - } - updateSpecPanel(); - repaint(); - } - - private void updateSpecPanel() { - if (specPanel_ != null) { - specPanel_.updateState(); - } - } - - public void mouseEntered(final MouseEvent _e) { - if (isGele()) { - isDragged_ = false; - return; - } - isDragged_ = false; - repaint(); - } - - public void mouseExited(final MouseEvent _e) { - if (isGele()) { - isDragged_ = false; - return; - } - isDragged_ = false; - repaint(); - } - - public void mouseMoved(final MouseEvent _e) {} - - public void mousePressed(final MouseEvent _e) { - if (!SwingUtilities.isLeftMouseButton(_e) || EbliLib.isPopupMouseEvent(_e)) { - return; - } - if (isGele()) { - isDragged_ = false; - return; - } - initX_ = _e.getX(); - initY_ = _e.getY(); - if (state_ == null) { - state_ = new EbliSelectionState(); - } - state_.majControleDesc(_e); - final GrPoint pt = new GrPoint(initX_, initY_, 0); - pt.autoApplique(getVersReel()); - target_.getSupport().changeSelection(pt, 5, state_.getModificateur()); - updateSpecPanel(); - repaint(); - } - - EbliSelectionState state_; - - public void mouseReleased(final MouseEvent _e) { - if (!SwingUtilities.isLeftMouseButton(_e) || EbliLib.isPopupMouseEvent(_e)) { - return; - } - if (isGele()) { - isDragged_ = false; - return; - } else if (isDragged_ && target_ != null && !_e.isControlDown() && !_e.isAltDown()) { - dx_ = _e.getX() - initX_; - dy_ = _e.getY() - initY_; - target_.moved(getReelDx(), getReelDy(),0); - isDragged_ = false; - } - updateSpecPanel(); - repaint(); - } - - ZCalqueSelectionInteractionAbstract selection_; - - public void paintComponent(final Graphics _g) { - if (isGele() || target_ == null || target_.getSupport() == null) { - return; - } - if (selection_ != null && !target_.getSupport().isSelectionEmpty()) { - target_.getSupport() - .paintSelection((Graphics2D) _g, selection_.getTrace(), getVersEcran(), getClipReel(_g)); - } - if (target_ != null && isDragged_) { - target_.paintMove((Graphics2D) _g, dx_, dy_, ic_); - } - - } - - public final void setTarget(final ZCalqueDeplacementTargetInterface _target) { - if (target_ != _target) { - target_ = _target; - isDragged_ = false; - } - } -} Copied: tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java (from rev 4419, branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java) =================================================================== --- tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java (rev 0) +++ tags/FudaaModeleur_0_11/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDeplacement.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -0,0 +1,251 @@ +/* + * @creation 4 avr. 2005 + * @modification $Date: 2008-05-13 12:10:33 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ebli.calque.edition; + +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +import javax.swing.SwingUtilities; + +import com.memoire.bu.BuResource; + +import org.fudaa.ebli.calque.BCalqueInteraction; +import org.fudaa.ebli.calque.ZCalqueSelectionInteractionAbstract; +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.commun.EbliSelectionState; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.geometrie.GrVecteur; +import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.ebli.trace.TraceIcon; + +/** + * @author Fred Deniger + * @version $Id: ZCalqueDeplacement.java,v 1.13.6.2 2008-05-13 12:10:33 bmarchan Exp $ + */ +public class ZCalqueDeplacement extends BCalqueInteraction implements MouseListener, MouseMotionListener { + /** + * @author fred deniger + * @version $Id: ZCalqueDeplacement.java,v 1.13.6.2 2008-05-13 12:10:33 bmarchan Exp $ + */ + public interface SpecPanel { + void updateState(); + } + + SpecPanel specPanel_; + int dx_, dy_; + + TraceIcon ic_ = new TraceIcon(TraceIcon.CARRE, 2, Color.LIGHT_GRAY); + int initX_, initY_; + + private boolean isDragged_; + + ZCalqueDeplacementTargetInterface target_; + + GrVecteur vect_; + + public final SpecPanel getSpecPanel() { + return specPanel_; + } + + public Cursor getSpecificCursor() { + return EbliResource.EBLI.getCursor("fleche-deplacement", -1, new Point(0, 0)); + } + + public String getDescription() { + return BuResource.BU.getString("D\xE9placer"); + } + + /** + * Deplacement des objets s\xE9lectionn\xE9s. + * + * @param _dx dx reel + * @param _dy dy reel + */ + public final void manualMove(final double _dx, final double _dy, final double _dz) { +// if (isGele()) { +// return; +// } + isDragged_ = false; + if (target_ != null) { + target_.moved(_dx, _dy, _dz); + repaint(); + } + } + + public final void setSpecPanel(final SpecPanel _specPanel) { + specPanel_ = _specPanel; + } + + private void updateVect() { + if (vect_ == null) { + vect_ = new GrVecteur(); + } + vect_.x_ = dx_; + vect_.y_ = dy_; + vect_.autoApplique(getVersReel()); + } + + public double getReelDx() { + updateVect(); + return vect_.x_; + + } + + public double getReelDy() { + updateVect(); + return vect_.y_; + + } + + /** + * @return true si en cours de deplacement + */ + public final boolean isDragged() { + return isDragged_; + } + + /** + * @return true si selection vide + */ + public final boolean isSelectionEmpty() { + return target_.getSupport() == null || target_.getSupport().isSelectionEmpty(); + } + + /** + * @param _select le calque de selection + */ + public ZCalqueDeplacement(final ZCalqueSelectionInteractionAbstract _select) { + super(); + selection_ = _select; + setName("cqDeplacement"); + addMouseListener(this); + addMouseMotionListener(this); + } + + public boolean alwaysPaint() { + return true; + } + + public final ZCalqueDeplacementTargetInterface getTarget() { + return target_; + } + + public void mouseClicked(final MouseEvent _e) {} + + public void mouseDragged(final MouseEvent _e) { + if (isGele()) { + isDragged_ = false; + return; + } + if (_e.isControlDown() || _e.isAltDown()) { + return; + } + dx_ = _e.getX() - initX_; + dy_ = _e.getY() - initY_; + if (!isDragged_ && (dx_ * dx_ + dy_ * dy_) > 10) { + isDragged_ = true; + } + updateSpecPanel(); + repaint(); + } + + private void updateSpecPanel() { + if (specPanel_ != null) { + specPanel_.updateState(); + } + } + + public void mouseEntered(final MouseEvent _e) { + if (isGele()) { + isDragged_ = false; + return; + } + isDragged_ = false; + repaint(); + } + + public void mouseExited(final MouseEvent _e) { + if (isGele()) { + isDragged_ = false; + return; + } + isDragged_ = false; + repaint(); + } + + public void mouseMoved(final MouseEvent _e) {} + + public void mousePressed(final MouseEvent _e) { + if (!SwingUtilities.isLeftMouseButton(_e) || EbliLib.isPopupMouseEvent(_e)) { + return; + } + if (isGele()) { + isDragged_ = false; + return; + } + initX_ = _e.getX(); + initY_ = _e.getY(); + if (state_ == null) { + state_ = new EbliSelectionState(); + } + state_.majControleDesc(_e); + final GrPoint pt = new GrPoint(initX_, initY_, 0); + pt.autoApplique(getVersReel()); + target_.getSupport().changeSelection(pt, 5, state_.getModificateur()); + updateSpecPanel(); + repaint(); + } + + EbliSelectionState state_; + + public void mouseReleased(final MouseEvent _e) { + if (!SwingUtilities.isLeftMouseButton(_e) || EbliLib.isPopupMouseEvent(_e)) { + return; + } + if (isGele()) { + isDragged_ = false; + return; + } else if (isDragged_ && target_ != null && !_e.isControlDown() && !_e.isAltDown()) { + dx_ = _e.getX() - initX_; + dy_ = _e.getY() - initY_; + target_.moved(getReelDx(), getReelDy(),0); + isDragged_ = false; + } + updateSpecPanel(); + repaint(); + } + + ZCalqueSelectionInteractionAbstract selection_; + + public void paintComponent(final Graphics _g) { + if (isGele() || target_ == null || target_.getSupport() == null) { + return; + } + if (selection_ != null && !target_.getSupport().isSelectionEmpty()) { + target_.getSupport() + .paintSelection((Graphics2D) _g, selection_.getTrace(), getVersEcran(), getClipReel(_g)); + } + if (target_ != null && isDragged_) { + target_.paintMove((Graphics2D) _g, dx_, dy_, ic_); + } + + } + + public final void setTarget(final ZCalqueDeplacementTargetInterface _target) { + if (target_ != _target) { + target_ = _target; + isDragged_ = false; + } + } +} Deleted: tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2009-01-27 18:04:48 UTC (rev 4414) +++ tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -1,809 +0,0 @@ -/* - * @creation 7 juin 07 - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.fudaa.modeleur; - -import java.awt.Dimension; -import java.awt.Point; -import java.awt.event.ActionEvent; -import java.beans.PropertyVetoException; -import java.io.File; -import java.io.IOException; -import java.util.List; - -import javax.swing.JComponent; -import javax.swing.JInternalFrame; -import javax.swing.JOptionPane; -import javax.swing.filechooser.FileFilter; - -import org.fudaa.ctulu.CtuluArkLoader; -import org.fudaa.ctulu.CtuluExportDataInterface; -import org.fudaa.ctulu.CtuluLibFile; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.CtuluRunnable; -import org.fudaa.ctulu.CtuluTaskDelegate; -import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gui.CtuluDialogPanel; -import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; -import org.fudaa.ctulu.gui.CtuluLibDialog; -import org.fudaa.ebli.impression.EbliMiseEnPagePreferencesPanel; -import org.fudaa.ebli.ressource.EbliResource; -import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.commun.FudaaProjectStateListener; -import org.fudaa.fudaa.commun.FudaaProjetStateInterface; -import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; -import org.fudaa.fudaa.commun.impl.FudaaGuiLib; -import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel; -import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; -import org.fudaa.fudaa.commun.save.FudaaSaveLib; -import org.fudaa.fudaa.commun.save.FudaaSaveProject; -import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; -import org.fudaa.fudaa.modeleur.action.MdlShow1DFrameAction; -import org.fudaa.fudaa.modeleur.action.MdlShow2DFrameAction; -import org.fudaa.fudaa.modeleur.modeleur1d.MdlFille1d; -import org.fudaa.fudaa.ressource.FudaaResource; -import org.fudaa.fudaa.sig.FSigProjectPersistence; -import org.fudaa.fudaa.sig.FSigResource; -import org.fudaa.fudaa.tr.common.TrResource; - -import com.memoire.bu.BuAbstractPreferencesPanel; -import com.memoire.bu.BuBrowserPreferencesPanel; -import com.memoire.bu.BuColumn; -import com.memoire.bu.BuDesktopPreferencesPanel; -import com.memoire.bu.BuInformationsSoftware; -import com.memoire.bu.BuLanguagePreferencesPanel; -import com.memoire.bu.BuLib; -import com.memoire.bu.BuMainPanel; -import com.memoire.bu.BuMenu; -import com.memoire.bu.BuMenuBar; -import com.memoire.bu.BuMenuItem; -import com.memoire.bu.BuMenuRecentFiles; -import com.memoire.bu.BuPreferences; -import com.memoire.bu.BuRegistry; -import com.memoire.bu.BuResource; -import com.memoire.bu.BuScrollPane; -import com.memoire.bu.BuTaskView; -import com.memoire.bu.BuUserPreferencesPanel; -import com.memoire.fu.FuLog; - -/** - * La classe principale de mise en place de l'application, de gestion des - * actions, des \xE9tats de l'interface, etc. - * - * @author Bertrand Marchand - * @version $Id$ - */ -public class MdlImplementation extends FudaaCommonImplementation implements FudaaProjectStateListener { - - protected static BuInformationsSoftware isMdl_ = new BuInformationsSoftware(); - static { - isMdl_.name = "Modeleur"; - isMdl_.version = "0.10"; - isMdl_.date = "2009-01-12"; - isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2009"; - isMdl_.license = "GPL2"; - isMdl_.languages = "fr,en"; - isMdl_.authors=new String[]{"F.Deniger, B.Marchand"}; - isMdl_.contact="nic...@eq..."; - isMdl_.http="http://www.fudaa.fr/mdl/"; - - isMdl_.logo = EbliResource.EBLI.getIcon("draw-palette"); - isMdl_.banner = BuResource.BU.getIcon("aproposde_32"); - } - - public static File getDestFile(File _init) { - return CtuluLibFile.appendExtensionIfNeeded(_init, getExtension()); - } - - public static String getExtension() { - return "mod.zip"; - } - - public static class MdlFileFilter extends FileFilter { - final String extension_ = '.' + getExtension(); - - public boolean accept(File _f) { - return _f != null && (_f.isDirectory() || _f.getName().endsWith(extension_)); - } - - public String getDescription() { - return FSigResource.FSIG.getString("Fudaa Modeleur (*.mod.zip)"); - } - - } - - public static BuInformationsSoftware informationsSoftware() { - return isMdl_; - } - - public final static FileFilter FILTER = new MdlFileFilter(); - - /** Fenetre interne pour le modeleur 2D. */ - MdlFille2d mdl2dFrame_; - /** Fenetre interne pour le modeleur 1D */ - MdlFille1d mdl1dFrame_=null; - /** Projet modeleur. */ - MdlProjet project_; - - public MdlImplementation() { - super(); - useNewHelp_ = false; - } - - /** - * Retourne le fichier s\xE9lectionn\xE9 par boite de dialogue. - * @param _saveDialog true : Save dialog, test si fichier existant avant ecriture. - * @return LE fichier, ou null si op\xE9ration abort\xE9e. - */ - private File chooseNewFile(boolean _saveDialog) { - return getDestFile(chooseFile(_saveDialog)); - } - - private File chooseFile(boolean _saveDialog) { - return FudaaGuiLib.ouvrirFileChooser(FSigResource.FSIG.getString("Fichier modeleur"), FILTER, this.getFrame(), - _saveDialog, _saveDialog ? new CtuluFileChooserTestWritable(this) : null); - } - - protected void setFileIfNeeded() { - if (project_.getParamsFile() == null) { - project_.setParamFile(chooseNewFile(true)); - } - } - - public void projectStateChanged(FudaaProjetStateInterface _proj) { - updateActionsState(); - } - - /** - * Mise \xE0 jour de l'\xE9tat des boutons. - */ - void updateActionsState() { - boolean bprjOpen=project_!=null; - boolean bprjModPar=bprjOpen && project_.getProjectState().isParamsModified(); - boolean buiMod=bprjOpen && project_.getProjectState().isUIModified(); - - setEnabledForAction("ENREGISTRER", bprjModPar | buiMod); - setEnabledForAction("ENREGISTRERSOUS", bprjOpen); - setEnabledForAction("FERMER", bprjOpen); - setEnabledForAction("IMPORT_PROJECT", bprjOpen); - setEnabledForAction(CtuluExportDataInterface.EXPORT_CMD, bprjOpen); - } - - /** - * Creation de la vue 2D, et ajout. - */ - void createNew2dFrame() { - mdl2dFrame_ = new MdlFille2d(this); - addInternalFrame(mdl2dFrame_); - } - - /** - * Creation de la vue 1D. Ajout a la demande. - */ - void createNew1dFrame() { - if (mdl1dFrame_==null) { - mdl1dFrame_=new MdlFille1d(this); - } - } - - /** - * @return La vue 1D, ou null si inexistante. - */ - public MdlFille1d get1dFrame() { - return mdl1dFrame_; - } - - /** - * @return La vue 2D, ou null si inexistante. - */ - public MdlFille2d get2dFrame() { - return mdl2dFrame_; - } - - /** - * Installe la vue 1d sur le desktop, et la rend active. - */ - public void install1dFrame() { - boolean alreadyInstalled=false; - for (JInternalFrame f: getAllInternalFrames()) { - if (f.equals(mdl1dFrame_)) { - alreadyInstalled=true; - break; - } - } - if (!alreadyInstalled) - addInternalFrame(mdl1dFrame_); - else - activateInternalFrame(mdl1dFrame_); - } - - protected boolean buildExportDataToolIcon() { - return true; - } - - protected boolean buildFudaaReportTool() { - return true; - } - - protected boolean buildImageToolIcon() { - return true; - } - - /** - * Ferme le projet, ferme les fenetres associ\xE9s, sans demande d'enregistrement en cas - * de modif (ce controle a \xE9t\xE9 effectu\xE9 en amont). - */ - protected void closeProject() { - if (project_==null) return; - project_.close(); - try { - mdl2dFrame_.setClosed(true); - mdl1dFrame_.setClosed(true); - } catch (PropertyVetoException _evt) { - FuLog.error(_evt); - - } - removeInternalFrames(getAllInternalFrames()); - getMainMenuBar().getMenu("mnPROJECT").setVisible(false); - project_ = null; - } - - /** - * Cr\xE9e un nouveau projet, la fenetre 2D si necessaire. - * @param _add true : Recr\xE9e la fenetre. - */ - protected void createProject(final boolean _add) { - project_ = new MdlProjet(); - project_.setOpening(true); - if (_add) createNew2dFrame(); - else ((MdlVisuPanel)mdl2dFrame_.getVisuPanel()).initCalques(false); - createNew1dFrame(); - project_.install(this); - BuLib.invokeLater(new Runnable() { - - public void run() { - project_.setOpening(false); -// changeSaveActions(false); - updateActionsState(); - project_.setSaved(); - getMainMenuBar().getMenu("mnPROJECT").setVisible(true); - } - }); - } - - protected boolean useScrollInBuDesktop() { - return true; - } - - public void actionPerformed(ActionEvent _evt) { - final String action = _evt.getActionCommand(); - if (action == null) { - return; - } - if ("OUVRIR".equals(action)) { - ouvrir(null); - } else if ("ENREGISTRER".equals(action)) { - save(); - } else if ("ENREGISTRERSOUS".equals(action)) { - saveAs(); - } else if ("FERMER".equals(action)) { - close(); - } else if ("CREER".equals(action)) { - create(); - } else if ("IMPORT_PROJECT".equals(action)) { - importProject(); - } else if ("AIDE_INDEX".equals(action)) { - displayHelp(getAideIndexUrl()); - } else if (action.startsWith("TOGGLE")) { - final BuColumn c = getMainPanel().getRightColumn(); - final JComponent comp = c.getToggleComponent(action); - if (comp != null) { - comp.setVisible(!comp.isVisible()); - c.revalidate(); - } - } else if (action.startsWith("REOUVRIR")) { - FuLog.trace(action.substring(9,action.length()-1)); - ouvrir(new File(action.substring(9,action.length()-1))); - } else - super.actionPerformed(_evt); - } - - /** - * Met a jour les fichiers recents chaque fois que necessaire. - */ - private void updateRecentFiles(File _fichier) { - getMainMenuBar().addRecentFile(_fichier.getPath(),null); - MdlPreferences.MDL.writeIniFile(); - } - - /** - * Surcharge de la m\xE9thode pour pouvoir sauvegarder les pr\xE9f\xE9rences. - */ - public void exit() { - confirmExit(); - } - - /** - * Confirmation de la sortie avec ou sans sauvegarde. - */ - public boolean confirmExit() { - if (!FudaaStartupExitPreferencesPanel.isExitConfirmed() || - question(BuResource.BU.getString("Quitter"), BuResource.BU - .getString("Voulez-vous vraiment quitter ce logiciel ?"))) { - return saveAndCloseProjet(new Runnable() { - // Lanc\xE9 apr\xE8s la sauvegarde, si op\xE9ration de sauvegarde concluante ou si pas de sauvegarde demand\xE9e. - public void run() { - savePreferencesAndTerminate(); - } - }); - } - return true; - } - - /** - * Action "Creer" un nouveau projet. - */ - public void create() { - saveAndCloseProjet(new Runnable() { - public void run() { - createProject(true); - } - }); - } - - /** - * Action "Fermer" le projet en cours. - */ - public void close() { - saveAndCloseProjet(null); - updateActionsState(); - } - - protected String getAideIndexUrl() { - return getHelpDir() + "modeleur/index.html"; - } - - public BuPreferences getApplicationPreferences() { - return null; - } - - public BuInformationsSoftware getInformationsSoftware() { - return informationsSoftware(); - } - - /** - * Action "Ouvrir" un nouveau projet. Peut demander la sauvegarde du projet pr\xE9c\xE9demment ouvert si - * existant. - * @param _f Le fichier projet \xE0 ouvrir. null, si le fichier doit etre choisi par l'utilisateur. - */ - public void ouvrir(final File _f) { - if (isProjectModified()) { - saveAndCloseProjet(new Runnable() { - - public void run() { - ouvrir(_f); - } - }); - return; - } - - closeProject(); - - final File f = CtuluLibFile.exists(_f) ? _f : chooseFile(false); - if (f==null) return; // Abandon utilisateur. - - createProject(false); - setGlassPaneStop(); - new CtuluRunnable(BuResource.BU.getString("Ouvrir"), MdlImplementation.this) { - - public boolean run(ProgressionInterface _proj) { - project_.setOpening(true); - Runnable r = null; - try { - try { - FudaaSaveZipLoader loader=new FudaaSaveZipLoader(f); - // Recup des infos pour utilisateur. - BuInformationsSoftware is=FudaaSaveProject.getSoftwareInfos(loader); - FuLog.warning("File version : "+(is.version==null ? "Undefined":is.version)); - - r= FudaaSaveLib.restoreFille(MdlImplementation.this, mdl2dFrame_, _proj,loader); - } catch (final IOException _evt) { - FuLog.error(_evt); - - } - - project_.setParamFile(f); - - } finally { - - final Runnable swingRun = r; - BuLib.invokeLater(new Runnable() { - - public void run() { - try { - addInternalFrame(mdl2dFrame_); - - if (swingRun != null) swingRun.run(); - - // Met a jour la fenetre 1d - FudaaSaveZipLoader loader=null; - try { - loader=new FudaaSaveZipLoader(f); - mdl1dFrame_.restoreFrom(loader, null); - } - catch (IOException _exc) {} - finally { - if (loader!=null) { - try { loader.close(); } catch (IOException _exc) {} - } - } - - // le projet a ete install\xE9: on enl\xE8ve les flag de modification - project_.setOpening(false); - project_.setSaved(); - if (swingRun == null) { - MdlImplementation.this.warn(BuResource.BU.getString("Ouvrir"), FSigResource.FSIG - .getString("Le projet n'a pas \xE9t\xE9 ouvert!")); - } - else { - updateRecentFiles(project_.getParamsFile()); - } - } finally { - unsetGlassPaneStop(); - - } - } - - }); - - } - return r != null; - } - }.run(); - } - - /** - * Action "Enregistrer" le projet. - */ - public void save() { - if (project_.getParamsFile() != null) { - CtuluRunnable act = new CtuluRunnable(FudaaSaveLib.getActionSaveTitle(), this) { - - public boolean run(ProgressionInterface _proj) { - if (FSigProjectPersistence.saveProject(MdlImplementation.this, project_, project_.getParamsFile(), _proj)) { - updateRecentFiles(project_.getParamsFile()); - return true; - } - return false; - } - }; - act.setAfterRunnable(getSaveSwingRunnable(project_.getParamsFile()), true); - act.run(); - } else - saveAs(); - } - - /** - * Action "Enregistrer sous" le projet. - */ - public void saveAs() { - final File f = chooseNewFile(true); - if (f == null) return; - - CtuluRunnable act = new CtuluRunnable(FudaaSaveLib.getActionSaveTitle(), this) { - - public boolean run(ProgressionInterface _proj) { - if (FSigProjectPersistence.saveProject(MdlImplementation.this, project_, f, _proj)) { - updateRecentFiles(f); - return true; - } - return false; - } - }; - act.setAfterRunnable(getSaveSwingRunnable(f), true); - act.run(); - } - - protected boolean isProjectModified() { - return project_ != null - && (project_.getProjectState().isParamsModified() || project_.getProjectState().isUIModified()); - } - - public void importProject() { - MdlProjectImportPanel pn=new MdlProjectImportPanel(); - if (CtuluDialogPanel.isOkResponse(pn.afficheModale(getFrame(), "Import d'un projet"))) { - File f=pn.getFile(); - try { - FudaaSaveZipLoader loader = new FudaaSaveZipLoader(f); - String[] ignoredLayers=pn.getIgnoredLayers(); - for (String s : ignoredLayers) { - loader.setOption(CtuluArkLoader.OPTION_LAYER_IGNORE+s,CtuluLibString.toString(true)); - } - - final CtuluTaskDelegate createTask = createTask("Import d'un projet"); -// FIXME BM: Suppression de la tache dans un thread diff\xE9rent, car l'appli se bloque -// Probable pb de deadlock. -// createTask.start(new Runnable() { -// public void run() { - FudaaSaveLib.restoreAndLaunch(MdlImplementation.this, mdl2dFrame_, createTask.getStateReceiver(), loader); -// } -// }); - - // Liberation du fichier. - loader.close(); - } catch (final IOException _evt) { - FuLog.error(_evt); - - } - } - } - - /** - * Dans le thread swing.... - * - * @param _relaunch l'exe a lancer apr\xE8s: si l'utilisateur a accept\xE9 la fermeture du projet - */ - public boolean saveAndCloseProjet(final Runnable _relaunch) { - final Runnable r = new Runnable() { - - public void run() { - closeProject(); - if (_relaunch != null) _relaunch.run(); - } - }; - boolean save = false; - if (isProjectModified()) { - final int i = CtuluLibDialog.confirmExitIfProjectisModified(getFrame()); - // l'utilisateur veut annuler l'op\xE9ration - if (i == JOptionPane.CANCEL_OPTION) { - FuLog.debug("FSI: close operation cancelled by user"); - return false; - } - save = (i == JOptionPane.OK_OPTION); - } - - FuLog.debug("FSI: close operation accepted and save option= " + save); - // pas de sauvegarde: on lance l'op\xE9ration suivante: - if (!save) { - r.run(); - } else { - // on initilialise le fichier de dest si n\xE9cessaire - setFileIfNeeded(); - if (project_.getParamsFile()==null) return false; - CtuluRunnable act = new CtuluRunnable(FudaaSaveLib.getActionSaveTitle(), this) { - - public boolean run(ProgressionInterface _prog) { - // le fichier peut etre null si l'utilisateur a refuse de pr\xE9ciser un fichier - // dans ce cas, on ne sauvegarde pas. - if (project_.getParamsFile() != null) { - setGlassPaneStop(); - FSigProjectPersistence.saveProject(MdlImplementation.this, project_, - project_.getParamsFile(), _prog); - updateRecentFiles(project_.getParamsFile()); - - unsetGlassPaneStop(); - return true; - } - else return false; - } - }; - // le r sera lance apres et dans le thread swing - act.setAfterRunnable(r, true); - act.run(); - return false; - } - return true; - } - - protected Runnable getSaveSwingRunnable(final File _paramFile) { - return new Runnable() { - - public void run() { - if (_paramFile != null) project_.setParamFile(_paramFile); - project_.setSaved(); - - } - }; - } - - /** - * Construit le menu projet. - * @return Le menu projet. - */ - protected BuMenu buildProjectMenu() { - BuMenu mn=new BuMenu(FudaaResource.FUDAA.getString("Projet"),"mnPROJECT"); - mn.add(new MdlShow2DFrameAction(this)); - mn.add(new MdlShow1DFrameAction(this)); - - mn.setVisible(false); - return mn; - } - - /** - * Methode surcharg\xE9e pour les panneau de pr\xE9f\xE9rence. - */ - protected void buildPreferences(final List<BuAbstractPreferencesPanel> _frAddTab) { - _frAddTab.add(new BuUserPreferencesPanel(this)); - _frAddTab.add(new BuLanguagePreferencesPanel(this)); - _frAddTab.add(new BuDesktopPreferencesPanel(this)); - _frAddTab.add(new FudaaStartupExitPreferencesPanel(true)); - _frAddTab.add(new FudaaLookPreferencesPanel(this)); - _frAddTab.add(new BuBrowserPreferencesPanel(this)); - _frAddTab.add(new EbliMiseEnPagePreferencesPanel()); - } - - /** - * Cr\xE9ation du panneau des taches, dans la colonne de droite. - */ - protected void buildTaskView() { - final BuMainPanel mp = getMainPanel(); - final BuColumn lc = mp.getLeftColumn(); - lc.setFocusable(false); - final BuColumn rc = mp.getRightColumn(); - rc.setFocusable(false); - lc.setBorder(null); - // rc.setBorder(new EmptyBorder(0,2,0,2)); - BuTaskView taches = new BuTaskView(); - taches.setToolTipText(TrResource.getS("Les t\xE2ches en cours")); - final BuScrollPane sp = new BuScrollPane(taches); - sp.setPreferredSize(new Dimension(150, 80)); - sp.setToolTipText(TrResource.getS("Les t\xE2ches en cours")); - rc.addToggledComponent(BuResource.BU.getString("T\xE2ches"), "TOGGLE_TACHE", BuResource.BU.getToolIcon("tache"), sp, - true, this).setToolTipText(TrResource.getS("Cacher/Afficher les t\xE2ches")); - mp.setTaskView(taches); - } - - /** - * Sauvegarde des pr\xE9f\xE9rences de l'appli \xE0 la sortie. - * - * Remarque importante : Certaines infos sauv\xE9es par cette m\xE9thode sont relues - * par d'autres applications Fudaa, qui risquent alors de s'afficher de facon - * inattendue. - */ - protected void savePreferencesAndTerminate() { - final Point p = getFrame().getLocation(); - final Dimension d = getFrame().getSize(); - BuPreferences.BU.putIntegerProperty("window.x", p.x); - BuPreferences.BU.putIntegerProperty("window.y", p.y); - BuPreferences.BU.putIntegerProperty("window.w", d.width); - BuPreferences.BU.putIntegerProperty("window.h", d.height); - BuPreferences.BU.writeIniFile(); - - BuRegistry.unregister(this.getFrame()); - } - - /** - * Mise en place de l'application ava,nt affichage. - */ - public void init() { - super.init(); - // Pour forcer l'activation du command listener. - getUndoCmdListener(); - - removeUnusedActions(); - final BuMenuBar mb = getMainMenuBar(); - // on enleve le menu des look and feel : moche car tout n'est pas mis a jour -/* Issu de Fudaa-Prepro - final BuMenu mAide = (BuMenu) b.getMenu("MENU_AIDE"); - - mAide.add(TrLib.buildAideContextItem(this), 0); - TrLib.addJavawsForJnlp(mAide); - TrLib.addJava3DJMFTest(mAide);*/ - - setEnabledForAction("QUITTER", true); - setEnabledForAction("PREFERENCE", true); - setEnabledForAction("CREER", true); - setEnabledForAction("OUVRIR", true); - setEnabledForAction("IMPORTER", true); - setEnabledForAction("EXPORTER", true); - - BuMenuRecentFiles mr= (BuMenuRecentFiles)mb.getMenu("REOUVRIR"); - if (mr != null) { - mr.setPreferences(MdlPreferences.MDL); - mr.setResource(MdlResource.MDL); - mr.setEnabled(true); - } - -/* setEnabledForAction("MAJ", true); - setEnabledForAction("SEND_COMMENT", true); - setEnabledForAction("LAUNCH_JAVAWS", true); - final BuMenu mFichier = (BuMenu) b.getMenu("MENU_FICHIER"); - mFichier.addMenuItem(TrResource.getS("Fermer toutes les applications"), "CLOSE_ALL", BuResource.BU - .getIcon("fermer"), true, 0); - final BuToolBar tb = getMainToolBar(); - if (!isSupervisor()) { - - tb.addToolButton(TrResource.getSupervisorName(), TrResource.getS("ouvrir le superviseur"), "SUPERVISEUR", - TrResource.getSupervisorIcon(), true).setVisible(true); - - }*/ - // les menus exporter et importer sont construit dynamiquement -// b.getMenu(getExporterCmd()).addItemListener(this); - BuMenu mmImport = (BuMenu) mb.getMenu("IMPORTER"); - BuMenu mnExport = (BuMenu) mb.getMenu("EXPORTER"); - -// menu.addMenuItem(FSigImageImportAction.getCommonTitle(), "IMPORT_IMAGE", FSigImageImportAction.getCommonImage(), -// this).setEnabled(false); - mmImport.addMenuItem(FudaaLib.getS("Importer un projet"), "IMPORT_PROJECT", BuResource.BU.getMenuIcon("importer"), this) - .setEnabled(false); -// menu.addItemListener(this); - setEnabledForAction("IMPORT_PROJECT", true); - mmImport.setEnabled(true); - - BuMenuItem itExportData = new BuMenuItem(); - super.initExportDataButton(itExportData); - mnExport.add(itExportData); - - BuMenu mnProject=buildProjectMenu(); - mb.addMenu(mnProject); - -/* setEnabledForAction("RANGERICONES", true); - if (!isSupervisor()) { - final JComponent cp = getMainPanel().getMiddleComponent(); - if (cp instanceof JScrollPane) { - ScrollPaneSelector.installScrollPaneSelector((JScrollPane) cp); - } - }*/ - buildTaskView(); - } - - /** - * Suppression des commandes par d\xE9faut dans Fudaa. - */ - protected void removeUnusedActions() { -/* Issu de Fudaa-Prepro - final BuMenu r = (BuMenu) getMainMenuBar().getMenu("MENU_EDITION"); - if (r != null) { - r.removeAll(); - r.addMenuItem(BuResource.BU.getString("D\xE9faire"), "DEFAIRE", false, KeyEvent.VK_Z); - r.addMenuItem(BuResource.BU.getString("Refaire"), "REFAIRE", false).setAccelerator( - KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK)); - // normalement Ctrl-Y - // r.addSeparator(); - // - r.addMenuItem(BuResource.BU.getString("Copier"), "COPIER", false, KeyEvent.VK_C); - r.addMenuItem(BuResource.BU.getString("Couper"), "COUPER", false, KeyEvent.VK_X); - r.addMenuItem(BuResource.BU.getString("Coller"), "COLLER", false, KeyEvent.VK_V); - // r.addMenuItem(BuResource.BU.getString("Dupliquer" ),"DUPLIQUER" ,false) - // .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,KeyEvent.CTRL_MASK|KeyEvent.SHIFT_MASK)); - r.addSeparator(); - FSigLib.addSelectionAction(r, null); - // r.addMenuItem(BuResource.BU.getString("Remplacer..." ),"REMPLACER" - // ,false,KeyEvent.VK_R); - r.addSeparator(); - r.addMenuItem(BuResource.BU.getString("Pr\xE9f\xE9rences"), "PREFERENCE", false, KeyEvent.VK_F2); - addConsoleMenu(r); - final BuToolBar tb = getMainToolBar(); - BuActionRemover.removeAction(tb, "COUPER"); - BuActionRemover.removeAction(tb, "COLLER"); - BuActionRemover.removeAction(tb, "COPIER"); - BuActionRemover.removeAction(tb, "DUPLIQUER"); - BuActionRemover.removeAction(tb, "RANGERICONES"); - // BuActionRemover.removeAction(tb, "TOUTSELECTIONNER"); - BuActionRemover.removeAction(tb, "REMPLACER"); - - }*/ - /* - * removeAction("COUPER"); removeAction("COLLER"); removeAction("COPIER"); removeAction("DUPLIQUER"); - * removeAction("TOUTSELECTIONNER"); removeAction("REMPLACER"); - */ - removeAction("ASSISTANT"); -// removeAction("ASTUCE"); - removeAction("POINTEURAIDE"); - removeAction("INDEX_THEMA"); - removeAction("INDEX_ALPHA"); - removeAction("PROPRIETE"); - removeAction("PLEINECRAN"); - removeAction("VISIBLE_LEFTCOLUMN"); - } - - public void start() { - super.start(); - super.addFrameListLeft(); - createProject(true); - } - -} Copied: tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (from rev 4419, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java) =================================================================== --- tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (rev 0) +++ tags/FudaaModeleur_0_11/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2009-01-28 14:47:05 UTC (rev 4420) @@ -0,0 +1,809 @@ +/* + * @creation 7 juin 07 + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.modeleur; + +import java.awt.Dimension; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.beans.PropertyVetoException; +import java.io.File; +import java.io.IOException; +import java.util.List; + +import javax.swing.JComponent; +import javax.swing.JInternalFrame; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileFilter; + +import org.fudaa.ctulu.CtuluArkLoader; +import org.fudaa.ctulu.CtuluExportDataInterface; +import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluRunnable; +import org.fudaa.ctulu.CtuluTaskDelegate; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; +import org.fudaa.ctulu.gui.CtuluLibDialog; +import org.fudaa.ebli.impression.EbliMiseEnPagePreferencesPanel; +import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.commun.FudaaProjectStateListener; +import org.fudaa.fudaa.commun.FudaaProjetStateInterface; +import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; +import org.fudaa.fudaa.commun.impl.FudaaGuiLib; +import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel; +import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; +import org.fudaa.fudaa.commun.save.FudaaSaveLib; +import org.fudaa.fudaa.commun.save.FudaaSaveProject; +import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; +import org.fudaa.fudaa.modeleur.action.MdlShow1DFrameAction; +import org.fudaa.fudaa.modeleur.action.MdlShow2DFrameAction; +import org.fudaa.fudaa.modeleur.modeleur1d.MdlFille1d; +import org.fudaa.fudaa.ressource.FudaaResource; +import org.fudaa.fudaa.sig.FSigProjectPersistence; +import org.fudaa.fudaa.sig.FSigResource; +import org.fudaa.fudaa.tr.common.TrResource; + +import com.memoire.bu.BuAbstractPreferencesPanel; +import com.memoire.bu.BuBrowserPreferencesPanel; +import com.memoire.bu.BuColumn; +import com.memoire.bu.BuDesktopPreferencesPanel; +import com.memoire.bu.BuInformationsSoftware; +import com.memoire.bu.BuLanguagePreferencesPanel; +import com.memoire.bu.BuLib; +import com.memoire.bu.BuMainPanel; +im... [truncated message content] |