|
From: <jm_...@us...> - 2003-12-02 13:15:31
|
Update of /cvsroot/fudaa//fudaa_devel/fudaa/src/org/fudaa/fudaa/hydraulique1d/tableau
In directory sc8-pr-cvs1:/tmp/cvs-serv12119/tableau
Modified Files:
Hydraulique1dTableauBase.java
Hydraulique1dTableauLigneEau.java
Added Files:
Hydraulique1dLigneReelTableau.java
Hydraulique1dTableauReel.java
Hydraulique1dTableauReelModel.java
Log Message:
- Message d'avertissement en cas de modif de Noyau fluvial -> transcritique
- Dans la saisie des tableaux, l'editeur et le renderer de cellule utilise
celui de Bu (toujours le séparateur décimal ".")
- La saisie dans le tableau de loi hydraulique se fait comme "Excel" comme
pour les tableaux de semis de points des casiers.
- Réduction de la taille des casiers.
--- NEW FILE: Hydraulique1dLigneReelTableau.java ---
/*
* @file Hydraulique1dLigneReelTableau.java
* @creation 2003-11-28
* @modification $Date: 2003/12/02 13:15:27 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 EDF/LNHE
* @mail de...@fu...
*/
package org.fudaa.fudaa.hydraulique1d.tableau;
/**
* Definit le modèle d'une ligne de tableau de réels.
* @see Hydraulique1dTableauReelModel
* @author Jean-Marc Lacombe
* @version $Revision: 1.1 $ $Date: 2003/12/02 13:15:27 $ by $Author: jm_lacombe $
*/
public final class Hydraulique1dLigneReelTableau {
/**
* le tableau contenant les différents reels de la ligne
*/
private Double[] tableau;
/**
* Constructeur le plus général précisant la taille de la ligne.
* @param taille le nombre de réel de la ligne.
* Au départ les réels sont initialisés à null.
*/
public Hydraulique1dLigneReelTableau(int taille) {
if (taille>0) {
tableau = new Double[taille];
} else {
throw new IllegalStateException("Taille de la ligne incorrecte : "+taille);
}
}
/**
* Constructeur pour une ligne initialisée par 3 réels primitifs.
* @param x premier élément de la ligne.
* @param y deuxième élément de la ligne.
* @param z troisième élément de la ligne.
*/
public Hydraulique1dLigneReelTableau(double x, double y, double z) {
this(doubleValue(x), doubleValue(y), doubleValue(z));
}
/**
* Constructeur pour une ligne initialisée par 3 réels non primitifs.
* @param x premier élément de la ligne, peut être null (cellule vide).
* @param y deuxième élément de la ligne, peut être null (cellule vide).
* @param z troisième élément de la ligne, peut être null (cellule vide).
*/
public Hydraulique1dLigneReelTableau(Double x, Double y, Double z) {
tableau = new Double[3];
tableau[0] = x;
tableau[1] = y;
tableau[2] = z;
}
/**
* Retourne la ième valeur (double primitif) de la ligne.
* @param i Indice de la cellule.
* @return la ième valeur de la ligne.
* Si elle est nulle, alors retourne Double.POSITIVE_INFINITY.
*/
public double value(int i) {
return doubleValue(tableau[i]);
}
/**
* Retourne la ième valeur (double non primitif) de la ligne.
* @param i Indice de la cellule.
* @return la ième valeur de la ligne. Elle peut être nulle.
*/
public Double getValue(int i) {
return tableau[i];
}
/**
* Initialise la ième valeur de la ligne à partir d'un double primitif.
* @param i Indice de la cellule.
* @param valeur La nouvelle valeur de la cellule, si égale à Double.POSITIVE_INFINITY
* alors la cellule sera vide.
*/
public void setValue(int i, double valeur) {
tableau[i] = doubleValue(valeur);
}
/**
* Initialise la ième valeur de la ligne à partir d'un double non primitif.
* @param i Indice de la cellule.
* @param valeur La nouvelle valeur de la cellule, peut être null pour une cellule vide.
*/
public void setValue(int i, Double valeur) {
tableau[i] = valeur;
}
/**
* @return la valeur du premier élement (double non primitif) de la ligne.
*/
public Double X() {
return tableau[0];
}
/**
* @return la valeur du premier élement (double primitif) de la ligne.
*/
public double x() {
return value(0);
}
/**
* Initialise le premier élement de la ligne.
* @param X La nouvelle valeur du premier élement (peut être null).
*/
public void X(Double X) {
tableau[0] = X;
}
/**
* Initialise le premier élement de la ligne.
* @param x La nouvelle valeur du premier élement.
*/
public void x(double x) {
tableau[0] = doubleValue(x);
}
/**
* @return la valeur du deuxième élement (double non primitif) de la ligne.
*/
public Double Y() {
return tableau[1];
}
/**
* @return la valeur du deuxième élement (double primitif) de la ligne.
*/
public double y() {
return value(1);
}
/**
* Initialise le deuxième élement de la ligne.
* @param Y La nouvelle valeur du deuxième élement (peut être null).
*/
public void Y(Double Y) {
tableau[1] = Y;
}
/**
* Initialise le deuxième élement de la ligne.
* @param y La nouvelle valeur du deuxième élement.
*/
public void y(double y) {
tableau[1] = doubleValue(y);
}
/**
* @return la valeur du troisième élement (double non primitif) de la ligne.
*/
public Double Z() {
return tableau[2];
}
/**
* @return la valeur du troisième élement (double primitif) de la ligne.
*/
public double z() {
return value(2);
}
/**
* Initialise le troisième élement de la ligne.
* @param Z La nouvelle valeur du deuxième élement (peut être null).
*/
public void Z(Double Z) {
tableau[2] = Z;
}
/**
* Initialise le troisième élement de la ligne.
* @param z La nouvelle valeur du deuxième élement.
*/
public void z(double z) {
tableau[2] = doubleValue(z);
}
/**
* Récupère les valeurs de la ligne sous forme d'un tableau de doubles primitifs..
* @return z le tableau des éléments de la ligne.
*/
public double[] getTab() {
double[] res = new double[tableau.length];
for (int i = 0; i < tableau.length; i++) {
res[i] = value(i);
}
return res;
}
/**
* @return le nombre d'élément possible de la ligne.
*/
public int getTaille() {
return tableau.length;
}
/**
* @return Vrai, s'il existe une valeur null (cellule vide), Faux sinon.
*/
public boolean isExisteNulle() {
for (int i = 0; i < tableau.length; i++) {
if (tableau[i] == null) return true;
}
return false;
}
/**
* @return les différents éléments de la ligne séparée par un espace.
*/
public String toString() {
String res="";
for (int i = 0; i < tableau.length; i++) {
res+=tableau[i]+" ";
}
res+="\n";
return res;
}
private final static double doubleValue(Double x) {
if (x == null) return Double.POSITIVE_INFINITY;
return x.doubleValue();
}
private final static Double doubleValue(double x) {
if (x == Double.POSITIVE_INFINITY) return null;
return new Double(x);
}
}
--- NEW FILE: Hydraulique1dTableauReel.java ---
/*
* @file Hydraulique1dTableauReel.java
* @creation 2003-11-28
* @modification $Date: 2003/12/02 13:15:27 $
* @license GNU General Public License 2
* @copyright (c)1998-2003 EDF/LNHE
* @mail de...@fu...
*/
package org.fudaa.fudaa.hydraulique1d.tableau;
import javax.swing.table.TableModel;
import com.memoire.bu.BuTable;
/**
* Tableau contenant plusieurs colonnes de réels éditable.
* @see les classes Hydraulique1dLigneReelTableau et Hydraulique1dTableauReelModel.
* @author Jean-Marc Lacombe
* @version $Revision: 1.1 $ $Date: 2003/12/02 13:15:27 $ by $Author: jm_lacombe $
*/
public class Hydraulique1dTableauReel extends BuTable {
public Hydraulique1dTableauReel() {
this(new Hydraulique1dTableauReelModel());
}
public Hydraulique1dTableauReel(Hydraulique1dTableauReelModel model) {
super(model);
}
public void ajouterLigne() {
TableModel m= getModel();
if (m instanceof Hydraulique1dTableauReelModel) {
Hydraulique1dTableauReelModel modele= (Hydraulique1dTableauReelModel)m;
modele.ajouterLigne();
}
}
public void supprimeLignesSelectionnees() {
int[] indexes= getSelectedRows();
TableModel m= getModel();
if (m instanceof Hydraulique1dTableauReelModel) {
Hydraulique1dTableauReelModel modele= (Hydraulique1dTableauReelModel)m;
for (int i= (indexes.length - 1); i >= 0; i--) {
modele.supprimerLigne(indexes[i]);
}
}
}
}
--- NEW FILE: Hydraulique1dTableauReelModel.java ---
/*
* @file Hydraulique1dTableauReelModel.java
* @creation 2003-11-28
* @modification $Date: 2003/12/02 13:15:27 $
* @license GNU General Public License 2
* @copyright (c)1998-2003 EDF/LNHE
* @mail de...@fu...
*/
package org.fudaa.fudaa.hydraulique1d.tableau;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;
/**
* Modèle de tableau contenant plusieurs colonnes de réels éditable.
* @see la classe Hydraulique1dLigneReelTableau.
* @author Jean-Marc Lacombe
* @version $Revision: 1.1 $ $Date: 2003/12/02 13:15:27 $ by $Author: jm_lacombe $
*/
public class Hydraulique1dTableauReelModel extends AbstractTableModel {
/**
* La liste des lignes du tableau (Hydraulique1dLigneReelTableau).
*/
protected ArrayList listePts_;
/**
* Constructeur par défaut.
* Initialise la liste de ligne.
*/
public Hydraulique1dTableauReelModel() {
super();
listePts_= new ArrayList();
}
/**
* @return le nombre de ligne
*/
public int getRowCount() {
return listePts_.size();
}
/**
* Par défaut, il existe 3 colonnes.
* Doit être redéfini si le tableau ne contient pas 3 colonnes.
* @return trois.
*/
public int getColumnCount() {
return 3;
}
/**
* Retourne la classe (Class) de type Double
* @param col l'indice de la colonne
* @return la classe Double
*/
public Class getColumnClass(int col) {
return Double.class;
}
/**
* Retourne la valeur d'une cellule du tableau.
* @param row Indice de la ligne de la cellule.
* @param col Indice de la colonne de la cellule.
* @return La valeur de la cellule (Type Double ou null si cellule vide).
*/
public Object getValueAt(int row, int col) {
Hydraulique1dLigneReelTableau lig= (Hydraulique1dLigneReelTableau)listePts_.get(row);
return lig.getValue(col);
}
/**
* Retourne si la cellule est éditable.
* @param row Indice de la ligne de la cellule.
* @param col Indice de la colonne de la cellule.
* @return Vrai.
*/
public boolean isCellEditable(int row, int col) {
return true;
}
/**
* Modifie la valeur d'une cellule du tableau.
* @param value La nouvelle valeur (Double ou null).
* @param row Indice de la ligne de la cellule.
* @param col Indice de la colonne de la cellule.
*/
public void setValueAt(Object value, int row, int col) {
if (value == null)
return;
Double valeur= (Double)value;
Hydraulique1dLigneReelTableau lig= (Hydraulique1dLigneReelTableau)listePts_.get(row);
lig.setValue(col, valeur);
fireTableDataChanged();
}
/**
* Retourne un tableau de réels avec les 2 premières colonnes non vide.
* Si les colonnes suivants sont vides, la valeur sera Double.POSITIVE_INFINITY.
* @return Le tableau de réels [indice colonne][indice ligne].
*/
public double[][] getTabDouble() {
ArrayList listeTmp= new ArrayList(listePts_.size());
Iterator ite= listePts_.iterator();
while (ite.hasNext()) {
Hydraulique1dLigneReelTableau lig= (Hydraulique1dLigneReelTableau)ite.next();
if ((lig.X() != null) && (lig.Y() != null)) {
listeTmp.add(lig);
}
}
int taille= listeTmp.size();
int nbColonne = getColumnCount();
double[][] res= new double[nbColonne][taille];
for (int i= 0; i < taille; i++) {
Hydraulique1dLigneReelTableau lig= (Hydraulique1dLigneReelTableau)listeTmp.get(i);
for (int j = 0; j < nbColonne; j++) {
res[j][i]= lig.value(j);
}
}
return res;
}
/**
* Retourne un tableau de réels avec les 2 premières colonnes non vide.
* Si les colonnes suivants sont vides, la valeur sera Double.POSITIVE_INFINITY.
* @return Le tableau de réels [indice colonne][indice ligne].
*/
public void setTabDouble(double[][] tableau) {
int nbLigne = 0;
if (tableau.length != 0) {
nbLigne = tableau[0].length;
}
int nbColonne = getColumnCount();
ArrayList liste= new ArrayList(nbLigne+20);
for (int i = 0; i < nbLigne; i++) {
Hydraulique1dLigneReelTableau lig = new Hydraulique1dLigneReelTableau(nbColonne);
liste.add(lig);
for (int j = 0; j < nbColonne; j++) {
lig.setValue(j, tableau[j][i]);
}
}
for (int i = 0; i < 20; i++) {
Hydraulique1dLigneReelTableau lig = new Hydraulique1dLigneReelTableau(nbColonne);
liste.add(lig);
}
listePts_=liste;
fireTableStructureChanged();
}
/**
* Retourne la liste de ligne contenant aucune cellule vide.
* @return La liste de Hydraulique1dLigneReelTableau contenant aucune cellule vide.
*/
public List getListePtsComplets() {
ArrayList listeTmp= new ArrayList(listePts_.size());
Iterator ite= listePts_.iterator();
while (ite.hasNext()) {
Hydraulique1dLigneReelTableau lig= (Hydraulique1dLigneReelTableau)ite.next();
if (!lig.isExisteNulle()) {
listeTmp.add(lig);
}
}
return listeTmp;
}
/**
* Ajoute une ligne vide la fin du tableau.
*/
public void ajouterLigne() {
listePts_.add(new Hydraulique1dLigneReelTableau(getColumnCount()));
fireTableDataChanged();
}
/**
* Ajoute une ligne vide dans le tableau.
* @param row Indice de la ligne à ajouter.
*/
public void ajouterLigne(int row) {
listePts_.add(row, new Hydraulique1dLigneReelTableau(getColumnCount()));
fireTableDataChanged();
}
/**
* Supprime une ligne du tableau.
* @param row Indice de la ligne à supprimer.
*/
public void supprimerLigne(int row) {
listePts_.remove(row);
fireTableDataChanged();
}
}
Index: Hydraulique1dTableauBase.java
===================================================================
RCS file: /cvsroot/fudaa//fudaa_devel/fudaa/src/org/fudaa/fudaa/hydraulique1d/tableau/Hydraulique1dTableauBase.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Hydraulique1dTableauBase.java 25 Nov 2003 10:13:47 -0000 1.4
--- Hydraulique1dTableauBase.java 2 Dec 2003 13:15:27 -0000 1.5
***************
*** 1,281 ****
! /*
! * @file Hydraulique1dTableauBase.java
! * @creation 1999-11-26
! * @modification $Date$
! * @license GNU General Public License 2
! * @copyright (c)1998-2001 EDF/LNHE
! * @mail de...@fu...
! */
! package org.fudaa.fudaa.hydraulique1d.tableau;
! import org.fudaa.dodico.corba.objet.*;
! import org.fudaa.fudaa.hydraulique1d.*;
! import org.fudaa.fudaa.hydraulique1d.dnd.*;
! import javax.swing.*;
! import javax.swing.event.*;
! import java.beans.*;
! import java.util.*;
! import java.awt.*;
! import java.awt.dnd.*;
! import java.awt.datatransfer.*;
! /**
! * @version $Revision$ $Date$ by $Author$
! * @author Axel von Arnim
! */
! public abstract class Hydraulique1dTableauBase
! extends JTable
! implements DropTargetListener, DragSourceListener, DragGestureListener {
! //DND
! private DropTarget dndDropTarget_;
! private boolean dndAcceptFlavor_;
! protected DragSource dndDragSrc_;
! private DataFlavor dndFlavor_;
! private int dndDropCol_;
! private int dndDropRow_;
! private Hydraulique1dDnDTransferParam dndDropParam_;
! public Hydraulique1dTableauBase() {
! super();
! setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
! //setSelectionModel(new Hydraulique1dTableauBaseSelectionModel());
! }
! public void editeCellule(int lig, int col) {
! int[] restriction=
! ((Hydraulique1dTableauBaseModel)getModel()).getRestriction();
! ((Hydraulique1dTableauBaseModel)getModel()).setDirty(lig, true);
! editCellAt(lig, col);
! JComponent parent= (JComponent)getParent();
! if (parent instanceof JViewport) {
! if (lig <= restriction[0]) {
! System.err.println("Hydraulique1dTableauBase: scrolling up viewport");
! ((JScrollPane)parent.getParent()).getVerticalScrollBar().setValue(
! Integer.MIN_VALUE);
! } else if (lig >= restriction[1] - 1) {
! System.err.println("Hydraulique1dTableauBase: scrolling down viewport");
! ((JScrollPane)parent.getParent()).getVerticalScrollBar().setValue(
! Integer.MAX_VALUE);
! }
! }
! repaint();
! }
! public int getPositionNouveau() {
! return ((Hydraulique1dTableauBaseModel)getModel()).getRestriction()[0];
! }
! public IObjet getSelectedObject() {
! int row= getSelectedRow();
! if (row < 0)
! return null;
! return ((Hydraulique1dTableauBaseModel)getModel()).getObject(row);
! }
! public IObjet[] getSelectedObjects() {
! return ((Hydraulique1dTableauBaseModel)getModel()).getObjects(
! getSelectedRows());
! }
! public abstract void reinitialise();
! public void restreintA(int low, int high) {
! //((Hydraulique1dTableauBaseSelectionModel)getSelectionModel()).setOffset(low);
! ((Hydraulique1dTableauBaseModel)getModel()).restreintA(low, high);
! repaint();
! }
! public boolean verifieContraintes() {
! return true;
! }
! /***
! public void propertyChange(PropertyChangeEvent e)
! {
! if( getPropertyName().equals(e.getPropertyName()) ) {
! System.err.println("property "+getPropertyName());
! IObjet[] nouvs=(IObjet[])e.getNewValue();
! boolean prevsort=isAutosort();
! setAutosort(false);
! setObjects(nouvs);
! setAutosort(prevsort);
! repaint();
! }
! }
!
! protected abstract String getPropertyName();
! ***/
! protected String getObjectFieldNameByColumnLink(int col) {
! return "";
! }
! // **********************************************
! // PROPRIETES INTERNES
! // **********************************************
! private IObjet[] objs_;
! public IObjet[] getObjects() {
! if (autosort_) {
! //** java.util.Arrays.sort(objs_, getComparator());
! }
! return objs_;
! }
! public IObjet[] getObjects(boolean autosort) {
! if (autosort) {
! //** java.util.Arrays.sort(objs_, getComparator());
! }
! return objs_;
! }
! protected abstract Comparator getComparator();
! public void setObjects(IObjet[] _objs) {
! if (objs_ == _objs)
! return;
! IObjet[] vp= objs_;
! objs_= _objs;
! if (autosort_) {
! trie();
! }
! reinitialise();
! repaint();
! // firePropertyChange(getPropertyName(),vp,objs_);
! }
! public void trie() {
! /*
! if( getComparator()==null ) return;
! java.util.Arrays.sort(objs_, getComparator());
! if( getModel() instanceof Hydraulique1dTableauBaseModel ) {
! Hydraulique1dTableauBaseModel model=(Hydraulique1dTableauBaseModel)getModel();
! int rows=model.getRowCount();
! for(int r=0; r<rows; r++) model.setDirty(r, false);
! }
! */
! }
! private boolean autosort_= true;
! public boolean isAutosort() {
! return autosort_;
! }
! public void setAutosort(boolean _autosort) {
! if (autosort_ == _autosort)
! return;
! boolean vp= autosort_;
! autosort_= _autosort;
! firePropertyChange("autosort", vp, autosort_);
! }
! // DND Source
! protected void dndInitDragSource() {
! dndDragSrc_= DragSource.getDefaultDragSource();
! dndDragSrc_.createDefaultDragGestureRecognizer(
! this,
! DnDConstants.ACTION_COPY_OR_MOVE,
! this);
! }
! protected boolean dndIsColumnSourceAccepted(int col) {
! return false;
! }
! public void dragDropEnd(DragSourceDropEvent dsde) {}
! public void dragEnter(DragSourceDragEvent dsde) {}
! public void dragExit(DragSourceEvent dse) {}
! public void dragOver(DragSourceDragEvent dsde) {
! // HACK immonde pour windows (le cursor ne veut pas se mettre bien!)
! //dsde.getDragSourceContext().setCursor(DragSource.DefaultCopyDrop);
! }
! public void dropActionChanged(DragSourceDragEvent dsde) {}
! public void dragGestureRecognized(DragGestureEvent dge) {
! final Object[] selected= getSelectedObjects();
! int col= columnAtPoint(dge.getDragOrigin());
! if ((selected.length != 1) || !dndIsColumnSourceAccepted(col)) {
! System.err.println("DND: selection invalide");
! return;
! }
! dndDragSrc_.startDrag(
! dge,
! DragSource.DefaultMoveNoDrop,
! new Hydraulique1dDnDTransfer(
! (IObjet)selected[0],
! getObjectFieldNameByColumnLink(col)),
! this);
! }
! // DND Target
! protected void dndInitDropTarget() {
! dndDropTarget_=
! new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
! dndAcceptFlavor_= false;
! dndFlavor_=
! new DataFlavor(
! dndGetSourceParamClass(),
! DataFlavor.javaJVMLocalObjectMimeType);
! dndDropParam_= null;
! dndDropCol_= -1;
! dndDropRow_= -1;
! }
! protected Class dndGetSourceParamClass() {
! return null;
! }
! protected boolean dndIsColumnTargetAccepted(int col) {
! return false;
! }
! protected void dndDropSucceeded() {}
! public void dragEnter(DropTargetDragEvent dtde) {
! dndAcceptFlavor_= dtde.isDataFlavorSupported(dndFlavor_);
! /* System.err.println("entered");
! Container parent=getParent();
! while( (parent!=null)&&!(parent instanceof JInternalFrame) ) {
! parent=parent.getParent();
! }
! if( parent!=null ) {
! System.err.println("move to front");
! ((JInternalFrame)parent).moveToFront();
! }*/
! dtde.rejectDrag();
! }
! public void dragExit(DropTargetEvent dte) {
! dndAcceptFlavor_= false;
! }
! public void dragOver(DropTargetDragEvent dtde) {
! int col= columnAtPoint(dtde.getLocation());
! if (dndAcceptFlavor_ && dndIsColumnTargetAccepted(col)) {
! dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
! } else {
! dtde.rejectDrag();
! }
! }
! protected int getDropColumn() {
! return dndDropCol_;
! }
! protected int getDropRow() {
! return dndDropRow_;
! }
! protected Hydraulique1dDnDTransferParam getDropObject() {
! return dndDropParam_;
! }
! public void drop(DropTargetDropEvent dtde) {
! dndDropCol_= columnAtPoint(dtde.getLocation());
! dndDropRow_= rowAtPoint(dtde.getLocation());
! Transferable t= dtde.getTransferable();
! if ((!t.isDataFlavorSupported(dndFlavor_))
! || (dndDropRow_ == -1)
! || !dndIsColumnTargetAccepted(dndDropCol_)) {
! System.err.println("DND: drop rejected");
! dtde.rejectDrop();
! } else {
! try {
! System.err.println("DND: drop accepted");
! dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
! dndDropParam_=
! (Hydraulique1dDnDTransferParam)t.getTransferData(dndFlavor_);
! dndDropSucceeded();
! dtde.getDropTargetContext().dropComplete(true);
! } catch (java.io.IOException ioe) {
! System.err.println(ioe);
! dtde.rejectDrop();
! } catch (UnsupportedFlavorException ufe) {
! System.err.println(ufe);
! dtde.rejectDrop();
! }
! }
! }
! public void dropActionChanged(DropTargetDragEvent dtde) {}
! }
! class Hydraulique1dTableauBaseSelectionModel
! extends DefaultListSelectionModel {
! public Hydraulique1dTableauBaseSelectionModel() {
! super();
! offset= 0;
! }
! private int offset;
! public void setOffset(int _offset) {
! if (_offset == offset)
! return;
! offset= _offset;
! }
! public int getOffset() {
! return offset;
! }
! }
--- 1,297 ----
! /*
! * @file Hydraulique1dTableauBase.java
! * @creation 1999-11-26
! * @modification $Date$
! * @license GNU General Public License 2
! * @copyright (c)1998-2001 EDF/LNHE
! * @mail de...@fu...
! */
! package org.fudaa.fudaa.hydraulique1d.tableau;
! import java.util.Comparator;
! import java.awt.datatransfer.DataFlavor;
! import java.awt.datatransfer.Transferable;
! import java.awt.datatransfer.UnsupportedFlavorException;
! import java.awt.dnd.DnDConstants;
! import java.awt.dnd.DragGestureEvent;
! import java.awt.dnd.DragGestureListener;
! import java.awt.dnd.DragSource;
! import java.awt.dnd.DragSourceDragEvent;
! import java.awt.dnd.DragSourceDropEvent;
! import java.awt.dnd.DragSourceEvent;
! import java.awt.dnd.DragSourceListener;
! import java.awt.dnd.DropTarget;
! import java.awt.dnd.DropTargetDragEvent;
! import java.awt.dnd.DropTargetDropEvent;
! import java.awt.dnd.DropTargetEvent;
! import java.awt.dnd.DropTargetListener;
! import javax.swing.DefaultListSelectionModel;
! import javax.swing.JComponent;
! import javax.swing.JScrollPane;
! import javax.swing.JTable;
! import javax.swing.JViewport;
! import org.fudaa.dodico.corba.objet.IObjet;
! import org.fudaa.fudaa.hydraulique1d.dnd.Hydraulique1dDnDTransfer;
! import org.fudaa.fudaa.hydraulique1d.dnd.Hydraulique1dDnDTransferParam;
! import com.memoire.bu.BuTable;
! /**
! * @version $Revision$ $Date$ by $Author$
! * @author Axel von Arnim
! */
! public abstract class Hydraulique1dTableauBase
! extends BuTable
! implements DropTargetListener, DragSourceListener, DragGestureListener {
! //DND
! private DropTarget dndDropTarget_;
! private boolean dndAcceptFlavor_;
! protected DragSource dndDragSrc_;
! private DataFlavor dndFlavor_;
! private int dndDropCol_;
! private int dndDropRow_;
! private Hydraulique1dDnDTransferParam dndDropParam_;
! public Hydraulique1dTableauBase() {
! super();
! setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
! //setSelectionModel(new Hydraulique1dTableauBaseSelectionModel());
! }
! public void editeCellule(int lig, int col) {
! int[] restriction=
! ((Hydraulique1dTableauBaseModel)getModel()).getRestriction();
! ((Hydraulique1dTableauBaseModel)getModel()).setDirty(lig, true);
! editCellAt(lig, col);
! JComponent parent= (JComponent)getParent();
! if (parent instanceof JViewport) {
! if (lig <= restriction[0]) {
! System.err.println("Hydraulique1dTableauBase: scrolling up viewport");
! ((JScrollPane)parent.getParent()).getVerticalScrollBar().setValue(
! Integer.MIN_VALUE);
! } else if (lig >= restriction[1] - 1) {
! System.err.println("Hydraulique1dTableauBase: scrolling down viewport");
! ((JScrollPane)parent.getParent()).getVerticalScrollBar().setValue(
! Integer.MAX_VALUE);
! }
! }
! repaint();
! }
! public int getPositionNouveau() {
! return ((Hydraulique1dTableauBaseModel)getModel()).getRestriction()[0];
! }
! public IObjet getSelectedObject() {
! int row= getSelectedRow();
! if (row < 0)
! return null;
! return ((Hydraulique1dTableauBaseModel)getModel()).getObject(row);
! }
! public IObjet[] getSelectedObjects() {
! return ((Hydraulique1dTableauBaseModel)getModel()).getObjects(
! getSelectedRows());
! }
! public abstract void reinitialise();
! public void restreintA(int low, int high) {
! //((Hydraulique1dTableauBaseSelectionModel)getSelectionModel()).setOffset(low);
! ((Hydraulique1dTableauBaseModel)getModel()).restreintA(low, high);
! repaint();
! }
! public boolean verifieContraintes() {
! return true;
! }
! /***
! public void propertyChange(PropertyChangeEvent e)
! {
! if( getPropertyName().equals(e.getPropertyName()) ) {
! System.err.println("property "+getPropertyName());
! IObjet[] nouvs=(IObjet[])e.getNewValue();
! boolean prevsort=isAutosort();
! setAutosort(false);
! setObjects(nouvs);
! setAutosort(prevsort);
! repaint();
! }
! }
!
! protected abstract String getPropertyName();
! ***/
! protected String getObjectFieldNameByColumnLink(int col) {
! return "";
! }
! // **********************************************
! // PROPRIETES INTERNES
! // **********************************************
! private IObjet[] objs_;
! public IObjet[] getObjects() {
! if (autosort_) {
! //** java.util.Arrays.sort(objs_, getComparator());
! }
! return objs_;
! }
! public IObjet[] getObjects(boolean autosort) {
! if (autosort) {
! //** java.util.Arrays.sort(objs_, getComparator());
! }
! return objs_;
! }
! protected abstract Comparator getComparator();
! public void setObjects(IObjet[] _objs) {
! if (objs_ == _objs)
! return;
! IObjet[] vp= objs_;
! objs_= _objs;
! if (autosort_) {
! trie();
! }
! reinitialise();
! repaint();
! // firePropertyChange(getPropertyName(),vp,objs_);
! }
! public void trie() {
! /*
! if( getComparator()==null ) return;
! java.util.Arrays.sort(objs_, getComparator());
! if( getModel() instanceof Hydraulique1dTableauBaseModel ) {
! Hydraulique1dTableauBaseModel model=(Hydraulique1dTableauBaseModel)getModel();
! int rows=model.getRowCount();
! for(int r=0; r<rows; r++) model.setDirty(r, false);
! }
! */
! }
! private boolean autosort_= true;
! public boolean isAutosort() {
! return autosort_;
! }
! public void setAutosort(boolean _autosort) {
! if (autosort_ == _autosort)
! return;
! boolean vp= autosort_;
! autosort_= _autosort;
! firePropertyChange("autosort", vp, autosort_);
! }
! // DND Source
! protected void dndInitDragSource() {
! dndDragSrc_= DragSource.getDefaultDragSource();
! dndDragSrc_.createDefaultDragGestureRecognizer(
! this,
! DnDConstants.ACTION_COPY_OR_MOVE,
! this);
! }
! protected boolean dndIsColumnSourceAccepted(int col) {
! return false;
! }
! public void dragDropEnd(DragSourceDropEvent dsde) {}
! public void dragEnter(DragSourceDragEvent dsde) {}
! public void dragExit(DragSourceEvent dse) {}
! public void dragOver(DragSourceDragEvent dsde) {
! // HACK immonde pour windows (le cursor ne veut pas se mettre bien!)
! //dsde.getDragSourceContext().setCursor(DragSource.DefaultCopyDrop);
! }
! public void dropActionChanged(DragSourceDragEvent dsde) {}
! public void dragGestureRecognized(DragGestureEvent dge) {
! final Object[] selected= getSelectedObjects();
! int col= columnAtPoint(dge.getDragOrigin());
! if ((selected.length != 1) || !dndIsColumnSourceAccepted(col)) {
! System.err.println("DND: selection invalide");
! return;
! }
! dndDragSrc_.startDrag(
! dge,
! DragSource.DefaultMoveNoDrop,
! new Hydraulique1dDnDTransfer(
! (IObjet)selected[0],
! getObjectFieldNameByColumnLink(col)),
! this);
! }
! // DND Target
! protected void dndInitDropTarget() {
! dndDropTarget_=
! new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
! dndAcceptFlavor_= false;
! dndFlavor_=
! new DataFlavor(
! dndGetSourceParamClass(),
! DataFlavor.javaJVMLocalObjectMimeType);
! dndDropParam_= null;
! dndDropCol_= -1;
! dndDropRow_= -1;
! }
! protected Class dndGetSourceParamClass() {
! return null;
! }
! protected boolean dndIsColumnTargetAccepted(int col) {
! return false;
! }
! protected void dndDropSucceeded() {}
! public void dragEnter(DropTargetDragEvent dtde) {
! dndAcceptFlavor_= dtde.isDataFlavorSupported(dndFlavor_);
! /* System.err.println("entered");
! Container parent=getParent();
! while( (parent!=null)&&!(parent instanceof JInternalFrame) ) {
! parent=parent.getParent();
! }
! if( parent!=null ) {
! System.err.println("move to front");
! ((JInternalFrame)parent).moveToFront();
! }*/
! dtde.rejectDrag();
! }
! public void dragExit(DropTargetEvent dte) {
! dndAcceptFlavor_= false;
! }
! public void dragOver(DropTargetDragEvent dtde) {
! int col= columnAtPoint(dtde.getLocation());
! if (dndAcceptFlavor_ && dndIsColumnTargetAccepted(col)) {
! dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
! } else {
! dtde.rejectDrag();
! }
! }
! protected int getDropColumn() {
! return dndDropCol_;
! }
! protected int getDropRow() {
! return dndDropRow_;
! }
! protected Hydraulique1dDnDTransferParam getDropObject() {
! return dndDropParam_;
! }
! public void drop(DropTargetDropEvent dtde) {
! dndDropCol_= columnAtPoint(dtde.getLocation());
! dndDropRow_= rowAtPoint(dtde.getLocation());
! Transferable t= dtde.getTransferable();
! if ((!t.isDataFlavorSupported(dndFlavor_))
! || (dndDropRow_ == -1)
! || !dndIsColumnTargetAccepted(dndDropCol_)) {
! System.err.println("DND: drop rejected");
! dtde.rejectDrop();
! } else {
! try {
! System.err.println("DND: drop accepted");
! dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
! dndDropParam_=
! (Hydraulique1dDnDTransferParam)t.getTransferData(dndFlavor_);
! dndDropSucceeded();
! dtde.getDropTargetContext().dropComplete(true);
! } catch (java.io.IOException ioe) {
! System.err.println(ioe);
! dtde.rejectDrop();
! } catch (UnsupportedFlavorException ufe) {
! System.err.println(ufe);
! dtde.rejectDrop();
! }
! }
! }
! public void dropActionChanged(DropTargetDragEvent dtde) {}
! }
! class Hydraulique1dTableauBaseSelectionModel
! extends DefaultListSelectionModel {
! public Hydraulique1dTableauBaseSelectionModel() {
! super();
! offset= 0;
! }
! private int offset;
! public void setOffset(int _offset) {
! if (_offset == offset)
! return;
! offset= _offset;
! }
! public int getOffset() {
! return offset;
! }
! }
Index: Hydraulique1dTableauLigneEau.java
===================================================================
RCS file: /cvsroot/fudaa//fudaa_devel/fudaa/src/org/fudaa/fudaa/hydraulique1d/tableau/Hydraulique1dTableauLigneEau.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Hydraulique1dTableauLigneEau.java 25 Nov 2003 10:13:47 -0000 1.4
--- Hydraulique1dTableauLigneEau.java 2 Dec 2003 13:15:27 -0000 1.5
***************
*** 1,41 ****
! /*
! * @file Hydraulique1dTableauLigneEau.java
! * @creation 22/12/00
! * @modification $Date$
! * @license GNU General Public License 2
! * @copyright (c)1998-2001 EDF/LNHE
! * @mail de...@fu...
! */
! /**
! * $RCSfile$
! * @creation 22/12/00
! * @modification $Date$
! * @statut instable
! */
! package org.fudaa.fudaa.hydraulique1d.tableau;
! import org.fudaa.dodico.corba.objet.*;
! import org.fudaa.dodico.corba.hydraulique1d.*;
! import org.fudaa.fudaa.hydraulique1d.*;
! import org.fudaa.fudaa.hydraulique1d.dnd.*;
! import javax.swing.*;
! import javax.swing.table.*;
! import javax.swing.event.*;
! import java.beans.*;
! import java.util.*;
! import java.awt.*;
! import java.awt.dnd.*;
! import java.awt.datatransfer.*;
! /**
! * @version $Id$
! * @author Jean-Marc Lacombe
! */
! /**
! * @version $Revision$ $Date$ by $Author$
! * @author
! */
! public class Hydraulique1dTableauLigneEau extends JTable {
! public Hydraulique1dTableauLigneEau(Hydraulique1dTableauLigneEauModel model) {
! super(model);
! this.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
! }
! }
--- 1,31 ----
! /*
! * @file Hydraulique1dTableauLigneEau.java
! * @creation 22/12/00
! * @modification $Date$
! * @license GNU General Public License 2
! * @copyright (c)1998-2001 EDF/LNHE
! * @mail de...@fu...
! */
! /**
! * $RCSfile$
! * @creation 22/12/00
! * @modification $Date$
! * @statut instable
! */
! package org.fudaa.fudaa.hydraulique1d.tableau;
! import javax.swing.ListSelectionModel;
! import com.memoire.bu.BuTable;
! /**
! * @version $Id$
! * @author Jean-Marc Lacombe
! */
! /**
! * @version $Revision$ $Date$ by $Author$
! * @author
! */
! public class Hydraulique1dTableauLigneEau extends BuTable {
! public Hydraulique1dTableauLigneEau(Hydraulique1dTableauLigneEauModel model) {
! super(model);
! this.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
! }
! }
|