|
From: <de...@us...> - 2010-01-03 21:49:12
|
Revision: 5588
http://fudaa.svn.sourceforge.net/fudaa/?rev=5588&view=rev
Author: deniger
Date: 2010-01-03 21:49:01 +0000 (Sun, 03 Jan 2010)
Log Message:
-----------
Modified Paths:
--------------
trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaultSaver.java
trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostProjet.java
trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostProjetChooser.java
Modified: trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaultSaver.java
===================================================================
--- trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaultSaver.java 2010-01-03 21:48:34 UTC (rev 5587)
+++ trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaultSaver.java 2010-01-03 21:49:01 UTC (rev 5588)
@@ -6,6 +6,7 @@
import java.util.Map;
+import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.CtuluUI;
import org.fudaa.dodico.h2d.type.H2dVariableType;
import org.fudaa.fudaa.tr.post.data.TrPostDataCreated;
@@ -28,7 +29,7 @@
vy_ = _defaut.getVy().getShortName();
}
- public TrPostDataCreated restore(H2dVariableType _newVar, TrPostSource _src, CtuluUI _ui, Map _shortName) {
+ public TrPostDataCreated restore(H2dVariableType _newVar, TrPostSource _src, CtuluUI _ui, Map _shortName, TrPostSourcesManager srcMng, CtuluAnalyze log) {
H2dVariableType var = _newVar;
H2dVariableType varX = (H2dVariableType) _shortName.get(vx_);
H2dVariableType varY = (H2dVariableType) _shortName.get(vy_);
Modified: trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostProjet.java
===================================================================
--- trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostProjet.java 2010-01-03 21:48:34 UTC (rev 5587)
+++ trunk/soft/fudaa-prepro/ui/src/main/java/org/fudaa/fudaa/tr/post/TrPostProjet.java 2010-01-03 21:49:01 UTC (rev 5588)
@@ -17,7 +17,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
@@ -101,105 +100,79 @@
*/
public class TrPostProjet implements ActionListener {
- /**
- * Manager de sauvegarder/charghement des donn\xE9es
- */
- private TrPostPersistenceManager manager_;
+ class ModifyObserver implements Observer {
- public TrPostPersistenceManager getManager() {
- if (manager_ == null) manager_ = new TrPostPersistenceManager(this);
+ private boolean isModified_;
- return manager_;
- }
+ protected void clearModified() {
+ isModified_ = false;
+ updateFrameState();
+ }
- private class TimeContentUpdater implements ListDataListener {
+ public boolean isModified() {
+ return isModified_;
+ }
- protected TimeContentUpdater() {
-
+ public void setModified() {
+ isModified_ = true;
+ updateFrameState();
}
- protected void updateAll() {
- // TODO a revoir
- // if (fille_ != null && fille_.isVisible()) {
- // if (CtuluLibMessage.DEBUG) {
- // CtuluLibMessage.debug("update fill time format");
- // }
- // final TrPostVisuPanel panel = (TrPostVisuPanel)
- // fille_.getVisuPanel();
- // final BCalque[] cqs = panel.getDonneesCalque().getCalques();
- // for (int i = cqs.length - 1; i >= 0; i--) {
- // final BCalque calque = cqs[i];
- // if (calque instanceof TrPostFlecheLayer) {
- // ((TrPostFlecheLayer) calque).timeStepFormatChanged();
- // } else if (calque instanceof TrIsoLayerDefault) {
- // ((TrIsoLayerDefault) calque).timeStepFormatChanged();
- // }
- // }
- // final TrPostFlecheLayer flecheLayer = panel.getFlecheLayer();
- // if (flecheLayer != null) {
- // flecheLayer.timeStepFormatChanged();
- // }
- // final TrIsoLayer liso = panel.getIsoLayer();
- // if (liso != null && liso.isVisible()) {
- // liso.timeStepFormatChanged();
- // }
- // if (!fille_.getArbreCalqueModel().getTreeSelectionModel().
- // isSelectionEmpty()) {
- // final TreePath[] path =
- // fille_.getArbreCalqueModel().getTreeSelectionModel
- // ().getSelectionPaths();
- // fille_.getArbreCalqueModel().getTreeSelectionModel().clearSelection
- // ();
- // fille_.getArbreCalqueModel().getTreeSelectionModel().
- // setSelectionPaths(path);
- // }
- // }
- setProjectModified();
+ public void update(final Observable _o, final Object _arg) {
+ setModified();
}
- public void contentsChanged(final ListDataEvent _event) {
- updateAll();
+ protected void updateFrameState() {
+ if (impl_ != null) {
+ impl_.setEnabledForAction("ENREGISTRER", isModified_);
+ impl_.setEnabledForAction("ENREGISTRERSOUS", isModified_);
+ changedMainFrameState();
+ }
}
- public void intervalAdded(final ListDataEvent _event) {
- updateAll();
+ }
+
+ /**
+ * Observable custom reserv\xE9 aux modifs apport\xE9es a la liste des src.
+ *
+ * @author Adrien Hadoux
+ */
+ class observableSupport extends Observable {
+ @Override
+ public void notifyObservers() {
+ this.setChanged();
+ super.notifyObservers();
}
- public void intervalRemoved(final ListDataEvent _event) {
- updateAll();
+ @Override
+ public void notifyObservers(final Object arg) {
+ this.setChanged();
+ super.notifyObservers(arg);
}
+
}
- class ModifyObserver implements Observer {
+ private class TimeContentUpdater implements ListDataListener {
- private boolean isModified_;
+ protected TimeContentUpdater() {
- protected void clearModified() {
- isModified_ = false;
- updateFrameState();
}
- protected void updateFrameState() {
- if (impl_ != null) {
- impl_.setEnabledForAction("ENREGISTRER", isModified_);
- impl_.setEnabledForAction("ENREGISTRERSOUS", isModified_);
- changedMainFrameState();
- }
+ public void contentsChanged(final ListDataEvent _event) {
+ updateAll();
}
- public boolean isModified() {
- return isModified_;
+ public void intervalAdded(final ListDataEvent _event) {
+ updateAll();
}
- public void setModified() {
- isModified_ = true;
- updateFrameState();
+ public void intervalRemoved(final ListDataEvent _event) {
+ updateAll();
}
- public void update(final Observable _o, final Object _arg) {
- setModified();
+ protected void updateAll() {
+ setProjectModified();
}
-
}
class VariableListener implements TrPostDataListener {
@@ -264,6 +237,19 @@
}
+ /**
+ * Manager de sauvegarder/charghement des donn\xE9es
+ */
+ private TrPostPersistenceManager manager_;
+
+ private final TrPostSourcesManager sources_ = new TrPostSourcesManager();
+
+ /**
+ * liste des noeuds pour gerer le cut/copy/paste avec en + le undo/redo
+ */
+ // liste des noeuds copies
+ Set<EbliNode> nodesCopyied = null;
+
// transient TrPostFille fille_;
//
// /**
@@ -274,14 +260,8 @@
// ArrayList<TrPostLayoutFille> listeFillesLayout = new
// ArrayList<TrPostLayoutFille>();
- /**
- * liste des noeuds pour gerer le cut/copy/paste avec en + le undo/redo
- */
- // liste des noeuds copies
- Set<EbliNode> nodesCopyied = null;
// liste des noeuuds coupes
Set<EbliNode> nodesCutted = null;
-
/**
* internalframe qui gere les multiProjets
*/
@@ -291,45 +271,13 @@
* Le menu du post qui contient tout les sous menus des projets
*/
BuMenu menuPost_;
- BuMenu menuLayout_ = new BuMenu(TrResource.getS("Layout"), "LAYOUTMANAGER");;
- List<BuMenu> listeMenuProjets_;
+ BuMenu menuLayout_ = new BuMenu(TrResource.getS("Layout"), "LAYOUTMANAGER");
+ List<BuMenu> listeMenuProjets_;;
List<ArrayList<BuMenuItem>> listeSousMenuProjets_;
- /**
- * Observable custom reserv\xE9 aux modifs apport\xE9es a la liste des src.
- *
- * @author Adrien Hadoux
- */
- class observableSupport extends Observable {
- @Override
- public void notifyObservers() {
- this.setChanged();
- super.notifyObservers();
- }
-
- @Override
- public void notifyObservers(final Object arg) {
- this.setChanged();
- super.notifyObservers(arg);
- }
-
- }
-
private observableSupport observable;
- public observableSupport getObservable() {
- if (observable == null) observable = new observableSupport();
- return observable;
- }
-
- public void notifyObservers() {
- // getObservable().setChanged();
-
- getObservable().notifyObservers();
-
- }
-
transient int idxFilleG_;
public transient TrPostCommonImplementation impl_;
@@ -343,7 +291,7 @@
/**
* liste des sources pour le multiProjet.
*/
- public transient ArrayList<TrPostSource> listeSrc_ = new ArrayList<TrPostSource>();
+ // public transient ArrayList<TrPostSource> listeSrc_ = new ArrayList<TrPostSource>();
transient TimeContentUpdater timeUpdater_;
@@ -353,7 +301,9 @@
}
public TrPostProjet(final TrPostSource _src, final TrPostCommonImplementation _impl) {
- if (_src != null) ajouterSource(_src);
+ if (_src != null) {
+ ajouterSource(_src);
+ }
// -- creation de la frame de gestion multi projet --//
filleProjetctManager_ = new TrPostProjetsManagerFille(this);
@@ -362,561 +312,115 @@
}
/**
- * Permet d ajouter une source dans le projet afin de gerer le multi source. On doit toujorus passer par cette methode
- * pour ajouter une source.
- *
- * @param _src
+ * performed d action pour toutes les simulations charg\xE9es. compl\xE9xit\xE9 de l algo: lin\xE9aire Cette methode est robuste
+ * en cas de suppression de sources et donc de menus.
*/
- public void ajouterSource(final TrPostSource _src) {
- if (!EventQueue.isDispatchThread()) {
- EventQueue.invokeLater(new Runnable() {
+ public void actionPerformed(final ActionEvent _event) {
+ final String commandeBrute = _event.getActionCommand();
- public void run() {
- ajouterSource(_src, null);
- }
- });
- } else ajouterSource(_src, null);
+ // i indique le numero de la simulation
+ for (int i = 0; i < getlisteSousMenuProjets_().size(); i++) {
- }
+ // --recuperation de la liste des sousmenu de la simulation i --//
+ final ArrayList<BuMenuItem> listeSousMenus = getlisteSousMenuProjets_().get(i);
+ final TrPostSource source = getSource(i);
+ // -- on recherche si l action provient d un des fils --//
+ for (int j = 0; j < listeSousMenus.size(); j++) {
+ final BuMenuItem item = listeSousMenus.get(j);
- public void ajouterSource(final TrPostSource _src, String title) {
- _src.addVariableListener(new VariableListener());
- if (_src.getFiles() == null || !isOneSourceLoaded(_src.getFiles())) {
- listeSrc_.add(_src);
- _src.buildDefaultVarUpdateLists();
+ // -- on essaie de matcher a la fois la commande et l objet pour
+ // savoir si c est le bon --//
+ // -- si une clause du if est v\xE9rifi\xE9 alors on gere la
+ // simulation i
+ // --//
+ if ("COMPUTE_EXTREMA".equals(commandeBrute) && item.equals(_event.getSource())) {
- // -- ajout du menu correspondant uniquement a partir de la 2eme
- // --//
- // if (listeSrc_.size()>1 || (menuPost_!=null &&))
- construitMenuPostSpecifiqueSource(_src, title);
+ FuLog.debug("je fais partie de la simulation " + i);
+ showExtremum(i);
+ } else if ("PALETTE_DEFAULT".equals(commandeBrute) && item.equals(_event.getSource())) {
+ updatePaletteMin(source);
+ } else if ("TIME_FORMAT".equals(commandeBrute) && item.equals(_event.getSource())) {
+ TrPostTimeFmtPanel.updateTimeStepFmt(source, getImpl().getFrame());
+ } else {
- } else {
- // -- messqge d erreur: le fichier est deja ouvert --//
- new BuDialogMessage(impl_.getApp(), impl_.getInformationsSoftware(), "Le fichier est deja ouvert.").activate();
-
- }
- // -- notify aux observers --//
- this.notifyObservers();
-
- }
-
- public TrPostSource findSource(final String _file) {
- return findSource(new File(_file));
- }
-
- /**
- * retourne la source dans la liste des sources correspondant au fichier. retourne null sinon.
- *
- * @param _file : path absolu du fichier
- * @return
- */
- public TrPostSource findSource(final File _file) {
-
- for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) {
- final TrPostSource src = it.next();
- if (src.isOpened(_file)) return src;
- }
-
- return null;
- }
-
- public TrPostSource findSource(final Collection<File> _file) {
-
- for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) {
- final TrPostSource src = it.next();
- if (isOpenedIn(_file, src)) return src;
- }
- return null;
- }
-
- private boolean isOpenedIn(Collection<File> files, TrPostSource _in) {
- if (_in == null) return false;
- boolean sourceGetAllFiles = true;
- for (File file : files) {
- if (!_in.isOpened(file)) sourceGetAllFiles = false;;
-
- }
- return sourceGetAllFiles;
-
- }
-
- /**
- * Retourne la source asscoi\xE9 a l id.
- *
- * @param _id
- * @return
- */
- public TrPostSource findSourceById(final String _id) {
-
- for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) {
- final TrPostSource src = it.next();
- if (src.getId().equals(_id)) return src;
- }
-
- return null;
- }
-
- /**
- * Retourne toutes les sources qui ne sont pas des composites
- *
- * @return
- */
- public List<TrPostSource> getAllClassicalSource() {
- List<TrPostSource> res = new ArrayList<TrPostSource>();
- for (TrPostSource src : listeSrc_) {
- if (!isAsuiteCalcul(src)) res.add(src);
- }
- return res;
- }
-
- /**
- * Retourne toutes les sources qui sont des composites
- *
- * @return
- */
- public List<TrPostSourceFromReader> getAllCCompositeSource() {
- List<TrPostSourceFromReader> res = new ArrayList<TrPostSourceFromReader>();
- for (TrPostSource src : listeSrc_) {
- if (isAsuiteCalcul(src)) res.add((TrPostSourceFromReader) src);
- }
- return res;
- }
-
- public boolean isSourceLoaded(final String _file) {
- return isSourceLoaded(new File(_file));
- }
-
- /**
- * indique si il existe une source portant le nom du fichier en param.
- *
- * @param _file : path absolu du fichier
- * @return
- */
- public boolean isSourceLoaded(final File _file) {
- if (findSource(_file) == null) return false;
- return true;
- }
-
- public boolean isOneSourceLoaded(final Collection<File> _files) {
- if (findSource(_files) == null) return false;
- return true;
- }
-
- // /**
- // * methode qui change la source courante et retourne true si la source
- // existe bien, false sinon
- // *
- // * @param _file : path absolu du fichier
- // * @return
- // */
- // public boolean changeSource(final TrPostSource _src) {
- //
- // src_ = _src;
- //
- // return true;
- // }
-
- /**
- * Methode de suppression de la source
- *
- * @param src : TrPostSource, retourne true si la suppression a bien ete effectuee.
- */
- public boolean removeSource(final TrPostSource src, final int n) {
-
- if (isOneSourceLoaded(src.getFiles())) {
- listeSrc_.remove(src);
-
- // --recuperation du menu simul --//
- final BuMenu menuSimul = getlisteMenuProjets_().get(n);
-
- // --on retire les menus correspondants --//
- // for (int i = 0; i < listeSousMenuProjets_.get(n).size(); i++) {
- // BuMenuItem item = listeSousMenuProjets_.get(n).get(i);
- // menuSimul.remove(item);
- // }
-
- // -- on retire le menuSimul de la liste --//
- menuPost_.remove(menuSimul);
-
- // -- on retire de la liste des menus le menusimul et la liste des
- // sous
- // menus --//
- getlisteMenuProjets_().remove(n);
- getlisteSousMenuProjets_().remove(n);
-
- // -- mise a jour de la barre des menus --//
- impl_.getMainMenuBar().revalidate();
-
- // -- on met a jour la scene en enlevant tous les objets reli\xE9s \xE0
- // cette source --//
- for (TrPostLayoutFille frame : impl_.getAllLayoutFille()) {
- frame.getScene().removeAllWidgetLinkedToSrc(src);
+ if ("VARIABLES".equals(commandeBrute) && item.equals(_event.getSource())) {
+ TrPostDataCreationPanel.activeVarFrame(this, source, getImpl());
+ } else if ("EXPORTDATA".equals(commandeBrute) && item.equals(_event.getSource())) {
+ TrPostVisuPanel.startExport(getImpl(), source, null, null);
+ } else if ("COMPARE".equals(commandeBrute) && item.equals(_event.getSource())) {
+ compareWith(source);
+ }
+ }
}
-
- return true;
- } else {
- // -- messqge d erreur: le fichier est deja ouvert --//
- new BuDialogMessage(impl_.getApp(), impl_.getInformationsSoftware(),
- "Impossible de supprimer ce fichier de la liste.").activate();
-
- return false;
}
-
}
/**
- * methode qui formatte les infos de la source
- *
- * @param _src
- * @return
+ * @param _impl l'implementation parente
*/
- public String formatInfoSource(final TrPostSource _src) {
- // --ajout dans la liste des titres --//
- Collection<File> files = _src.getFiles();
- if (!isAsuiteCalcul(_src)) return formatName(_src.getTitle()) + " | Fichier: "
- + formatFichier(files.iterator().next());
- else {
+ public void active(final TrPostCommonImplementation _impl) {
+ impl_ = _impl;
+ // pour mettre a jour le receveur d'evt
+ impl_.getUndoCmdListener();
- // String listeFiles="";
- // for(File f:files)
- // listeFiles+="| "+f.getName();
- return _src.getTitle();// + listeFiles;
+ modifyState_.updateFrameState();
+ if (isModified()) {
+ _impl.setMainMessageAndClear(TrResource
+ .getS("Le fichier des r\xE9sultats a \xE9t\xE9 modifi\xE9: la base de donn\xE9es a \xE9t\xE9 mise \xE0 jour"));
}
- }
- public boolean isAsuiteCalcul(final TrPostSource _src) {
- if (_src instanceof TrPostSourceFromReader) {
- TrPostSourceFromReader s = (TrPostSourceFromReader) _src;
- if (s.getReader() instanceof TrPostSourceReaderComposite) return true;
+ // -- lancement du thread d'ouverture du layout avec els widgets calque
+ // TODO pourquoi faire un thread pour des operation graphiques
+ // !!!!!!!!!!!!!!!!!!!!!!!!
+ // new CtuluTaskOperationGUI(impl_,
+ // TrResource.getS("Ouverture vue 2D...")) {
- }
+ final Runnable r = new Runnable() {
- return false;
- }
+ public void run() {
- public String formatFichier(final File file) {
- if (file == null) return "";
- final String nomFichier = file.getAbsolutePath();
- // int position = nomFichier.lastIndexOf(File.separator) + 1;
- // if (position != -1) {
- // nomFichier = nomFichier.substring(position);
- // }
- // position = nomFichier.lastIndexOf(CtuluLibString.DOT);
- // if (position != -1) {
- // nomFichier = nomFichier.substring(0, position);
- // }
- // FuLog.warning("nom du fichier: " + nomFichier);
- return nomFichier;
- }
+ // -- si il y a deja une source de pr\xE9charg\xE9e --//
+ if (sources_.isNotEmpty()) {
+ final TrPostLayoutFille filleLayout = new TrPostLayoutFille(TrPostProjet.this);
+ // -- creation d une instance de la legende du calque --//
+ final CalqueLegendeWidgetAdapter legendeCalque = new CalqueLegendeWidgetAdapter(filleLayout.getScene(), null);
- /**
- * formatte le titre
- *
- * @param file
- * @return
- */
- public String formatName(String title) {
- // --suppression des trop long espaces du titre --//
+ final TrPostSource source = sources_.getSource(0);
+ final TrPostVisuPanel pnVisu = source.buildVisuPanel(TrPostProjet.this, legendeCalque);
- title = title.replaceAll(" ", "");
+ // -- ajout des infos de cr\xE9ation --//
+ // TODO Adrien centralise tout cela
+ // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ // c'est la source qui doit donner ces info: modifier
+ // TrPostSource !
+ TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, source);
- return title;
- }
+ // -- ajout du visuPanel au layout --//
+ final Point location = pnVisu.getLocation();
+ location.x += 10;
+ location.y += 10;
+ filleLayout.addCalque("Calque " + (filleLayout.getScene().getAllVue2d().size() + 1), location, pnVisu
+ .getPreferredSize(), pnVisu, legendeCalque);
- /**
- * Construit un menu specifique a la source choisie. A chaque fois que l on ajoute une source au projet, il faut
- * ajouter un menu sp\xE9cifique.
- *
- * @param _src
- */
- public void construitMenuPostSpecifiqueSource(final TrPostSource _src, String title) {
+ // -- decoration de la fille layout --//
+ filleLayout.setFrameIcon(EbliResource.EBLI.getToolIcon("lissage"));
- BuMenu menuSimul = null;
- if (title == null) menuSimul = new BuMenu((listeSrc_.size()) + ". "
- + formatFichier(_src.getFiles().iterator().next()), "SIMULATION" + (listeSrc_.size()));
- else menuSimul = new BuMenu((listeSrc_.size()) + ". " + _src.getTitle(), "SIMULATION" + (listeSrc_.size()));
- // -- ajout du menu au menu post --//
- getMenuPost().add(menuSimul);
+ filleLayout.setClosable(true);
+ filleLayout.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- // -- sauvegarde d une trace du menu dans la liste pour une suppression
- // ulterieure --//
- getlisteMenuProjets_().add(menuSimul);
+ // --ajout dans le post de la frame --//
+ impl_.addInternalFrame(filleLayout);
+ }
- // final ArrayList<BuMenuItem> listSousMenus = new
- // ArrayList<BuMenuItem>();
- //
- // final BuIcon ic = BuResource.BU.getIcon("aucun");
- //
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Extrema..."),
- // "COMPUTE_EXTREMA", ic, TrPostProjet.this));
- // listSousMenus.add(menuSimul.addMenuItem(CtuluLib.getS(
- // "Editer les variables..."), "VARIABLES", ic,
- // TrPostProjet.this));
- // menuSimul.addSeparator();
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS(
- // "Palettes de couleurs"), "PALETTE_DEFAULT", ic,
- // TrPostProjet.this));
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS(
- // "Formater/modifier les pas de temps..."), "TIME_FORMAT",
- // ic, TrPostProjet.this));
- //
- // menuSimul.addSeparator();
- //
- // listSousMenus.add(menuSimul.addMenuItem(new
- // TrPostBuilderSuiteCalcul.ActionBuildSuite(_src, TrResource
- // .getS("Suite de calcul"), EbliResource.EBLI.getIcon(""),
- // "SUITECALCUL", impl_)));
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Comparer...")
- // , "COMPARE", ic, TrPostProjet.this));
- // listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
- // TrResource.getS("Comparer les r\xE9sultats avec ceux d'un autre projet"))
- // ;
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Projeter...")
- // , "PROJECT", ic, TrPostProjet.this));
- // listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
- // TrResource.getS("Projeter les r\xE9sultats sur un maillage diff\xE9rent"));
- //
- // menuSimul.addSeparator();
- //
- // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Exporter"),
- // "EXPORTDATA", TrPostProjet.this));
- // _src.addSpecificItemInMainMenu(menuSimul, getImpl());
-
- ArrayList<BuMenuItem> listSousMenus = getSousMenusSpecifiqueSource(_src, menuSimul);
- // -- ajout de la sous liste de menus pour la garder en memoire --//
- getlisteSousMenuProjets_().add(listSousMenus);
-
- }
-
- /**
- * Cree la liste des menu items sp\xE9cifiques au fichier source charg\xE9.
- *
- * @param _src
- * @param menuSimul
- * @return
- */
- public ArrayList<BuMenuItem> getSousMenusSpecifiqueSource(final TrPostSource _src, BuMenu menuSimul) {
- final ArrayList<BuMenuItem> listSousMenus = new ArrayList<BuMenuItem>();
-
- final BuIcon ic = BuResource.BU.getIcon("aucun");
-
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Extrema..."), "COMPUTE_EXTREMA", ic, TrPostProjet.this));
- BuMenuItem item = new BuMenuItem();
-
- listSousMenus.add(menuSimul.addMenuItem(CtuluLib.getS("Editer les variables..."), "VARIABLES", ic,
- TrPostProjet.this));
- menuSimul.addSeparator();
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Palettes de couleurs"), "PALETTE_DEFAULT", ic,
- TrPostProjet.this));
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Formater/modifier les pas de temps..."), "TIME_FORMAT",
- ic, TrPostProjet.this));
-
- menuSimul.addSeparator();
-
- listSousMenus.add(menuSimul.addMenuItem(new TrPostBuilderSuiteCalcul.ActionBuildSuite(_src, TrResource
- .getS("Suite de calcul"), EbliResource.EBLI.getIcon(""), "SUITECALCUL", impl_)));
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Comparer..."), "COMPARE", ic, TrPostProjet.this));
- listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
- TrResource.getS("Comparer les r\xE9sultats avec ceux d'un autre projet"));
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Projeter..."), "PROJECT", ic, TrPostProjet.this));
- listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
- TrResource.getS("Projeter les r\xE9sultats sur un maillage diff\xE9rent"));
-
- menuSimul.addSeparator();
-
- listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Exporter"), "EXPORTDATA", TrPostProjet.this));
- _src.addSpecificItemInMainMenu(menuSimul, getImpl());
- return listSousMenus;
- }
-
- public BuMenu getMenuPost() {
- if (menuPost_ == null) menuPost_ = new BuMenu(TrResource.getS("Post"), "POST");
- return menuPost_;
- }
-
- /**
- * Creation par defaut du menu post de l interface. Cette methdoe est appelee une seule dfois au moment de la creation
- * de l impl.
- */
- public void setMenuPost() {
- final BuMenuBar menubar = impl_.getMainMenuBar();
-
- Component comp = null;
- if (getMenuPost().getMenuComponentCount() > 0) {
- comp = getMenuPost().getMenuComponent(0);
- // getMenuPost().remove(0);
- }
-
- getMenuPost().setIcon(null);
- getMenuPost().setName("mnPost");
-
- menubar.add(getMenuPost(), 2);
-
- getMenuPost().addSeparator(TrResource.getS("Layout"));
- // -- ajout de l action de creation du calque --//
- // getMenuPost().add(new TrPostActionChooseAndCreateCalque(this));
- // getMenuPost().addMenuItem(TrResource.getS("Vue 2D"), "VIEW_2D",
- // BuResource.BU.getIcon("aucun"), TrPostProjet.this);
- getMenuPost().addMenuItem(TrResource.getS(("Ajouter une nouvelle fen\xEAtre")), "AJOUTFRAME",
- CtuluResource.CTULU.getIcon("crystal_ajouter"), new ActionListener() {
-
- public void actionPerformed(final ActionEvent _e) {
- createNewLayoutFrame();
-
- }
- });
- getMenuPost().addMenuItem(TrResource.getS(("Fusionner avec un autre projet POST")), "FUSIONPOST",
- CtuluResource.CTULU.getIcon("crystal_ajouter"), new ActionListener() {
-
- public void actionPerformed(final ActionEvent _e) {
- boolean ok = CtuluLibDialog
- .showConfirmation(
- getImpl().getFrame(),
- TrResource.getS("Fusionner avec un autre projet POST"),
- TrResource
- .getS("Le projet courant va \xEAtre ferm\xE9. \n Voulez vous sauvegarder le projet courant avant sa fermeture?"),
- TrResource.getS("Sauvegarder et continuer"), TrResource.getS("Annuler"));
- if (!ok) return;
- getManager().saveProject(false);
- getManager().loadProject(false, null);
- // -- on reinitialise le nom path du projet a null pour
- // qu'il soit redemand\xE9 lors de la nouvelle sauvegarde
- // --//
- getManager().setProjet(null);
-
- }
- });
-
- getMenuPost().addSeparator(TrResource.getS("Gestion"));
- // -- ajout de l action de gestion des simus dans post --//
- final BuMenuItem item = new BuMenuItem(TrResource.getS("Gestion Multi-Sources"));
- item.addActionListener(new ActionListener() {
-
- public void actionPerformed(final ActionEvent e) {
- // -- affichage de la fenetre de gestion multi projet --//
-
- if (!filleProjetctManager_.isVisible()) {
- // filleProjetctManager_.setSize(filleProjetctManager_.getSize
- // ().width,
- // filleProjetctManager_.getSize().height / 2);
-
- impl_.addInternalFrame(filleProjetctManager_);
- } else filleProjetctManager_.moveToFront();
-
+ // -- creation du menu POST de base --//
+ setMenuPost();
+ changedMainFrameState();
}
-
- });
- getMenuPost().add(item);
- getMenuPost().addSeparator("Liste des Fichiers r\xE9sultats");
- // -- init de la liste des menus --//
-
- // -- construction par defaut du premier menu de simulation --//
- // construitMenuPostSpecifiqueSource(getSource(0));
-
- if (comp != null) {
- getMenuPost().add(comp);
- }
-
- }
-
- public List<BuMenu> getlisteMenuProjets_() {
- if (listeMenuProjets_ == null) listeMenuProjets_ = new ArrayList<BuMenu>();
- return listeMenuProjets_;
- }
-
- public List<ArrayList<BuMenuItem>> getlisteSousMenuProjets_() {
- if (listeSousMenuProjets_ == null) listeSousMenuProjets_ = new ArrayList<ArrayList<BuMenuItem>>();
- return listeSousMenuProjets_;
- }
-
- /**
- * calcul les extrema en fonction de la source proposee
- *
- * @param indiceSource_
- */
- private void showExtremum(final int indiceSource_) {
- final JTable table = TrPostMinMaxTableModel.createTableFor(getSource(indiceSource_));
- final TrPostMinMaxTableModel model = (TrPostMinMaxTableModel) table.getModel();
- final CtuluDialogPanel panel = new CtuluDialogPanel();
- final CtuluDialog dial = new CtuluDialog(getImpl().getFrame(), panel);
- final BuButton btCalcul = new BuButton(TrResource.getS("Calcul des extrema"));
- dial.setTitle(btCalcul.getText());
- btCalcul.setActionCommand("EXTREMUM");
- panel.setLayout(new BuHorizontalLayout(3, false, false));
- final BuPanel center = new BuPanel();
- center.setLayout(new BuBorderLayout(2, 2, true, true));
- final BuScrollPane scroll = new BuScrollPane(table);
- scroll.setPreferredHeight((int) (table.getPreferredSize().height * 1.3));
- center.add(scroll, BuBorderLayout.CENTER);
- center.add(model.createInfoPanel(table), BuBorderLayout.SOUTH);
- panel.add(center);
- btCalcul.setAlignmentX(1f);
- btCalcul.setAlignmentY(0f);
- panel.add(btCalcul);
-
- btCalcul.addActionListener(new ActionListener() {
-
- public void actionPerformed(final ActionEvent _event) {
- final BuGlassPaneStop stop = new BuGlassPaneStop();
- dial.setGlassPane(stop);
- stop.setVisible(true);
- new CtuluTaskOperationGUI(impl_, CtuluLibString.EMPTY_STRING) {
-
- @Override
- public void act() {
- model.apply(new ProgressionBuAdapter(this), impl_);
- BuLib.invokeLater(new Runnable() {
- public void run() {
- TrPostProjet.this.setProjectModified();
- stop.setVisible(false);
- dial.getRootPane().remove(stop);
- }
-
- });
- }
- }.start();
- }
- });
- dial.afficheDialogModal();
- }
-
- private void updatePaletteMin(final TrPostSource _src) {
- final TrPostMinPaletteTableModel model = _src.getMinPaletteModel();
- final BuTable table = new BuTable(model);
- final CtuluDialogPanel pnDial = new CtuluDialogPanel() {
-
- @Override
- public void apply() {
- if (table.isEditing()) {
- table.getCellEditor().stopCellEditing();
- }
- model.apply();
- }
};
+ EventQueue.invokeLater(r);
- final TableColumn col0 = table.getColumnModel().getColumn(0);
- col0.setMaxWidth(20);
- col0.setCellRenderer(new CtuluCellBooleanRenderer());
- pnDial.setLayout(new BuVerticalLayout(2, true, true));
- pnDial.addLabel(TrResource
- .getS("Activer et pr\xE9ciser les valeurs minimales \xE0 utiliser par d\xE9faut pour les palettes"));
- pnDial.add(new BuScrollPane(table));
- pnDial.afficheModale(impl_.getFrame(), TrResource.getS("Valeurs par d\xE9faut pour les palettes"));
-
}
- // TrPostInspectorReader createWatcher(final TrPostSource _src) {
- // return _src.createWatcher(this, true);
- // }
-
- boolean openSrcDataAndIsModified(final CtuluUI _ui, final ProgressionInterface _prog) {
- return new TrPostProjetSaver(this).openSrcDataAndIsModified(_ui, _prog);
- }
-
- public void save(final CtuluUI _ui, final ProgressionInterface _prog) {
- new TrPostProjetSaver(this).save(_ui, _prog);
- }
-
/**
* Methode qui qctive l'internalFrame layout.
*/
@@ -937,9 +441,9 @@
final CtuluAnalyze ana = new CtuluAnalyze();
_destGrid.computeBord(_prog, ana);
getImpl().manageAnalyzeAndIsFatal(ana);
- final TrPostSourceProjected projection = new TrPostSourceProjected(_src, _src.getAvailableVar(), _destGrid, null,
- _src.isRubar(), false, getImpl());
- projection.openDatas(_prog, null, null, getImpl());
+ final TrPostSourceProjected projection = new TrPostSourceProjected(_src, _destGrid, null, _src.isRubar(), false,
+ getImpl());
+ projection.openDatas(_prog, null, getImpl());
projection.buildDefaultVectors();
// creation du postprojet
@@ -953,7 +457,7 @@
// -- ajout des infos de cr\xE9ation --//
// TODO centralise tout cela
// \xFC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- TrPostSourceAbstractFromIdx.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, projection);
+ TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, projection);
pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, projection.getTitle());
// creation de l internalframe qui contient le panel de visu
@@ -1019,6 +523,20 @@
}
/**
+ * ajout obligatoire d un graphe.
+ *
+ * @param pn
+ * @param calque
+ */
+ private void addEbliNode(final EGFillePanel pn, final TrPostVisuPanel calque) {
+ if (calque != null) {
+ addGrapheNodeInCurrentScene(pn, formatInfoSource(calque.getSource()));
+ } else {
+ addGrapheNodeInCurrentScene(pn, "profil spatial");
+ }
+ }
+
+ /**
* refonte de addFille qui ajoute des widgets
*/
public void addFille(final TrPostCourbeTreeModel _model, final String _titre, final ProgressionInterface _prog,
@@ -1030,23 +548,15 @@
addEbliNode(new FudaaGrapheTimeAnimatedVisuPanel(graphe), calque);
}
- /**
- * ajout obligatoire d un graphe.
- *
- * @param pn
- * @param calque
- */
- private void addEbliNode(final EGFillePanel pn, final TrPostVisuPanel calque) {
- if (calque != null) addGrapheNodeInCurrentScene(pn, formatInfoSource(calque.getSource()));
- else addGrapheNodeInCurrentScene(pn, "profil spatial");
- }
-
public void addGrapheNodeInCurrentScene(final EGFillePanel _pn, final String _desc) {
final EbliNode nodeG = new EbliNodeDefault();
- EbliWidgetCreatorGraphe creator = new EbliWidgetCreatorGraphe(_pn);
+ final EbliWidgetCreatorGraphe creator = new EbliWidgetCreatorGraphe(_pn);
nodeG.setCreator(creator);
- if (_desc == null) nodeG.setTitle("Graphe " + idxFilleG_++);
- else nodeG.setTitle("Graphe " + (idxFilleG_++) + ":" + _desc);
+ if (_desc == null) {
+ nodeG.setTitle("Graphe " + idxFilleG_++);
+ } else {
+ nodeG.setTitle("Graphe " + (idxFilleG_++) + ":" + _desc);
+ }
creator.setPreferredSize(new Dimension(600, 400));
creator.setPreferredLocation(new Point(20, 20));
@@ -1054,14 +564,16 @@
public void run() {
// Ajout du node dans la scene
- TrPostLayoutFille currentLayoutFilleOrFirst = getImpl().getCurrentLayoutFilleOrFirst();
- Widget addNode = currentLayoutFilleOrFirst.addNode(nodeG);
+ final TrPostLayoutFille currentLayoutFilleOrFirst = getImpl().getCurrentLayoutFilleOrFirst();
+ final Widget addNode = currentLayoutFilleOrFirst.addNode(nodeG);
_pn.getGraphe().restore();
- if (_desc != null) nodeG.setDescription(_desc);
+ if (_desc != null) {
+ nodeG.setDescription(_desc);
+ }
currentLayoutFilleOrFirst.getScene().setSelectedObjects(Collections.emptySet());
// -- ajout syst\xE9matique de la legende associee --//
- EbliWidgetControllerGraphe controller = (EbliWidgetControllerGraphe) nodeG.getWidget().getIntern()
+ final EbliWidgetControllerGraphe controller = (EbliWidgetControllerGraphe) nodeG.getWidget().getIntern()
.getController();
controller.ajoutLegende();
@@ -1072,183 +584,217 @@
}
+ /**
+ * Permet d ajouter une source dans le projet afin de gerer le multi source. On doit toujorus passer par cette methode
+ * pour ajouter une source.
+ *
+ * @param _src
+ */
+ public void ajouterSource(final TrPostSource _src) {
+ ajouterSource(_src, null);
+ }
+
+ public void ajouterSource(final TrPostSource _src, final String title) {
+ _src.addVariableListener(new VariableListener());
+ if (_src.getFiles() == null || !sources_.isOneSourceLoaded(_src.getFiles())) {
+ sources_.addSource(_src);
+ // listeSrc_.add(_src);
+ _src.buildDefaultVarUpdateLists();
+
+ // -- ajout du menu correspondant uniquement a partir de la 2eme
+ // --//
+ // if (listeSrc_.size()>1 || (menuPost_!=null &&))
+ if (!EventQueue.isDispatchThread()) {
+ EventQueue.invokeLater(new Runnable() {
+
+ public void run() {
+ ajouteMenu(_src, title);
+ }
+ });
+ } else {
+ ajouteMenu(_src, title);
+ }
+
+ } else {
+ // -- messqge d erreur: le fichier est deja ouvert --//
+ new BuDialogMessage(impl_.getApp(), impl_.getInformationsSoftware(), "Le fichier est deja ouvert.").activate();
+
+ }
+ // -- notify aux observers --//
+ this.notifyObservers();
+
+ }
+
+ private void ajouteMenu(final TrPostSource _src, final String title) {
+ construitMenuPostSpecifiqueSource(_src, title);
+ }
+
protected void buildTimeUpdater() {
if (timeUpdater_ == null) {
timeUpdater_ = new TimeContentUpdater();
timeUpdater_.updateAll();
- // TODO a continuer
- // getSource().getTimeListModel().addListDataListener(timeUpdater_);
}
}
- protected Runnable getRunnableForVisu(final Runnable _other, final TrPostLayoutFille _fille) {
- return new Runnable() {
- public void run() {
+ public void changedMainFrameState() {
+ // getImpl().getFrame().setTitle(
+ // "Post " + CtuluLibString.ESPACE +
+ // FuLib.reducedPath(src_.getFile().getAbsolutePath())
+ // + (isModified() ? " *" : CtuluLibString.EMPTY_STRING));
+ }
- // -- ajout de la frame layout
- impl_.addInternalFrame(_fille);
+ /**
+ * Ferme le projet.
+ */
+ public final void close() {
+ sources_.closeAll();
+ // src_.close();
+ final Runnable runnable = new Runnable() {
- // fille_.restaurer();
- if (_other != null) {
- _other.run();
+ public void run() {
+ final JMenu menu = impl_.getMainMenuBar().getMenu("Post");
+ if (menu != null) {
+ impl_.getMainMenuBar().remove(menu);
+ // menu.removeAll();
}
- // fille_.getArbreCalqueModel().getObservable().addObserver(
- // modifyState_)
- // ;
- _fille.getVisuPanel().getArbreCalqueModel().getObservable().addObserver(modifyState_);
+ final JInternalFrame[] frames = impl_.getAllInternalFrames();
+ if (frames != null) {
+ impl_.removeInternalFrames(frames);
+ }
+ impl_.getFrame().setTitle(impl_.getInformationsSoftware().name);
}
};
- }
+ BuLib.invokeNow(runnable);
- protected void setProjectModified() {
- if (modifyState_ != null) {
- modifyState_.setModified();
- }
}
/**
- * performed d action pour toutes les simulations charg\xE9es. compl\xE9xit\xE9 de l algo: lin\xE9aire Cette methode est robuste
- * en cas de suppression de sources et donc de menus.
+ * Ouvre une interface permettant de comparer 2 source entre elles.
*/
- public void actionPerformed(final ActionEvent _event) {
- final String commandeBrute = _event.getActionCommand();
+ public void compareWith(final TrPostSource sourceSelectionnee) {
+ final CtuluTaskDelegate task = getImpl().createTask(TrPostSourceComparatorBuilder.getComparaisonTitle());
+ // final ProgressionInterface prog = task.getStateReceiver();
+ final TrPostSource toProject = getChooserMultiSources(-1);
+ final Runnable r = new Runnable() {
- // i indique le numero de la simulation
- for (int i = 0; i < getlisteSousMenuProjets_().size(); i++) {
-
- // --recuperation de la liste des sousmenu de la simulation i --//
- final ArrayList<BuMenuItem> listeSousMenus = getlisteSousMenuProjets_().get(i);
- final TrPostSource source = getSource(i);
- // -- on recherche si l action provient d un des fils --//
- for (int j = 0; j < listeSousMenus.size(); j++) {
- final BuMenuItem item = listeSousMenus.get(j);
-
- // -- on essaie de matcher a la fois la commande et l objet pour
- // savoir si c est le bon --//
- // -- si une clause du if est v\xE9rifi\xE9 alors on gere la
- // simulation i
- // --//
- if ("COMPUTE_EXTREMA".equals(commandeBrute) && item.equals(_event.getSource())) {
-
- FuLog.debug("je fais partie de la simulation " + i);
- showExtremum(i);
- } else if ("PALETTE_DEFAULT".equals(commandeBrute) && item.equals(_event.getSource())) {
- updatePaletteMin(source);
- } else if ("TIME_FORMAT".equals(commandeBrute) && item.equals(_event.getSource())) {
- TrPostTimeFmtPanel.updateTimeStepFmt(source, getImpl().getFrame());
- } else {
-
- if ("VARIABLES".equals(commandeBrute) && item.equals(_event.getSource())) {
- TrPostDataCreationPanel.activeVarFrame(source, getImpl());
- } else if ("EXPORTDATA".equals(commandeBrute) && item.equals(_event.getSource())) {
- TrPostVisuPanel.startExport(getImpl(), source, null, null);
- } else if ("COMPARE".equals(commandeBrute) && item.equals(_event.getSource())) {
- compareWith(source);
- }
- }
+ public void run() {
+ TrPostSourceComparatorBuilder.activeComparaison(sourceSelectionnee, toProject, EfLib.isDiffQuick(
+ sourceSelectionnee.getGrid(), toProject.getGrid()), TrPostProjet.this);
}
- }
+ };
+ task.start(r);
}
/**
- * @param _impl l'implementation parente
+ * Construit un menu specifique a la source choisie. A chaque fois que l on ajoute une source au projet, il faut
+ * ajouter un menu sp\xE9cifique.
+ *
+ * @param _src
*/
- public void active(final TrPostCommonImplementation _impl) {
- impl_ = _impl;
- // pour mettre a jour le receveur d'evt
- impl_.getUndoCmdListener();
+ public void construitMenuPostSpecifiqueSource(final TrPostSource _src, final String title) {
- modifyState_.updateFrameState();
- if (isModified()) {
- _impl.setMainMessageAndClear(TrResource
- .getS("Le fichier des r\xE9sultats a \xE9t\xE9 modifi\xE9: la base de donn\xE9es a \xE9t\xE9 mise \xE0 jour"));
+ BuMenu menuSimul = null;
+ final int nb = sources_.getSrcSize();
+ if (title == null) {
+ menuSimul = new BuMenu((nb) + ". " + formatFichier(_src.getFiles().iterator().next()), "SIMULATION" + (nb));
+ } else {
+ menuSimul = new BuMenu((nb) + ". " + _src.getTitle(), "SIMULATION" + (nb));
}
+ // -- ajout du menu au menu post --//
+ getMenuPost().add(menuSimul);
- // -- lancement du thread d'ouverture du layout avec els widgets calque
- // TODO pourquoi faire un thread pour des operation graphiques
- // !!!!!!!!!!!!!!!!!!!!!!!!
- // new CtuluTaskOperationGUI(impl_,
- // TrResource.getS("Ouverture vue 2D...")) {
+ // -- sauvegarde d une trace du menu dans la liste pour une suppression
+ // ulterieure --//
+ getlisteMenuProjets_().add(menuSimul);
- Runnable r = new Runnable() {
+ final ArrayList<BuMenuItem> listSousMenus = getSousMenusSpecifiqueSource(_src, menuSimul);
+ // -- ajout de la sous liste de menus pour la garder en memoire --//
+ getlisteSousMenuProjets_().add(listSousMenus);
- public void run() {
+ }
- // -- si il y a deja une source de pr\xE9charg\xE9e --//
- if (listeSrc_.size() > 0) {
- final TrPostLayoutFille filleLayout = new TrPostLayoutFille(TrPostProjet.this);
- // -- creation d une instance de la legende du calque --//
- final CalqueLegendeWidgetAdapter legendeCalque = new CalqueLegendeWidgetAdapter(filleLayout.getScene(), null);
+ /**
+ * Cree une nouvelle fenetre dans le post contenant son jeu de layouts
+ */
+ public TrPostLayoutFille createNewLayoutFrame() {
- final TrPostSource source = listeSrc_.get(0);
- final TrPostVisuPanel pnVisu = source.buildVisuPanel(TrPostProjet.this, legendeCalque);
+ final int indiceNbframes = impl_.getAllLayoutFille().size() + 1;
- // -- ajout des infos de cr\xE9ation --//
- // TODO Adrien centralise tout cela
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // c'est la source qui doit donner ces info: modifier
- // TrPostSource !
- TrPostSourceAbstractFromIdx.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, source);
+ final TrPostLayoutFille newLayoutFille = new TrPostLayoutFille(this);
+ newLayoutFille.setTitle(newLayoutFille.getTitle() + " N\xB0 " + indiceNbframes);
- // -- ajout du visuPanel au layout --//
- final Point location = pnVisu.getLocation();
- location.x += 10;
- location.y += 10;
- filleLayout.addCalque("Calque " + (filleLayout.getScene().getAllVue2d().size() + 1), location, pnVisu
- .getPreferredSize(), pnVisu, legendeCalque);
+ // addFillesLayout(newLayoutFille);
+ impl_.addInternalFrame(newLayoutFille);
- // -- decoration de la fille layout --//
- filleLayout.setFrameIcon(EbliResource.EBLI.getToolIcon("lissage"));
+ return newLayoutFille;
+ }
- filleLayout.setClosable(true);
- filleLayout.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+ /**
+ * genere uniquement l id.
+ *
+ * @param name
+ * @return
+ */
+ public String deliverSourceId(final String name) {
+ final String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId("");
- // --ajout dans le post de la frame --//
- impl_.addInternalFrame(filleLayout);
- }
+ return uniqueId;
+ }
- // -- creation du menu POST de base --//
- setMenuPost();
- changedMainFrameState();
- }
- };
- EventQueue.invokeLater(r);
+ /**
+ * Genere et affecte a la source l'id.
+ *
+ * @param src
+ * @return
+ */
+ public String deliverSourceId(final TrPostSource src) {
+ if (src.getId() == null) {
+ final String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId();
+ src.setId(uniqueId);
+ }
+ return src.getId();
}
- public void changedMainFrameState() {
- // getImpl().getFrame().setTitle(
- // "Post " + CtuluLibString.ESPACE +
- // FuLib.reducedPath(src_.getFile().getAbsolutePath())
- // + (isModified() ? " *" : CtuluLibString.EMPTY_STRING));
+ public String formatFichier(final File file) {
+ if (file == null) { return ""; }
+ final String nomFichier = file.getAbsolutePath();
+ return nomFichier;
}
/**
- * Ferme le projet.
+ * methode qui formatte les infos de la source
+ *
+ * @param _src
+ * @return
*/
- public final void close() {
- for (final TrPostSource src : listeSrc_) {
- src.close();
+ public String formatInfoSource(final TrPostSource _src) {
+ // --ajout dans la liste des titres --//
+ final Collection<File> files = _src.getFiles();
+ if (!TrPostSourcesManager.isAsuiteCalcul(_src)) {
+ return formatName(_src.getTitle()) + " | Fichier: " + formatFichier(files.iterator().next());
+ } else {
+
+ // String listeFiles="";
+ // for(File f:files)
+ // listeFiles+="| "+f.getName();
+ return _src.getTitle();// + listeFiles;
}
- // src_.close();
- final Runnable runnable = new Runnable() {
+ }
- public void run() {
- final JMenu menu = impl_.getMainMenuBar().getMenu("Post");
- if (menu != null) {
- impl_.getMainMenuBar().remove(menu);
- // menu.removeAll();
- }
- final JInternalFrame[] frames = impl_.getAllInternalFrames();
- if (frames != null) {
- impl_.removeInternalFrames(frames);
- }
- impl_.getFrame().setTitle(impl_.getInformationsSoftware().name);
- }
- };
- BuLib.invokeNow(runnable);
+ /**
+ * formatte le titre
+ *
+ * @param file
+ * @return
+ */
+ public String formatName(String title) {
+ // --suppression des trop long espaces du titre --//
+ title = title.replaceAll(" ", "");
+
+ return title;
}
/**
@@ -1256,31 +802,48 @@
*
* @return
*/
- String[] formattageDonnees() {
- return this.formattageDonnees(false);
+ public String[] getListSources() {
+ return this.getListSources(false);
}
- String[] formattageDonnees(final boolean proposeNewDAtaFirst) {
+ public String[] getListSources(final boolean proposeNewDAtaFirst) {
String[] listeSimul;
int cpt = 0;
+ final int nb = sources_.getSrcSize();
if (proposeNewDAtaFirst) {
- listeSimul = new String[listeSrc_.size() + 1];
+ listeSimul = new String[nb + 1];
listeSimul[cpt++] = TrResource.getS("Ajouter un nouveau projet");
- } else listeSimul = new String[listeSrc_.size()];
+ } else {
+ listeSimul = new String[nb];
+ }
- for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) {
-
- final TrPostSource src = it.next();
-
- // --ajout dans la liste des titres --//
- listeSimul[cpt++] = formatInfoSource(src);
+ for (int i = 0; i < nb; i++) {
+ listeSimul[cpt++] = formatInfoSource(sources_.getSource(i));
}
return listeSimul;
}
/**
+ * Retourne toutes les sources qui sont des composites
+ *
+ * @return
+ */
+ public List<TrPostSourceFromReader> getAllCCompositeSource() {
+ return sources_.getAllCCompositeSource();
+ }
+
+ /**
+ * Retourne toutes les sources qui ne sont pas des composites
+ *
+ * @return
+ */
+ public List<TrPostSource> getAllClassicalSource() {
+ return sources_.getAllClassicalSource();
+ }
+
+ /**
* retourne un chooser avec tous les multi sources et un bouton pour ajouter un nouveau projet.
*
* @return
@@ -1289,27 +852,30 @@
BuDialogChoice dialog = null;
// -- recuperation de la liste des src sous forme de liste --//
- final String[] values = formattageDonnees(true);
+ final String[] values = getListSources(true);
// --construction graphique --//
dialog = new BuDialogChoice(impl_.getApp(), impl_.getInformationsSoftware(),
TrResource.getS("S\xE9lection du projet"), TrResource.getS("S\xE9lectionnez le jeux de donn\xE9es "), values);
dialog.setSize(400, 250);
// -- on indice au choix +1 car on a le choix creation au debut --//
- if (indiceChoix != -1) dialog.getChValeur().setSelectedIndex(indiceChoix + 1);
+ if (indiceChoix != -1) {
+ dialog.getChValeur().setSelectedIndex(indiceChoix + 1);
+ }
dialog.setModal(true);
// dialog.setTitle(TrResource.getS("Choix du projet"));
if (dialog.activate() == 0) {
final int reponse = dialog.getSelectedIndex();
- if (reponse == -1) impl_.error(TrResource.getS("Il faut choisir un projet"));
- else if (reponse == 0) {
+ if (reponse == -1) {
+ impl_.error(TrResource.getS("Il faut choisir un projet"));
+ } else if (reponse == 0) {
// -- ouverture d un nouveau projet --//
new TrPostActionOpenSrc(this).actionPerformed(null);
// -- on retourne le dernier projet ouvert --//
// return getSource(listeSrc_.size() - 1);
impl_.message(TrResource.getS("Projet charg\xE9, il est d\xE9sormais disponible"));
- return getChooserMultiSources(listeSrc_.size() - 1);
+ return getChooserMultiSources(sources_.getSrcSize() - 1);
} else {
return getSource(reponse - 1);
@@ -1319,27 +885,69 @@
return null;
}
- /**
- * Ouvre une interface permettant de comparer 2 source entre elles.
- */
- public void compareWith(final TrPostSource sourceSelectionnee) {
- final CtuluTaskDelegate task = getImpl().createTask(TrPostSourceComparatorBuilder.getComparaisonTitle());
- // final ProgressionInterface prog = task.getStateReceiver();
- final TrPostSource toProject = getChooserMultiSources(-1);
- final Runnable r = new Runnable() {
+ // TrPostInspectorReader createWatcher(final TrPostSource _src) {
+ // return _src.createWatcher(this, true);
+ // }
+ public final TrPostCommonImplementation getImpl() {
+ return impl_;
+ }
+
+ public List<BuMenu> getlisteMenuProjets_() {
+ if (listeMenuProjets_ == null) {
+ listeMenuProjets_ = new ArrayList<BuMenu>();
+ }
+ return listeMenuProjets_;
+ }
+
+ public List<ArrayList<BuMenuItem>> getlisteSousMenuProjets_() {
+ if (listeSousMenuProjets_ == null) {
+ listeSousMenuProjets_ = new ArrayList<ArrayList<BuMenuItem>>();
+ }
+ return listeSousMenuProjets_;
+ }
+
+ public TrPostPersistenceManager getManager() {
+ if (manager_ == null) {
+ manager_ = new TrPostPersistenceManager(this);
+ }
+
+ return manager_;
+ }
+
+ public BuMenu getMenuPost() {
+ if (menuPost_ == null) {
+ menuPost_ = new BuMenu(TrResource.getS("Post"), "POST");
+ }
+ return menuPost_;
+ }
+
+ public observableSupport getObservable() {
+ if (observable == null) {
+ observable = new observableSupport();
+ }
+ return observable;
+ }
+
+ protected Runnable getRunnableForVisu(final Runnable _other, final TrPostLayoutFille _fille) {
+ return new Runnable() {
public void run() {
- TrPostSourceComparatorBuilder.activeComparaison(sourceSelectionnee, toProject, EfLib.isDiffQuick(
- sourceSelectionnee.getGrid(), toProject.getGrid()), TrPostProjet.this);
+
+ // -- ajout de la frame layout
+ impl_.addInternalFrame(_fille);
+
+ // fille_.restaurer();
+ if (_other != null) {
+ _other.run();
+ }
+ // fille_.getArbreCalqueModel().getObservable().addObserver(
+ // modifyState_)
+ // ;
+ _fille.getVisuPanel().getArbreCalqueModel().getObservable().addObserver(modifyState_);
}
};
- task.start(r);
}
- public final TrPostCommonImplementation getImpl() {
- return impl_;
- }
-
/**
* retourne la source de la liste des sources
*
@@ -1347,94 +955,289 @@
* @return
*/
public TrPostSource getSource(final int i) {
- if (i >= 0 && i < listeSrc_.size()) return listeSrc_.get(i);
- else return null;
+ return sources_.getSource(i);
}
+ public TrPostSourcesManager getSources() {
+ return sources_;
+ }
+
/**
- * Genere et affecte a la source l'id.
+ * Cree la liste des menu items sp\xE9cifiques au fichier source charg\xE9.
*
- * @param src
+ * @param _src
+ * @param menuSimul
* @return
*/
- public String deliverSourceId(TrPostSource src) {
- // String idString = src.getFiles().iterator().next().getName();
- if (src.getId() == null) {
+ public ArrayList<BuMenuItem> getSousMenusSpecifiqueSource(final TrPostSource _src, final BuMenu menuSimul) {
+ final ArrayList<BuMenuItem> listSousMenus = new ArrayList<BuMenuItem>();
- String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId();
- src.setId(uniqueId);
- }
- // else {
- //
- // // -- on teste si l'id de base est 'parlant' => contient le nom du
- // ficheir --//
- // // String nameFormate = FuLib.clean(idString);
- // String id = src.getId();
- // if (!id.startsWith(nameFormate)) {
- // String uniqueId =
- // CtuluLibGenerator.getInstance().deliverUniqueStringId(idString);
- // src.setId(uniqueId);
- // }
- //
- // }
- return src.getId();
+ final BuIcon ic = BuResource.BU.getIcon("aucun");
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Extrema..."), "COMPUTE_EXTREMA", ic, TrPostProjet.this));
+ final BuMenuItem item = new BuMenuItem();
+
+ listSousMenus.add(menuSimul.addMenuItem(CtuluLib.getS("Editer les variables..."), "VARIABLES", ic,
+ TrPostProjet.this));
+ menuSimul.addSeparator();
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Palettes de couleurs"), "PALETTE_DEFAULT", ic,
+ TrPostProjet.this));
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Formater/modifier les pas de temps..."), "TIME_FORMAT",
+ ic, TrPostProjet.this));
+
+ menuSimul.addSeparator();
+
+ listSousMenus.add(menuSimul.addMenuItem(new TrPostBuilderSuiteCalcul.ActionBuildSuite(_src, TrResource
+ .getS("Suite de calcul"), EbliResource.EBLI.getIcon(""), "SUITECALCUL", TrPostProjet.this)));
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Comparer..."), "COMPARE", ic, TrPostProjet.this));
+ listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
+ TrResource.getS("Comparer les r\xE9sultats avec ceux d'un autre projet"));
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Projeter..."), "PROJECT", ic, TrPostProjet.this));
+ listSousMenus.get(listSousMenus.size() - 1).setToolTipText(
+ TrResource.getS("Projeter les r\xE9sultats sur un maillage diff\xE9rent"));
+
+ menuSimul.addSeparator();
+
+ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Exporter"), "EXPORTDATA", TrPostProjet.this));
+ _src.addSpecificItemInMainMenu(menuSimul, getImpl());
+ return listSousMenus;
}
- //
- // public String deliverSourceSuiteId(TrPostSource src) {
- // String idString = src.getTitle();
- // if (src.getId() == null) {
- //
- // String uniqueId =
- // CtuluLibGenerator.getInstance().deliverUniqueStringId(idString);
- // src.setId(uniqueId);
- // } else {
- //
- // // -- on teste si l'id de base est 'parlant' => contient le nom du
- // ficheir --//
- // String nameFormate = FuLib.clean(idString);
- // String id = src.getId();
- // if (!id.startsWith(nameFormate)) {
- // String uniqueId =
- // CtuluLibGenerator.getInstance().deliverUniqueStringId(idString);
- // src.setId(uniqueId);
- // }
- //
- // }
- // return src.getId();
- //
- // }
+ public boolean isModified() {
+ return modifyState_.isModified();
+ }
+ public void notifyObservers() {
+ // getObservable().setChanged();
+
+ getObservable().notifyObservers();
+
+ }
+
+ boolean openSrcDataAndIsModified(final CtuluUI _ui, final ProgressionInterface _prog) {
+ return new TrPostProjetSaver(this).openSrcDataAndIsModified(_ui, _prog);
+ }
+
/**
- * genere uniquement l id.
+ * creation de courbe spatiale
+ */
+ public v...
[truncated message content] |