From: <bma...@us...> - 2008-11-12 10:11:52
|
Revision: 4203 http://fudaa.svn.sourceforge.net/fudaa/?rev=4203&view=rev Author: bmarchan Date: 2008-11-12 10:11:48 +0000 (Wed, 12 Nov 2008) Log Message: ----------- Created tag FudaaModeleur_0_07. Added Paths: ----------- tags/FudaaModeleur_0_07/ tags/FudaaModeleur_0_07/fudaa_devel/ tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Removed Paths: ------------- tags/FudaaModeleur_0_07/fudaa_devel/ tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Property changes on: tags/FudaaModeleur_0_07 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-11-12 09:53:38 UTC (rev 4201) +++ tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-11-12 10:11:48 UTC (rev 4203) @@ -1,698 +0,0 @@ -/* - * @creation 7 juin 07 - * @modification $Date: 2008/05/13 12:10:12 $ - * @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.EventQueue; -import java.awt.Point; -import java.awt.event.ActionEvent; -import java.beans.PropertyVetoException; -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.List; - -import javax.swing.Action; -import javax.swing.JComponent; -import javax.swing.JInternalFrame; -import javax.swing.JOptionPane; -import javax.swing.filechooser.FileFilter; - -import org.fudaa.ctulu.CtuluExportDataInterface; -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibFile; -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.CtuluHelpComponent; -import org.fudaa.ctulu.gui.CtuluLibDialog; -import org.fudaa.ebli.calque.ZEbliFilleCalques; -import org.fudaa.ebli.commun.EbliActionMap; -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.aide.FudaaHelpPanel; -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.FudaaSaveZipLoader; -import org.fudaa.fudaa.sig.FSigLib; -import org.fudaa.fudaa.sig.FSigProjectPersistence; -import org.fudaa.fudaa.sig.FSigResource; -import org.fudaa.fudaa.tr.TrLauncherDefault; -import org.fudaa.fudaa.tr.common.TrProjectImportPanel; -import org.fudaa.fudaa.tr.common.TrProjectPersistence; -import org.fudaa.fudaa.tr.common.TrResource; - -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: MdlImplementation.java,v 1.1.2.9 2008/05/13 12:10:12 bmarchan Exp $ - */ -public class MdlImplementation extends FudaaCommonImplementation implements FudaaProjectStateListener { - - protected static BuInformationsSoftware isMdl_ = new BuInformationsSoftware(); - static { - isMdl_.name = "Modeleur"; - isMdl_.version = "0.07"; - isMdl_.date = "2008-11-06"; - isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2008"; - 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_; - } - - MdlFille2d currentFrame_; - MdlProjet project_; - public final static FileFilter FILTER = new MdlFileFilter(); - - public MdlImplementation() { - super(); - useNewHelp_ = false; - } - - 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() { - FuLog.trace("Project state change"); - - 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); - } - - void createNewInternalFrame(/*boolean _add*/) { - currentFrame_ = new MdlFille2d(this); - /*if (_add) */addInternalFrame(currentFrame_); - } - - 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 { - currentFrame_.setClosed(true); - } catch (PropertyVetoException _evt) { - FuLog.error(_evt); - - } - removeInternalFrames(getAllInternalFrames()); -// removeInternalFrame(currentFrame_); - getMainMenuBar().repaint(); - project_ = null; - } - - protected void createProject(final boolean _add) { - project_ = new MdlProjet(); - project_.setOpening(true); - if (_add) createNewInternalFrame(); - else ((MdlVisuPanel)currentFrame_.getVisuPanel()).initCalques(false); - project_.install(this); - BuLib.invokeLater(new Runnable() { - - public void run() { - project_.setOpening(false); -// changeSaveActions(false); - updateActionsState(); - project_.setSaved(); - getMainMenuBar().repaint(); - } - }); - } - - 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; - } - - public void create() { - saveAndCloseProjet(new Runnable() { - public void run() { - createProject(true); - } - }); - } - - public void close() { - saveAndCloseProjet(null); - updateActionsState(); - } - - protected String getAideIndexUrl() { - return getHelpDir() + "modeleur/index.html"; - } - - public BuPreferences getApplicationPreferences() { - return null; - } - - public BuInformationsSoftware getInformationsSoftware() { - return informationsSoftware(); - } - - /** - * Ouvre 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 { - r = FudaaSaveLib.restoreFille(MdlImplementation.this, currentFrame_, _proj, f); - project_.setParamFile(f); - - } finally { - - final Runnable swingRun = r; - BuLib.invokeLater(new Runnable() { - - public void run() { - try { - addInternalFrame(currentFrame_); - if (swingRun != null) swingRun.run(); - - // 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(); - } - - 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(); - } - - 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"))) { - FudaaSaveZipLoader loader = null; - try { - loader = pn.getLoader(); - final FudaaSaveZipLoader finalLoader = loader; - 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, currentFrame_, createTask.getStateReceiver(), finalLoader); -// } -// }); - } 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(); - - } - }; - } - - /** - * Methode surcharg\xE9e pour les panneau de pr\xE9f\xE9rence. - */ - protected void buildPreferences(final List _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); - -/* 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_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (from rev 4202, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java) =================================================================== --- tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (rev 0) +++ tags/FudaaModeleur_0_07/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-11-12 10:11:48 UTC (rev 4203) @@ -0,0 +1,698 @@ +/* + * @creation 7 juin 07 + * @modification $Date: 2008/05/13 12:10:12 $ + * @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.EventQueue; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.beans.PropertyVetoException; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.List; + +import javax.swing.Action; +import javax.swing.JComponent; +import javax.swing.JInternalFrame; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileFilter; + +import org.fudaa.ctulu.CtuluExportDataInterface; +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibFile; +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.CtuluHelpComponent; +import org.fudaa.ctulu.gui.CtuluLibDialog; +import org.fudaa.ebli.calque.ZEbliFilleCalques; +import org.fudaa.ebli.commun.EbliActionMap; +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.aide.FudaaHelpPanel; +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.FudaaSaveZipLoader; +import org.fudaa.fudaa.sig.FSigLib; +import org.fudaa.fudaa.sig.FSigProjectPersistence; +import org.fudaa.fudaa.sig.FSigResource; +import org.fudaa.fudaa.tr.TrLauncherDefault; +import org.fudaa.fudaa.tr.common.TrProjectImportPanel; +import org.fudaa.fudaa.tr.common.TrProjectPersistence; +import org.fudaa.fudaa.tr.common.TrResource; + +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: MdlImplementation.java,v 1.1.2.9 2008/05/13 12:10:12 bmarchan Exp $ + */ +public class MdlImplementation extends FudaaCommonImplementation implements FudaaProjectStateListener { + + protected static BuInformationsSoftware isMdl_ = new BuInformationsSoftware(); + static { + isMdl_.name = "Modeleur"; + isMdl_.version = "0.07"; + isMdl_.date = "2008-11-12"; + isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2008"; + 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_; + } + + MdlFille2d currentFrame_; + MdlProjet project_; + public final static FileFilter FILTER = new MdlFileFilter(); + + public MdlImplementation() { + super(); + useNewHelp_ = false; + } + + 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() { + FuLog.trace("Project state change"); + + 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); + } + + void createNewInternalFrame(/*boolean _add*/) { + currentFrame_ = new MdlFille2d(this); + /*if (_add) */addInternalFrame(currentFrame_); + } + + 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 { + currentFrame_.setClosed(true); + } catch (PropertyVetoException _evt) { + FuLog.error(_evt); + + } + removeInternalFrames(getAllInternalFrames()); +// removeInternalFrame(currentFrame_); + getMainMenuBar().repaint(); + project_ = null; + } + + protected void createProject(final boolean _add) { + project_ = new MdlProjet(); + project_.setOpening(true); + if (_add) createNewInternalFrame(); + else ((MdlVisuPanel)currentFrame_.getVisuPanel()).initCalques(false); + project_.install(this); + BuLib.invokeLater(new Runnable() { + + public void run() { + project_.setOpening(false); +// changeSaveActions(false); + updateActionsState(); + project_.setSaved(); + getMainMenuBar().repaint(); + } + }); + } + + 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; + } + + public void create() { + saveAndCloseProjet(new Runnable() { + public void run() { + createProject(true); + } + }); + } + + public void close() { + saveAndCloseProjet(null); + updateActionsState(); + } + + protected String getAideIndexUrl() { + return getHelpDir() + "modeleur/index.html"; + } + + public BuPreferences getApplicationPreferences() { + return null; + } + + public BuInformationsSoftware getInformationsSoftware() { + return informationsSoftware(); + } + + /** + * Ouvre 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 { + r = FudaaSaveLib.restoreFille(MdlImplementation.this, currentFrame_, _proj, f); + project_.setParamFile(f); + + } finally { + + final Runnable swingRun = r; + BuLib.invokeLater(new Runnable() { + + public void run() { + try { + addInternalFrame(currentFrame_); + if (swingRun != null) swingRun.run(); + + // 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(); + } + + 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(); + } + + 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"))) { + FudaaSaveZipLoader loader = null; + try { + loader = pn.getLoader(); + final FudaaSaveZipLoader finalLoader = loader; + 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, currentFrame_, createTask.getStateReceiver(), finalLoader); +// } +// }); + } 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(); + + } + }; + } + + /** + * Methode surcharg\xE9e pour les panneau de pr\xE9f\xE9rence. + */ + protected void buildPreferences(final List _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); + +/* 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); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-11-12 13:33:46
|
Revision: 4209 http://fudaa.svn.sourceforge.net/fudaa/?rev=4209&view=rev Author: bmarchan Date: 2008-11-12 13:33:41 +0000 (Wed, 12 Nov 2008) Log Message: ----------- A nouveau tag FudaaModeleur_0_07 (apr?\195?\168s qq pb de distribution). Added Paths: ----------- tags/FudaaModeleur_0_07/ tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal_descendre.png tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal_monter.png tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java Removed Paths: ------------- tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal22_descendre.png tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal22_monter.png tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java Property changes on: tags/FudaaModeleur_0_07 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal22_descendre.png =================================================================== (Binary files differ) Deleted: tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal22_monter.png =================================================================== (Binary files differ) Copied: tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal_descendre.png (from rev 4207, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/crystal_descendre.png) =================================================================== (Binary files differ) Copied: tags/FudaaModeleur_0_07/fudaa_devel/ctulu/src/com/memoire/bu/crystal_monter.png (from rev 4207, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/crystal_monter.png) =================================================================== (Binary files differ) Deleted: tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-11-12 11:02:46 UTC (rev 4206) +++ tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-11-12 13:33:41 UTC (rev 4209) @@ -1,704 +0,0 @@ -/* - * @creation 23 oct. 2008 - * @modification $Date:$ - * @license GNU General Public License 2 - * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail fud...@li... - */ -package org.fudaa.ebli.calque.edition; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.EventObject; - -import javax.swing.AbstractCellEditor; -import javax.swing.BorderFactory; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.SwingConstants; -import javax.swing.UIManager; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.event.TreeModelEvent; -import javax.swing.event.TreeModelListener; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableCellEditor; -import javax.swing.table.TableCellRenderer; - -import org.fudaa.ctulu.CtuluCommandManager; -import org.fudaa.ctulu.gis.GISAttributeConstants; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ctulu.gui.CtuluTable; -import org.fudaa.ebli.calque.BArbreCalqueModel; -import org.fudaa.ebli.calque.ZModelGeometryListener; -import org.fudaa.ebli.calque.ZScene; -import org.fudaa.ebli.calque.ZSelectionEvent; -import org.fudaa.ebli.calque.ZSelectionListener; -import org.fudaa.ebli.commun.BPalettePanelInterface; -import org.fudaa.ebli.commun.EbliLib; - -import com.memoire.bu.BuBorderLayout; -import com.memoire.bu.BuButton; -import com.memoire.bu.BuCheckBox; -import com.memoire.bu.BuComboBox; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuPanel; -import com.memoire.bu.BuResource; -import com.memoire.bu.BuScrollPane; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Cette palette a pour but de permettre de modifier la visibilit\xE9 de toutes les - * g\xE9om\xE9tries. Concr\xE8trement un tableau listant les g\xE9om\xE9tries propose de cocher - * ou d\xE9cocher une checkbox correspondant \xE0 la valeur de visibilit\xE9 de la - * g\xE9om\xE9trie et r\xE9percute imm\xE9diatement le changement effectu\xE9. - * - * De plus deux boutons permettent de changer l'ordre des g\xE9om\xE9tries dans le - * tableau et dans le model les contenant. - * - * @author Emmanuel MARTIN - * @version $Id: BPaletteEditVisibility.java 4172 2008-11-05 14:49:55Z - * emmanuel_martin $ - */ -public class BPaletteEditVisibility extends BuPanel implements ListSelectionListener, ZSelectionListener, ZModelGeometryListener, TreeModelListener, BPalettePanelInterface, ActionListener, ChangeListener { - - /** Calques disponible pour l'utilisateur. */ - protected ZCalqueEditable[] calques_; - /** Models en cours d'\xE9coute. */ - protected ZModeleEditable[] listenModels_; - protected final String allCalquesEntry_=EbliLib.getS("Tous les calques"); - /** - * vrai quand une modification de la selection dans le tableau ou dans le - * calque est en cours. Permet d'\xE9viter des r\xE9cursions \xE0 cause des listeners de - * selections. - */ - protected boolean listenSelection=true; - /** Vrai quand la visibilit\xE9 n'est pas en train d'\xEAtre chang\xE9 par le panel. */ - protected boolean listenVisibility=true; - protected CtuluCommandManager cmd_; - protected ZScene scene_; - // Composants graphiques - protected final BuComboBox calque_; - protected boolean onlyInvisible_; - protected final CtuluTable table_; - protected BuButton btUp_; - protected BuButton btDown_; - - /** - * @param _treeModel - * utile pour avoir connaissance de la cr\xE9ation et de la suppression - * de calque. - * @param _scene - * utile pour l'\xE9coute des selections. - */ - public BPaletteEditVisibility(BArbreCalqueModel _treeModel, ZScene _scene, CtuluCommandManager _cmd){ - cmd_=_cmd; - scene_=_scene; - calques_=new ZCalqueEditable[0]; - listenModels_=new ZModeleEditable[0]; - _treeModel.addTreeModelListener(this); - scene_.addSelectionListener(this); - // Configuration du panel \\ - setLayout(new BuBorderLayout()); - setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - setPreferredSize(new Dimension(210, 350)); - Container headContainer=new Container(); - headContainer.setLayout(new BuBorderLayout(5, 5)); - // Ajout du titre \\ - BuLabel titre=new BuLabel("<html><b>"+EbliLib.getS("Visibilit\xE9")+"</b></html>"); - titre.setHorizontalAlignment(SwingConstants.CENTER); - headContainer.add(titre, BuBorderLayout.NORTH); - // Ajout des composants de configuration \\ - Container config=new Container(); - config.setLayout(new GridLayout(2, 2, 2, 2)); - headContainer.add(config, BuBorderLayout.CENTER); - add(headContainer, BuBorderLayout.NORTH); - // Calque - config.add(new BuLabel(EbliLib.getS("Calque"))); - calque_=new BuComboBox(); - config.add(calque_); - // Only invisible - config.add(new BuLabel(EbliLib.getS("Invisible uniquement"))); - Container cont=new Container(); - cont.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); - BuCheckBox cb=new BuCheckBox("", false); - cont.add(cb); - config.add(cont); - // Ajout du tableau de geom\xE9tries \\ - table_=new CtuluTable(); - table_.getSelectionModel().addListSelectionListener(this); - add(new BuScrollPane(table_), BuBorderLayout.CENTER); - // Ajout des boutons de d\xE9placement des g\xE9om\xE9tries \\ - Container btCont=new Container(); - btCont.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); - btUp_=new BuButton(BuResource.BU.getIcon("crystal22_monter")); - btUp_.setToolTipText(EbliLib.getS("D\xE9cr\xE9menter l'index de la g\xE9om\xE9trie")); - btDown_=new BuButton(BuResource.BU.getIcon("crystal22_descendre")); - btDown_.setToolTipText(EbliLib.getS("Incr\xE9menter l'index de la g\xE9om\xE9trie")); - btUp_.addActionListener(this); - btDown_.addActionListener(this); - btCont.add(btUp_); - btCont.add(btDown_); - add(btCont, BuBorderLayout.SOUTH); - // Ajout des informations \\ - fillCalqueComboBox(); - calque_.addActionListener(this); - cb.addChangeListener(this); - fillTableGeometry(); - updateBtMovement(); - } - - /** - * Le modele de la table qui liste les g\xE9om\xE9tries. Il contient \xE9galement le - * calque d'origine de et l'index de la g\xE9om\xE9trie dans ce calque pour pouvoir - * r\xE9percuter le changement. - * - * @author Emmanuel MARTIN - * @version $Id$ - */ - protected class GeomTableModel extends AbstractTableModel { - - private String[] titreColonnes_; - private Object[][] rows_; - - public GeomTableModel(String[] _titreColonnes, Object[][] _rows){ - if(_titreColonnes.length!=2) - throw new IllegalArgumentException("Il doit y avoir deux titres de colonnes."); - for(int i=0;i<_rows.length;i++) - if(_rows[i].length!=4) - throw new IllegalArgumentException("Au moins une ligne n'a pas exactement 4 informations."); - titreColonnes_=_titreColonnes; - rows_=_rows; - } - - public Class<?> getColumnClass(int columnIndex) { - switch(columnIndex){ - case 0: return String.class; - case 1: return Boolean.class; - default: return null; - } - } - - public int getColumnCount() { - return 2; - } - - public String getColumnName(int columnIndex) { - return titreColonnes_[columnIndex]; - } - - public int getRowCount() { - return rows_.length; - } - - public Object getValueAt(int rowIndex, int columnIndex) { - return rows_[rowIndex][columnIndex]; - } - - public boolean isCellEditable(int rowIndex, int columnIndex) { - return columnIndex==1; - } - - public void setValueAt(Object value, int rowIndex, int columnIndex) { - boolean selected=table_.getSelectionModel().isSelectedIndex(rowIndex); - if(columnIndex==0){ - rows_[rowIndex][columnIndex]=value; - fireTableDataChanged(); - if(selected) - table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); - } - else if(columnIndex==1){ - if (rows_[rowIndex][columnIndex]!=value) { - rows_[rowIndex][columnIndex]=value; - changeVisibility((Integer)rows_[rowIndex][3], (ZModeleEditable)rows_[rowIndex][2], (Boolean)rows_[rowIndex][1]); - // Dans le cas o\xF9 on n'affiche que les g\xE9om\xE9tries invisibles, on - // enl\xE8ve celle qu'on passe \xE0 visible. - if (onlyInvisible_&&((Boolean)rows_[rowIndex][1])==true) { - Object[][] newRows=new Object[rows_.length-1][]; - for (int i=0; i<rowIndex; i++) - newRows[i]=rows_[i]; - for (int i=rowIndex+1; i<rows_.length; i++) - newRows[i-1]=rows_[i]; - rows_=newRows; - fireTableDataChanged(); - if (selected) - table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); - } - } - } - } - } - - protected class GeomTableRenderer implements TableCellRenderer { - public Component getTableCellRendererComponent(JTable _table, Object _value, boolean _isSelected, boolean _hasFocus, int _row, - int _column) { - Color selectionBackground = UIManager.getColor("Table.selectionBackground"); - JPanel pn=new JPanel(); - pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); - if(_isSelected) - pn.setBackground(selectionBackground); - else - pn.setBackground(Color.WHITE); - if (_value instanceof Boolean) { - BuCheckBox cb=new BuCheckBox("", (Boolean)_value); - if(_isSelected) - cb.setBackground(selectionBackground); - else - cb.setBackground(Color.WHITE); - pn.add(cb); - } - else{ - BuLabel lbl =new BuLabel(_value.toString()); - if(_isSelected) - lbl.setBackground(selectionBackground); - else - lbl.setBackground(Color.WHITE); - pn.add(lbl); - } - return pn; - } - } - - protected class GeomTableEditor extends AbstractCellEditor implements TableCellEditor, ChangeListener { - - private boolean value; - /** Compteur d'\xE9v\xE9nement. */ - private int a=1; - - /* (non-Javadoc) - * @see - * javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing - * .JTable, java.lang.Object, boolean, int, int) - */ - public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _isSelected, int _row, int _column) { - value=(Boolean)_value; - JPanel pn=new JPanel(); - pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); - pn.setBackground(Color.WHITE); - BuCheckBox cb=new BuCheckBox("", (Boolean)_value); - cb.addChangeListener(this); - cb.setBackground(Color.WHITE); - pn.add(cb); - return pn; - } - - /* (non-Javadoc) - * @see javax.swing.CellEditor#getCellEditorValue() - */ - public Object getCellEditorValue() { - return value; - } - - public boolean shouldSelectCell(EventObject anEvent){ - return false; - } - - /* (non-Javadoc) - * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) - */ - public void stateChanged(ChangeEvent e) { - value=!value; - // Un hack : il semble que la checkbox envoie 5 \xE9v\xE9nements \xE0 chaque click. - // Pour arr\xEAter l'\xE9dition automatiquement au bout d'un click, on teste sur - // le compteur de click. - if(a==0) - stopCellEditing(); - a=(a+1)%5; - } - } - - /** - * Place dans le comboBox de choix des calques les calques qui peuvent \xEAtre - * choisis ainsi que l'entr\xE9e sp\xE9ciale 'tout les calques'. - */ - protected void fillCalqueComboBox(){ - // Changement du contenu de la comboBox - Object selectedItem=calque_.getSelectedItem(); - calque_.removeAllItems(); - // R\xE9cup\xE9ration des calques - calques_=scene_.getEditableLayers(); - // Ajout des noms dans le comboBox - calque_.addItem(allCalquesEntry_); - for(int i=0;i<calques_.length;i++) - calque_.addItem(calques_[i].getTitle()); - if(selectedItem!=null) - calque_.setSelectedItem(selectedItem); - else - calque_.setSelectedIndex(0); - updateListen(); - } - - /** - * Met \xE0 jour l'\xE9coute des models - */ - protected void updateListen(){ - // Suppression de l'\xE9coute de tout les models - for(int i=0;i<listenModels_.length;i++) - listenModels_[i].removeModelListener(this); - // Mise a jour du tableau de listeners - if(calque_.getSelectedItem()==allCalquesEntry_){ - listenModels_=new ZModeleEditable[calques_.length]; - for(int i=0;i<calques_.length;i++) - listenModels_[i]=calques_[i].getModelEditable(); - } - else{ - boolean found=false; - int i=-1; - while(!found&&++i<calques_.length) - found=calques_[i].getTitle().equals(calque_.getSelectedItem()); - if(found) - listenModels_=new ZModeleEditable[]{calques_[i].getModelEditable()}; - else - listenModels_=new ZModeleEditable[0]; - } - // Ajout de l'\xE9coute de tout les calques - for(int i=0;i<listenModels_.length;i++){ - listenModels_[i].addModelListener(this); - } - } - - /** - * Rempli le tableau avec toutes les g\xE9o\xE9mtries contenus dans le calque - * selectionn\xE9 dans combobox. Si la checkbox indiquant que seules les - * g\xE9om\xE9tries invisibles sont affich\xE9s est coch\xE9, cette restriction est prise - * en compte ici. - * Le model du tableau est r\xE9instanc\xE9, donc la s\xE9l\xE9ction est - * perdu, ce qui peut entrainer un comportement non voulu. Il est donc - * recommand\xE9 de n'utiliser cette m\xE9thode que pour le premier remplissage du - * tableau. - */ - protected void fillTableGeometry(){ - listenSelection=false; - // Remplissage du tableau - ArrayList<Object[]> rows=new ArrayList<Object[]>(); - for(int i=0;i<calques_.length;i++){ - if(calques_[i].getTitle().equals(calque_.getSelectedItem())||calque_.getSelectedItem()==allCalquesEntry_){ - ZModeleEditable model = calques_[i].getModelEditable(); - // Extraction des donn\xE9es utiles - GISZoneCollection zone=model.getGeomData(); - int indexTitre=zone.getIndiceOf(GISAttributeConstants.TITRE); - int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); - if(indexTitre!=-1&&indexVisibility!=-1) - for(int j=0;j<zone.getNbGeometries();j++) - if(!onlyInvisible_||zone.getValue(indexVisibility, j)==GISAttributeConstants.ATT_VAL_FALSE) - if(j<zone.getModel(indexVisibility).getSize()&&j<zone.getModel(indexTitre).getSize()) - rows.add(new Object[]{zone.getValue(indexTitre, j), zone.getValue(indexVisibility, j).equals(GISAttributeConstants.ATT_VAL_TRUE)?true:false, model, scene_.layerId2SceneId(calques_[i], j)}); - } - } - table_.setModel(new GeomTableModel(new String[]{EbliLib.getS("Nom"), EbliLib.getS("Visibilit\xE9")}, rows.toArray(new Object[0][]))); - table_.getColumnModel().getColumn(0).setCellRenderer(new GeomTableRenderer()); - table_.getColumnModel().getColumn(1).setCellRenderer(new GeomTableRenderer()); - table_.getColumnModel().getColumn(1).setPreferredWidth(25); - table_.getColumnModel().getColumn(1).setCellEditor(new GeomTableEditor()); - // Mise \xE0 jour de la selection - updateTableSelection(); - listenSelection=true; - } - - /** - * Cette m\xE9thode effectue un changement de visibilit\xE9 sur la g\xE9om\xE9trie - * indiqu\xE9e en param\xE8tre. - * - * @param _numGeom - * l'index de la g\xE9om\xE9trie dans le calque - * @param _calque - * le calque dans lequel se trouve la g\xE9o\xE9mtrie - * @param _visibility - * la nouvelle valeur de visibilit\xE9 - */ - protected void changeVisibility(int _numGeom, ZModeleEditable _model, boolean _visibility) { - listenVisibility=false; - GISZoneCollection zone=_model.getGeomData(); - int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); - if (indexVisibility!=-1) - zone.getModel(indexVisibility).setObject(scene_.sceneId2LayerId(_numGeom), _visibility==true ? GISAttributeConstants.ATT_VAL_TRUE:GISAttributeConstants.ATT_VAL_FALSE, cmd_); - listenVisibility=true; - } - - /** - * Met \xE0 jour la selection dans le tableau pour qu'elle corresponde \xE0 la selection dans les calques. - */ - protected void updateTableSelection() { - int[] selection=scene_.getLayerSelection().getSelectedIndex(); - for(int i=0;i<table_.getRowCount();i++) - // Si la g\xE9om\xE9trie n'est pas s\xE9lectionn\xE9e dans le calque mais dans le tableau => d\xE9s\xE9lectionne - if(!in(((Integer) table_.getModel().getValueAt(i, 3)).intValue(), selection)&&table_.getSelectionModel().isSelectedIndex(i)) - table_.getSelectionModel().removeSelectionInterval(i, i); - // Si la g\xE9om\xE9trie est selectionn\xE9 dans le calque mais pas dans le tableau => s\xE9lection - else if(in(((Integer) table_.getModel().getValueAt(i, 3)).intValue(), selection)&&!table_.getSelectionModel().isSelectedIndex(i)) - table_.getSelectionModel().addSelectionInterval(i, i); - } - - /** - * Met \xE0 jour la selection dans le(s) calque(s) pour qu'elle corresponde \xE0 la selection dans le tableau. - */ - protected void updateCalqueSelection() { - // Conversion des indices de lignes selectionn\xE9es en index globals de g\xE9om\xE9tries - int[] selection=table_.getSelectedRows(); - int[] selectedIdx=new int[selection.length]; - for(int i=0;i<selectedIdx.length;i++) - selectedIdx[i]=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); - scene_.setSelection(selectedIdx); - } - - /** - * Active ou d\xE9active les deux boutons de mouvement - */ - protected void updateBtMovement(){ - boolean enableUp=false; - boolean enableDown=false; - if(calque_.getSelectedItem()!=allCalquesEntry_&&table_.getSelectedRowCount()>0){ - // Verification qu'il est possible de d\xE9placer la s\xE9lection vers le haut - int i=0; - while(!enableUp&&++i<table_.getRowCount()) - enableUp=!table_.getSelectionModel().isSelectedIndex(i-1)&&table_.getSelectionModel().isSelectedIndex(i); - // V\xE9rification qu'il est possible de d\xE9placer la selection vers le bas - i=table_.getRowCount()-1; - while(!enableDown&&--i>=0) - enableDown=!table_.getSelectionModel().isSelectedIndex(i+1)&&table_.getSelectionModel().isSelectedIndex(i); - } - btUp_.setEnabled(enableUp); - btDown_.setEnabled(enableDown); - } - - /** - * Retourne vrai si _value est dans _table - * @param _value - * @param _table - * @return - */ - private boolean in(int _value, int[] _table){ - boolean found=false; - int i=-1; - while(!found&&++i<_table.length) - found=_table[i]==_value; - return found; - } - - /** - * "remonte" d'1 les g\xE9om\xE9tries selectionn\xE9es dans leur calque. C'est \xE0 dire - * que si une g\xE9om\xE9trie \xE9tait \xE0 l'index 6, elle passe \xE0 l'index 5 (l'ancienne - * g\xE9om\xE9trie \xE0 5 passe \xE0 6). - */ - protected void moveUpSelectedGeometies(){ - int[] selection=table_.getSelectedRows(); - ArrayList<Integer> newSelection=new ArrayList<Integer>(); - Arrays.sort(selection); - int lastIndexCompute=-1; - for(int i=0;i<selection.length;i++){ - // Si la place du dessus est libre, on monte - if(selection[i]>0&&(!in(selection[i]-1, selection)||selection[i]-1==lastIndexCompute)){ - newSelection.add(selection[i]-1); - lastIndexCompute=selection[i]; - ZModeleEditable model=(ZModeleEditable) table_.getModel().getValueAt(selection[i], 2); - int indexGeom=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); - model.getGeomData().switchGeometries(scene_.sceneId2LayerId(indexGeom), scene_.sceneId2LayerId(indexGeom-1), cmd_); - } - else - newSelection.add(selection[i]); - } - // R\xE9tablissement de la selection dans le tableau - table_.getSelectionModel().clearSelection(); - for(int i=0;i<newSelection.size();i++) - table_.getSelectionModel().addSelectionInterval(newSelection.get(i), newSelection.get(i)); - } - - /** - * "descend" d'1 les g\xE9om\xE9tries selectionn\xE9es dans leur calque. C'est \xE0 dire - * que si une g\xE9om\xE9trie \xE9tait \xE0 l'index 5, elle passe \xE0 l'index 6 (l'ancienne - * g\xE9om\xE9trie \xE0 6 passe \xE0 5). - */ - protected void moveDownSelectedGeometies(){ - int[] selection=table_.getSelectedRows(); - ArrayList<Integer> newSelection=new ArrayList<Integer>(); - Arrays.sort(selection); - int lastIndexCompute=-1; - for(int i=selection.length-1;i>=0;i--){ - // Si la place du dessous est libre, on descend - if(selection[i]<(table_.getRowCount()-1)&&(!in(selection[i]+1, selection)||selection[i]+1==lastIndexCompute)){ - newSelection.add(selection[i]+1); - lastIndexCompute=selection[i]; - ZModeleEditable model=(ZModeleEditable) table_.getModel().getValueAt(selection[i], 2); - int indexGeom=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); - model.getGeomData().switchGeometries(scene_.sceneId2LayerId(indexGeom), scene_.sceneId2LayerId(indexGeom+1), cmd_); - } - else - newSelection.add(selection[i]); - } - // R\xE9tablissement de la selection dans le tableau - table_.getSelectionModel().clearSelection(); - for(int i=0;i<newSelection.size();i++) - table_.getSelectionModel().addSelectionInterval(newSelection.get(i), newSelection.get(i)); - } - - /** - * Est appel\xE9e par EditVisibilityAction quand la palette est d\xE9couverte. - */ - public void doShow(){ - updateListen(); - fillCalqueComboBox(); - fillTableGeometry(); - updateBtMovement(); - } - - /** - * Est appel\xE9e par EditVisibilityAction quand la palette est cach\xE9e. - */ - public void doHide(){ - // Suppression de l'\xE9coute de tout les calques - for(int i=0;i<listenModels_.length;i++) - listenModels_[i].removeModelListener(this); - // Mise a jour du tableau de listeners - listenModels_=new ZModeleEditable[0]; - } - - /* (non-Javadoc) - * @see org.fudaa.ebli.commun.BPalettePanelInterface#doAfterDisplay() - */ - public void doAfterDisplay() { - } - - /* (non-Javadoc) - * @see org.fudaa.ebli.commun.BPalettePanelInterface#getComponent() - */ - public JComponent getComponent() { - return this; - } - - /* (non-Javadoc) - * @see org.fudaa.ebli.commun.BPalettePanelInterface#paletteDeactivated() - */ - public void paletteDeactivated() { - } - - /* (non-Javadoc) - * @see org.fudaa.ebli.commun.BPalettePanelInterface#setPalettePanelTarget(java.lang.Object) - */ - public boolean setPalettePanelTarget(Object _target) { - return false; - } - - // Changement dans le comboBox des calques ou dans les boutons de d\xE9placements \\ - - public void actionPerformed(ActionEvent e) { - if(e.getSource()==calque_){ - updateListen(); - fillTableGeometry(); - updateBtMovement(); - } - else if(e.getSource()==btUp_) - moveUpSelectedGeometies(); - else if(e.getSource()==btDown_) - moveDownSelectedGeometies(); - } - - //Changement dans le checkBox onlyInvisible \\ - - public void stateChanged(ChangeEvent e) { - onlyInvisible_=!onlyInvisible_; - fillTableGeometry(); - } - - // Changement dans l'arbre des calques \\ - - public void treeNodesChanged(TreeModelEvent e) { - fillCalqueComboBox(); - } - - public void treeNodesInserted(TreeModelEvent e) { - fillCalqueComboBox(); - } - - public void treeNodesRemoved(TreeModelEvent e) { - fillCalqueComboBox(); - } - - public void treeStructureChanged(TreeModelEvent e) { - fillCalqueComboBox(); - } - - // Modification dans le ou les model(s) \xE9cout\xE9(s). - - public void attributeAction(Object _source, int att, GISAttributeInterface _att, int _action) { - fillTableGeometry(); - } - - public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int _geom, Object _value) { - if(listenVisibility&&(_att==GISAttributeConstants.TITRE||_att==GISAttributeConstants.VISIBILITE||_att==null)){ - // Recherche le calque contenant le model - boolean foundCalque=false; - int j=-1; - ZCalqueEditable[] calques=scene_.getEditableLayers(); - while (!foundCalque&&++j<calques.length) - foundCalque=calques[j].getModelEditable()==_source; - if (foundCalque) { - if (_geom>=0) { - int idxGeom=scene_.layerId2SceneId(calques[j], _geom); - // Mise \xE0 jour seulement de la g\xE9om\xE9trie. - boolean found=false; - int i=-1; - while (!found&&++i<table_.getModel().getRowCount()) { - ZModeleEditable model=(ZModeleEditable)table_.getModel().getValueAt(i, 2); - Integer indexGeom=(Integer)table_.getModel().getValueAt(i, 3); - found=(model==_source)&&(indexGeom==idxGeom); - } - if (found) - if (_att==GISAttributeConstants.TITRE) - table_.getModel().setValueAt(_value, i, 0); - else if (_att==GISAttributeConstants.VISIBILITE) - table_.getModel().setValueAt(_value.equals(GISAttributeConstants.ATT_VAL_TRUE) ? true:false, i, 1); - else { - GISZoneCollection zone=((ZModeleEditable)_source).getGeomData(); - table_.getModel().setValueAt( - ((ZModeleEditable)_source).getGeomData().getValue(zone.getIndiceOf(GISAttributeConstants.TITRE), _geom), i, 0); - table_.getModel().setValueAt( - ((ZModeleEditable)_source).getGeomData().getValue(zone.getIndiceOf(GISAttributeConstants.VISIBILITE), _geom) - .equals(GISAttributeConstants.ATT_VAL_TRUE) ? true:false, i, 1); - } - } - else - // Mise \xE0 jour de toutes les g\xE9om\xE9tries. - fillTableGeometry(); - } - } - } - - public void geometryAction(Object _source, int geom, Geometry _geom, int _action) { - if(_action!=GEOMETRY_ACTION_MODIFY) - fillTableGeometry(); - } - - // La selection dans un calque \xE0 chang\xE9e \\ - - public void selectionChanged(ZSelectionEvent _evt) { - if (listenSelection) { - listenSelection=false; - updateTableSelection(); - updateBtMovement(); - listenSelection=true; - } - } - - // La selection dans le tableau \xE0 chang\xE9e \\ - - public void valueChanged(ListSelectionEvent _e) { - if (listenSelection) { - listenSelection=false; - updateCalqueSelection(); - updateBtMovement(); - listenSelection=true; - } - } -} Copied: tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java (from rev 4207, branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java) =================================================================== --- tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java (rev 0) +++ tags/FudaaModeleur_0_07/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-11-12 13:33:41 UTC (rev 4209) @@ -0,0 +1,704 @@ +/* + * @creation 23 oct. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.calque.edition; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.EventObject; + +import javax.swing.AbstractCellEditor; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + +import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ctulu.gui.CtuluTable; +import org.fudaa.ebli.calque.BArbreCalqueModel; +import org.fudaa.ebli.calque.ZModelGeometryListener; +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.commun.BPalettePanelInterface; +import org.fudaa.ebli.commun.EbliLib; + +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuButton; +import com.memoire.bu.BuCheckBox; +import com.memoire.bu.BuComboBox; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuResource; +import com.memoire.bu.BuScrollPane; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cette palette a pour but de permettre de modifier la visibilit\xE9 de toutes les + * g\xE9om\xE9tries. Concr\xE8trement un tableau listant les g\xE9om\xE9tries propose de cocher + * ou d\xE9cocher une checkbox correspondant \xE0 la valeur de visibilit\xE9 de la + * g\xE9om\xE9trie et r\xE9percute imm\xE9diatement le changement effectu\xE9. + * + * De plus deux boutons permettent de changer l'ordre des g\xE9om\xE9tries dans le + * tableau et dans le model les contenant. + * + * @author Emmanuel MARTIN + * @version $Id: BPaletteEditVisibility.java 4172 2008-11-05 14:49:55Z + * emmanuel_martin $ + */ +public class BPaletteEditVisibility extends BuPanel implements ListSelectionListener, ZSelectionListener, ZModelGeometryListener, TreeModelListener, BPalettePanelInterface, ActionListener, ChangeListener { + + /** Calques disponible pour l'utilisateur. */ + protected ZCalqueEditable[] calques_; + /** Models en cours d'\xE9coute. */ + protected ZModeleEditable[] listenModels_; + protected final String allCalquesEntry_=EbliLib.getS("Tous les calques"); + /** + * vrai quand une modification de la selection dans le tableau ou dans le + * calque est en cours. Permet d'\xE9viter des r\xE9cursions \xE0 cause des listeners de + * selections. + */ + protected boolean listenSelection=true; + /** Vrai quand la visibilit\xE9 n'est pas en train d'\xEAtre chang\xE9 par le panel. */ + protected boolean listenVisibility=true; + protected CtuluCommandManager cmd_; + protected ZScene scene_; + // Composants graphiques + protected final BuComboBox calque_; + protected boolean onlyInvisible_; + protected final CtuluTable table_; + protected BuButton btUp_; + protected BuButton btDown_; + + /** + * @param _treeModel + * utile pour avoir connaissance de la cr\xE9ation et de la suppression + * de calque. + * @param _scene + * utile pour l'\xE9coute des selections. + */ + public BPaletteEditVisibility(BArbreCalqueModel _treeModel, ZScene _scene, CtuluCommandManager _cmd){ + cmd_=_cmd; + scene_=_scene; + calques_=new ZCalqueEditable[0]; + listenModels_=new ZModeleEditable[0]; + _treeModel.addTreeModelListener(this); + scene_.addSelectionListener(this); + // Configuration du panel \\ + setLayout(new BuBorderLayout()); + setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + setPreferredSize(new Dimension(210, 350)); + Container headContainer=new Container(); + headContainer.setLayout(new BuBorderLayout(5, 5)); + // Ajout du titre \\ + BuLabel titre=new BuLabel("<html><b>"+EbliLib.getS("Visibilit\xE9")+"</b></html>"); + titre.setHorizontalAlignment(SwingConstants.CENTER); + headContainer.add(titre, BuBorderLayout.NORTH); + // Ajout des composants de configuration \\ + Container config=new Container(); + config.setLayout(new GridLayout(2, 2, 2, 2)); + headContainer.add(config, BuBorderLayout.CENTER); + add(headContainer, BuBorderLayout.NORTH); + // Calque + config.add(new BuLabel(EbliLib.getS("Calque"))); + calque_=new BuComboBox(); + config.add(calque_); + // Only invisible + config.add(new BuLabel(EbliLib.getS("Invisible uniquement"))); + Container cont=new Container(); + cont.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + BuCheckBox cb=new BuCheckBox("", false); + cont.add(cb); + config.add(cont); + // Ajout du tableau de geom\xE9tries \\ + table_=new CtuluTable(); + table_.getSelectionModel().addListSelectionListener(this); + add(new BuScrollPane(table_), BuBorderLayout.CENTER); + // Ajout des boutons de d\xE9placement des g\xE9om\xE9tries \\ + Container btCont=new Container(); + btCont.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + btUp_=new BuButton(BuResource.BU.getIcon("monter")); + btUp_.setToolTipText(EbliLib.getS("D\xE9cr\xE9menter l'index de la g\xE9om\xE9trie")); + btDown_=new BuButton(BuResource.BU.getIcon("descendre")); + btDown_.setToolTipText(EbliLib.getS("Incr\xE9menter l'index de la g\xE9om\xE9trie")); + btUp_.addActionListener(this); + btDown_.addActionListener(this); + btCont.add(btUp_); + btCont.add(btDown_); + add(btCont, BuBorderLayout.SOUTH); + // Ajout des informations \\ + fillCalqueComboBox(); + calque_.addActionListener(this); + cb.addChangeListener(this); + fillTableGeometry(); + updateBtMovement(); + } + + /** + * Le modele de la table qui liste les g\xE9om\xE9tries. Il contient \xE9galement le + * calque d'origine de et l'index de la g\xE9om\xE9trie dans ce calque pour pouvoir + * r\xE9percuter le changement. + * + * @author Emmanuel MARTIN + * @version $Id$ + */ + protected class GeomTableModel extends AbstractTableModel { + + private String[] titreColonnes_; + private Object[][] rows_; + + public GeomTableModel(String[] _titreColonnes, Object[][] _rows){ + if(_titreColonnes.length!=2) + throw new IllegalArgumentException("Il doit y avoir deux titres de colonnes."); + for(int i=0;i<_rows.length;i++) + if(_rows[i].length!=4) + throw new IllegalArgumentException("Au moins une ligne n'a pas exactement 4 informations."); + titreColonnes_=_titreColonnes; + rows_=_rows; + } + + public Class<?> getColumnClass(int columnIndex) { + switch(columnIndex){ + case 0: return String.class; + case 1: return Boolean.class; + default: return null; + } + } + + public int getColumnCount() { + return 2; + } + + public String getColumnName(int columnIndex) { + return titreColonnes_[columnIndex]; + } + + public int getRowCount() { + return rows_.length; + } + + public Object getValueAt(int rowIndex, int columnIndex) { + return rows_[rowIndex][columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex==1; + } + + public void setValueAt(Object value, int rowIndex, int columnIndex) { + boolean selected=table_.getSelectionModel().isSelectedIndex(rowIndex); + if(columnIndex==0){ + rows_[rowIndex][columnIndex]=value; + fireTableDataChanged(); + if(selected) + table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); + } + else if(columnIndex==1){ + if (rows_[rowIndex][columnIndex]!=value) { + rows_[rowIndex][columnIndex]=value; + changeVisibility((Integer)rows_[rowIndex][3], (ZModeleEditable)rows_[rowIndex][2], (Boolean)rows_[rowIndex][1]); + // Dans le cas o\xF9 on n'affiche que les g\xE9om\xE9tries invisibles, on + // enl\xE8ve celle qu'on passe \xE0 visible. + if (onlyInvisible_&&((Boolean)rows_[rowIndex][1])==true) { + Object[][] newRows=new Object[rows_.length-1][]; + for (int i=0; i<rowIndex; i++) + newRows[i]=rows_[i]; + for (int i=rowIndex+1; i<rows_.length; i++) + newRows[i-1]=rows_[i]; + rows_=newRows; + fireTableDataChanged(); + if (selected) + table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); + } + } + } + } + } + + protected class GeomTableRenderer implements TableCellRenderer { + public Component getTableCellRendererComponent(JTable _table, Object _value, boolean _isSelected, boolean _hasFocus, int _row, + int _column) { + Color selectionBackground = UIManager.getColor("Table.selectionBackground"); + JPanel pn=new JPanel(); + pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + if(_isSelected) + pn.setBackground(selectionBackground); + else + pn.setBackground(Color.WHITE); + if (_value instanceof Boolean) { + BuCheckBox cb=new BuCheckBox("", (Boolean)_value); + if(_isSelected) + cb.setBackground(selectionBackground); + else + cb.setBackground(Color.WHITE); + pn.add(cb); + } + else{ + BuLabel lbl =new BuLabel(_value.toString()); + if(_isSelected) + lbl.setBackground(selectionBackground); + else + lbl.setBackground(Color.WHITE); + pn.add(lbl); + } + return pn; + } + } + + protected class GeomTableEditor extends AbstractCellEditor implements TableCellEditor, ChangeListener { + + private boolean value; + /** Compteur d'\xE9v\xE9nement. */ + private int a=1; + + /* (non-Javadoc) + * @see + * javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing + * .JTable, java.lang.Object, boolean, int, int) + */ + public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _isSelected, int _row, int _column) { + value=(Boolean)_value; + JPanel pn=new JPanel(); + pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + pn.setBackground(Color.WHITE); + BuCheckBox cb=new BuCheckBox("", (Boolean)_value); + cb.addChangeListener(this); + cb.setBackground(Color.WHITE); + pn.add(cb); + return pn; + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#getCellEditorValue() + */ + public Object getCellEditorValue() { + return value; + } + + public boolean shouldSelectCell(EventObject anEvent){ + return false; + } + + /* (non-Javadoc) + * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) + */ + public void stateChanged(ChangeEvent e) { + value=!value; + // Un hack : il semble que la checkbox envoie 5 \xE9v\xE9nements \xE0 chaque click. + // Pour arr\xEAter l'\xE9dition automatiquement au bout d'un click, on teste sur + // le compteur de click. + if(a==0) + stopCellEditing(); + a=(a+1)%5; + } + } + + /** + * Place dans le comboBox de choix des calques les calques qui peuvent \xEAtre + * choisis ainsi que l'entr\xE9e sp\xE9ciale 'tout les calques'. + */ + protected void fillCalqueComboBox(){ + // Changement du contenu de la comboBox + Object selectedItem=calque_.getSelectedItem(); + calque_.removeAllItems(); + // R\xE9cup\xE9ration des calques + calques_=scene_.getEditableLayers(); + // Ajout des noms dans le comboBox + calque_.addItem(allCalquesEntry_); + for(int i=0;i<calques_.length;i++) + calque_.addItem(calques_[i].getTitle()); + if(selectedItem!=null) + calque_.setSelectedItem(selectedItem); + else + calque_.setSelectedIndex(0); + updateListen(); + } + + /** + * Met \xE0 jour l'\xE9coute des models + */ + protected void updateListen(){ + // Suppression de l'\xE9coute de tout les models + for(int i=0;i<listenModels_.length;i++) + listenModels_[i].removeModelListener(this); + // Mise a jour du tableau de listeners + if(calque_.getSelectedItem()==allCalquesEntry_){ + listenModels_=new ZModeleEditable[calques_.length]; + for(int i=0;i<calques_.length;i++) + listenModels_[i]=calques_[i].getModelEditable(); + } + else{ + boolean found=false; + int i=-1; + while(!found&&++i<calques_.length) + found=calques_[i].getTitle().equals(calque_.getSelectedItem()); + if(found) + listenModels_=new ZModeleEditable[]{calques_[i].getModelEditable()}; + else + listenModels_=new ZModeleEditable[0]; + } + // Ajout de l'\xE9coute de tout les calques + for(int i=0;i<listenModels_.length;i++){ + listenModels_[i].addModelListener(this); + } + } + + /** + * Rempli le tableau avec toutes les g\xE9o\xE9mtries contenus dans le calque + * selectionn\xE9 dans combobox. Si la checkbox indiquant que seules les + * g\xE9om\xE9tries invisibles sont affich\xE9s est coch\xE9, cette restriction est prise + * en compte ici. + * Le model du tableau est r\xE9instanc\xE9, donc la s\xE9l\xE9ction est + * perdu, ce qui peut entrainer un comportement non voulu. Il est donc + * recommand\xE9 de n'utiliser cette m\xE9thode que pour le premier remplissage du + * tableau. + */ + protected void fillTableGeometry(){ + listenSelection=false; + // Remplissage du tableau + ArrayList<Object[]> rows=new ArrayList<Object[]>(); + for(int i=0;i<calques_.length;i++){ + if(calques_[i].getTitle().equals(calque_.getSelectedItem())||calque_.getSelectedItem()==allCalquesEntry_){ + ZModeleEditable model = calques_[i].getModelEditable(); + // Extraction des donn\xE9es utiles + GISZoneCollection zone=model.getGeomData(); + int indexTitre=zone.getIndiceOf(GISAttributeConstants.TITRE); + int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); + if(indexTitre!=-1&&indexVisibility!=-1) + for(int j=0;j<zone.getNbGeometries();j++) + if(!onlyInvisible_||zone.getValue(indexVisibility, j)==GISAttributeConstants.ATT_VAL_FALSE) + if(j<zone.getModel(indexVisibility).getSize()&&j<zone.getModel(indexTitre).getSize()) + rows.add(new Object[]{zone.getValue(indexTitre, j), zone.getValue(indexVisibility, j).equals(GISAttributeConstants.ATT_VAL_TRUE)?true:false, model, scene_.layerId2SceneId(calques_[i], j)}); + } + } + table_.setModel(new GeomTableModel(new String[]{EbliLib.getS("Nom"), EbliLib.getS("Visibilit\xE9")}, rows.toArray(new Object[0][]))); + table_.getColumnModel().getColumn(0).setCellRenderer(new GeomTableRenderer()); + table_.getColumnModel().getColumn(1).setCellRenderer(new GeomTableRenderer()); + table_.getColumnModel().getColumn(1).setPreferredWidth(25); + table_.getColumnModel().getColumn(1).setCellEditor(new GeomTableEditor()); + // Mise \xE0 jour de la selection + updateTableSelection(); + listenSelection=true; + } + + /** + * Cette m\xE9thode effectue un changement de visibilit\xE9 sur la g\xE9om\xE9trie + * indiqu\xE9e en param\xE8tre. + * + * @param _numGeom + * l'index de la g\xE9om\xE9trie dans le calque + * @param _calque + * le calque dans lequel se trouve la g\xE9o\xE9mtrie + * @param _visibility + * la nouvelle valeur de visibilit\xE9 + */ + protected void changeVisibility(int _numGeom, ZModeleEditable _model, boolean _visibility) { + listenVisibility=false; + GISZoneCollection zone=_model.getGeomData(); + int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); + if (indexVisibility!=-1) + zone.getModel(indexVisibility).setObject(scene_.sceneId2LayerId(_numGeom), _visibility==true ? GISAttributeConstants.ATT_VAL_TRUE:GISAttributeConstants.ATT_VAL_FALSE, cmd_); + listenVisibility=true; + } + + /** + * Met \xE0 jour la selection dans le tableau pour qu'elle corresponde \xE0 la selection dans les calques. + */ + protected void updateTableSelection() { + int[] selection=scene_.getLayerSelection().getSelectedIndex(); + for(int i=0;i<table_.getRowCount();i++) + // Si la g\xE9om\xE9trie n'est pas s\xE9lectionn\xE9e dans le calque mais dans le tableau => d\xE9s\xE9lectionne + if(!in(((Integer) table_.getModel().getValueAt(i, 3)).intValue(), selection)&&table_.getSelectionModel().isSelectedIndex(i)) + table_.getSelectionModel().removeSelectionInterval(i, i); + // Si la g\xE9om\xE9trie est selectionn\xE9 dans le calque mais pas dans le tableau => s\xE9lection + else if(in(((Integer) table_.getModel().getValueAt(i, 3)).intValue(), selection)&&!table_.getSelectionModel().isSelectedIndex(i)) + table_.getSelectionModel().addSelectionInterval(i, i); + } + + /** + * Met \xE0 jour la selection dans le(s) calque(s) pour qu'elle corresponde \xE0 la selection dans le tableau. + */ + protected void updateCalqueSelection() { + // Conversion des indices de lignes selectionn\xE9es en index globals de g\xE9om\xE9tries + int[] selection=table_.getSelectedRows(); + int[] selectedIdx=new int[selection.length]; + for(int i=0;i<selectedIdx.length;i++) + selectedIdx[i]=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); + scene_.setSelection(selectedIdx); + } + + /** + * Active ou d\xE9active les deux boutons de mouvement + */ + protected void updateBtMovement(){ + boolean enableUp=false; + boolean enableDown=false; + if(calque_.getSelectedItem()!=allCalquesEntry_&&table_.getSelectedRowCount()>0){ + // Verification qu'il est possible de d\xE9placer la s\xE9lection vers le haut + int i=0; + while(!enableUp&&++i<table_.getRowCount()) + enableUp=!table_.getSelectionModel().isSelectedIndex(i-1)&&table_.getSelectionModel().isSelectedIndex(i); + // V\xE9rification qu'il est possible de d\xE9placer la selection vers le bas + i=table_.getRowCount()-1; + while(!enableDown&&--i>=0) + enableDown=!table_.getSelectionModel().isSelectedIndex(i+1)&&table_.getSelectionModel().isSelectedIndex(i); + } + btUp_.setEnabled(enableUp); + btDown_.setEnabled(enableDown); + } + + /** + * Retourne vrai si _value est dans _table + * @param _value + * @param _table + * @return + */ + private boolean in(int _value, int[] _table){ + boolean found=false; + int i=-1; + while(!found&&++i<_table.length) + found=_table[i]==_value; + return found; + } + + /** + * "remonte" d'1 les g\xE9om\xE9tries selectionn\xE9es dans leur calque. C'est \xE0 dire + * que si une g\xE9om\xE9trie \xE9tait \xE0 l'index 6, elle passe \xE0 l'index 5 (l'ancienne + * g\xE9om\xE9trie \xE0 5 passe \xE0 6). + */ + protected void moveUpSelectedGeometies(){ + int[] selection=table_.getSelectedRows(); + ArrayList<Integer> newSelection=new ArrayList<Integer>(); + Arrays.sort(selection); + int lastIndexCompute=-1; + for(int i=0;i<selection.length;i++){ + // Si la place du dessus est libre, on monte + if(selection[i]>0&&(!in(selection[i]-1, selection)||selection[i]-1==lastIndexCompute)){ + newSelection.add(selection[i]-1); + lastIndexCompute=selection[i]; + ZModeleEditable model=(ZModeleEditable) table_.getModel().getValueAt(selection[i], 2); + int indexGeom=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); + model.getGeomData().switchGeometries(scene_.sceneId2LayerId(indexGeom), scene_.sceneId2LayerId(indexGeom-1), cmd_); + } + else + newSelection.add(selection[i]); + } + // R\xE9tablissement de la selection dans le tableau + table_.getSelectionModel().clearSelection(); + for(int i=0;i<newSelection.size();i++) + table_.getSelectionModel().addSelectionInterval(newSelection.get(i), newSelection.get(i)); + } + + /** + * "descend" d'1 les g\xE9om\xE9tries selectionn\xE9es dans leur calque. C'est \xE0 dire + * que si une g\xE9om\xE9trie \xE9tait \xE0 l'index 5, elle passe \xE0 l'index 6 (l'ancienne + * g\xE9om\xE9trie \xE0 6 passe \xE0 5). + */ + protected void moveDownSelectedGeometies(){ + int[] selection=table_.getSelectedRows(); + ArrayList<Integer> newSelection=new ArrayList<Integer>(); + Arrays.sort(selection); + int lastIndexCompute=-1; + for(int i=selection.length-1;i>=0;i--){ + // Si la place du dessous est libre, on descend + if(selection[i]<(table_.getRowCount()-1)&&(!in(selection[i]+1, selection)||selection[i]+1==lastIndexCompute)){ + newSelection.add(selection[i]+1); + lastIndexCompute=selection[i]; + ZModeleEditable model=(ZModeleEditable) table_.getModel().getValueAt(selection[i], 2); + int indexGeom=((Integer) table_.getModel().getValueAt(selection[i], 3)).intValue(); + model.getGeomData().switchGeometries(scene_.sceneId2LayerId(indexGeom), scene_.sceneId2LayerId(indexGeom+1), cmd_); + } + else + newSelection.add(selection[i]); + } + // R\xE9tablissement de la selection dans le tableau + table_.getSelectionModel().clearSelection(); + for(int i=0;i<newSelection.size();i++) + table_.getSelectionModel().addSelectionInterval(newSelection.get(i), newSelection.get(i)); + } + + /** + * Est appel\xE9e par EditVisibilityAction quand la palette est d\xE9couverte. + */ + public void doShow(){ + updateListen(); + fillCalqueComboBox(); + fillTableGeometry(); + updateBtMovement(); + } + + /** + * Est appel\xE9e par EditVisibilityAction quand la palette est cach\xE9e. + */ + public void doHide(){ + // Suppression de l'\xE9coute de tout les calques + for(int i=0;i<listenModels_.length;i++) + listenModels_[i].removeModelListener(this); + // Mise a jour du tableau de listeners + listenModels_=new ZModeleEditable[0]; + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.commun.BPalettePanelInterface#doAfterDisplay() + */ + public void doAfterDisplay() { + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.commun.BPalettePanelInterface#getComponent() + */ + public JComponent getComponent() { + return this; + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.commun.BPalettePanelInterface#paletteDeactivated() + */ + public void paletteDeactivated() { + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.commun.BPalettePanelInterface#setPalettePanelTarget(java.lang.Object) + */ + public boolean setPalettePanelTarget(Object _target) { + return false; + } + + // Changement dans le comboBox des calques ou dans les boutons de d\xE9placements \\ + + public void actionPerformed(ActionEvent e) { + if(e.getSource()==calque_){ + updateListen(); + fillTableGeometry(); + updateBtMovement(); + } + else if(e.getSource()==btUp_) + moveUpSelectedGeometies(); + else if(e.getSource()==btDown_) + moveDownSelectedGeometies(); + } + + //Changement dans le checkBox onlyInvisible \\ + + public void stateChanged(ChangeEvent e) { + onlyInvisible_=!onlyInvisible_; + fillTableGeometry(); + } + + // Changement dans l'arbre des calques \\ + + public void treeNodesChanged(TreeModelEvent e) { + fillCalqueComboBox(); + } + + public void treeNodesInserted(TreeModelEvent e) { + fillCalqueComboBox(); + } + + public void treeNodesRemoved(TreeModelEvent e) { + fillCalqueComboBox(); + } + + public void treeStructureChanged(TreeModelEvent e) { + fillCalqueComboBox(); + } + + // Modification dans le ou les model(s) \xE9cout\xE9(s). + + public void attributeAction(Object _source, int att, GISAttributeInterface _att, int _action) { + fillTableGeometry(); + } + + public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int _geom, Object _value) { + if(listenVisibility&&(_att==GISAttributeConstants.TITRE||_att==GISAttributeConstants.VISIBILITE||_att==null)){ + // Recherche le calque contenant le model + boolean foundCalque=false; + int j=-1; + ZCalqueEditable[] calques=scene_.getEditableLayers(); + while (!foundCalque&&++j<calques.length) + foundCalque=calques[j].getModelEditable()==_source; + if (foundCalque) { + if (_geom>=0) { + int idxGeom=scene_.layerId2SceneId(calques[j], _geom); + // Mise \xE0 jour seulement de la g\xE9om\xE9trie. + boolean found=false; + int i=-1; + while (!found&&++i<table_.getModel().getRowCount()) { + ZModeleEditable model=(ZModeleEditable)table_.getModel().getValueAt(i, 2); + Integer indexGeom=(Integer)table_.getModel().getValueAt(i, 3); + found=(model==_source)&&(indexGeom==idxGeom); + } + if (found) + if (_att==GISAttributeConstants.TITRE) + table_.getModel().setValueAt(_value, i, 0); + else if (_att==GISAttributeConstants.VISIBILITE) + table_.getModel().setValueAt(_value.equals(GISAttributeConstants.ATT_VAL_TRUE) ? true:false, i, 1); + else { + GISZoneCollection zone=((ZModeleEditable)_source).getGeomData(); + table_.getModel().setValueAt( + ((ZModeleEditable)_source).getGeomData().getValue(zone.getIndiceOf(GISAttributeConstants.TITRE), _geom), i, 0); + table_.getModel().setValueAt( + ((ZModeleEditable)_source).getGeomData().getValue(zone.getIndiceOf(GISAttributeConstants.VISIBILITE), _geom) + .equals(GISAttributeConstants.ATT_VAL_TRUE) ? true:false, i, 1); + } + } + else + // Mise \xE0 jour de toutes les g\xE9om\xE9tries. + fillTableGeometry(); + } + } + } + + public void geometryAction(Object _source, int geom, Geometry _geom, int _action) { + if(_action!=GEOMETRY_ACTION_MODIFY) + fillTableGeometry(); + } + + // La selection dans un calque \xE0 chang\xE9e \\ + + public void selectionChanged(ZSelectionEvent _evt) { + if (listenSelection) { + listenSelection=false; + updateTableSelection(); + updateBtMovement(); + listenSelection=true; + } + } + + // La selection dans le tableau \xE0 chang\xE9e \\ + + public void valueChanged(ListSelectionEvent _e) { + if (listenSelection) { + listenSelection=false; + updateCalqueSelection(); + updateBtMovement(); + listenSelection=true; + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-12-05 14:35:54
|
Revision: 4277 http://fudaa.svn.sourceforge.net/fudaa/?rev=4277&view=rev Author: bmarchan Date: 2008-12-05 14:35:47 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Created tag FudaaModeleur_0_08. Added Paths: ----------- tags/FudaaModeleur_0_08/ tags/FudaaModeleur_0_08/fudaa_devel/ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille1d.java tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java Removed Paths: ------------- tags/FudaaModeleur_0_08/fudaa_devel/ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java Property changes on: tags/FudaaModeleur_0_08 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Copied: tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille1d.java (from rev 4276, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille1d.java) =================================================================== --- tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille1d.java (rev 0) +++ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille1d.java 2008-12-05 14:35:47 UTC (rev 4277) @@ -0,0 +1,71 @@ +/* + * @creation 20 janv. 08 + * @modification $Date$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur; + +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.print.PageFormat; + +import com.db4o.ObjectContainer; + +import com.memoire.bu.BuCutCopyPasteInterface; +import com.memoire.bu.BuInformationsDocument; +import com.memoire.bu.BuUndoRedoInterface; + +import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluExportDataInterface; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.CtuluUndoRedoInterface; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.image.CtuluImageImporter; +import org.fudaa.ctulu.image.CtuluImageProducer; + +import org.fudaa.ebli.calque.ZEbliFilleCalques; +import org.fudaa.ebli.impression.EbliFilleImprimable; + +import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; +import org.fudaa.fudaa.commun.save.FudaaFilleVisuPersistence; +import org.fudaa.fudaa.commun.save.FudaaSavable; +import org.fudaa.fudaa.commun.save.FudaaSaveZipWriter; +import org.fudaa.fudaa.sig.FSigResource; + +/** + * La fenetre interne vue 2D des donn\xE9es du modeleur. Elle construit le composant arbre de + * calques {@link org.fudaa.ebli.calque.BArbreCalque}. La plupart des traitements est + * d\xE9l\xE9gu\xE9e au composant {@link org.fudaa.ebli.calque.ZEbliCalquesPanel} encapsul\xE9. + * + * @author fred deniger + * @author bertrand marchand + * @version $Id$ + */ +public class MdlFille1d extends EbliFilleImprimable { + + public MdlFille1d(FudaaCommonImplementation _appli) { + super("", true, false, true, true, _appli, null); + setName("mdlFille1d"); + setTitle(FSigResource.FSIG.getString("Vue 1D")); + setPreferredSize(new Dimension(500, 400)); + setClosable(true); + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.impression.EbliPageable#print(java.awt.Graphics, java.awt.print.PageFormat, int) + */ + public int print(Graphics _g, PageFormat _format, int _page) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see java.awt.print.Pageable#getNumberOfPages() + */ + public int getNumberOfPages() { + // TODO Auto-generated method stub + return 0; + } +} Deleted: tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-12-05 14:18:58 UTC (rev 4275) +++ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-12-05 14:35:47 UTC (rev 4277) @@ -1,755 +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.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.MdlShow2DFrameAction; -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.08"; - isMdl_.date = "2008-12-05"; - isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2008"; - 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_; - /** 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_); - } - - /** - * @return La vue 2D, ou null si inexistante. - */ - public MdlFille2d get2dFrame() { - return mdl2dFrame_; - } - - 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); - } 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); - 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(); - - // 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)); -// mnProject.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_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (from rev 4276, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java) =================================================================== --- tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (rev 0) +++ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-12-05 14:35:47 UTC (rev 4277) @@ -0,0 +1,777 @@ +/* + * @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.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.08"; + isMdl_.date = "2008-12-05"; + isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2008"; + 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_); + } + + /** + * @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() { + if (mdl1dFrame_==null) { + mdl1dFrame_ = new MdlFille1d(this); + } + boolean alwaysInstalled=false; + for (JInternalFrame f: getAllInternalFrames()) { + if (f.equals(mdl1dFrame_)) { + alwaysInstalled=true; + break; + } + } + if (!alwaysInstalled) addInternalFrame(mdl1dFrame_); + 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); + } 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); + 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(); + + // 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); + } + +} Deleted: tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java 2008-12-05 14:18:58 UTC (rev 4275) +++ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java 2008-12-05 14:35:47 UTC (rev 4277) @@ -1,35 +0,0 @@ -/* - * @creation 1 avr. 2005 - * @modification $Date$ - * @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.action; - -import java.awt.event.ActionEvent; - -import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.ebli.ressource.EbliResource; -import org.fudaa.fudaa.modeleur.MdlImplementation; - -/** - * Une action pour visualiser la fenetre 2D. - * @author Bertrand Marchand - * @version $Id$ - */ -public class MdlShow1DFrameAction extends EbliActionSimple { - MdlImplementation impl_; - - /** - * @param _m l'arbre des calques - */ - public MdlShow1DFrameAction(MdlImplementation _impl) { - super(EbliResource.EBLI.getString("Vue 1D"), null, "VUE1D"); - impl_=_impl; - } - - public void actionPerformed(final ActionEvent _e) { - impl_.warn("Pas impl\xE9ment\xE9","La fenetre 1D est a venir..."); - } -} Copied: tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java (from rev 4276, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java) =================================================================== --- tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java (rev 0) +++ tags/FudaaModeleur_0_08/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlShow1DFrameAction.java 2008-12-05 14:35:47 UTC (rev 4277) @@ -0,0 +1,35 @@ +/* + * @creation 1 avr. 2005 + * @modification $Date$ + * @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.action; + +import java.awt.event.ActionEvent; + +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.fudaa.modeleur.MdlImplementation; + +/** + * Une action pour visualiser la fenetre 2D. + * @author Bertrand Marchand + * @version $Id$ + */ +public class MdlShow1DFrameAction extends EbliActionSimple { + MdlImplementation impl_; + + /** + * @param _m l'arbre des calques + */ + public MdlShow1DFrameAction(MdlImplementation _impl) { + super(EbliResource.EBLI.getString("Vue 1D"), null, "VUE1D"); + impl_=_impl; + } + + public void actionPerformed(final ActionEvent _e) { + impl_.install1dFrame(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-12-22 15:11:14
|
Revision: 4313 http://fudaa.svn.sourceforge.net/fudaa/?rev=4313&view=rev Author: bmarchan Date: 2008-12-22 15:11:04 +0000 (Mon, 22 Dec 2008) Log Message: ----------- Created tag FudaaModeleur_0_09. Modified Paths: -------------- tags/FudaaModeleur_0_09/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Added Paths: ----------- tags/FudaaModeleur_0_09/ tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java Removed Paths: ------------- tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java Property changes on: tags/FudaaModeleur_0_09 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java 2008-12-19 12:13:30 UTC (rev 4310) +++ tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java 2008-12-22 15:11:04 UTC (rev 4313) @@ -1,1263 +0,0 @@ -/** - * @modification $Date: 2007-03-30 15:34:39 $ - * @statut unstable - * @file BuDesktop.java - * @version 0.43 - * @author Guillaume Desnoix - * @email gui...@de... - * @license GNU General Public License 2 (GPL2) - * @copyright 1998-2005 Guillaume Desnoix - */ - -package com.memoire.bu; - -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyVetoException; - -import javax.swing.*; -import javax.swing.border.Border; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.plaf.ColorUIResource; - -import com.memoire.fu.FuLog; - -/** - * A DesktopPane with a few additional services. Auto-resizing, optionnaly tabbed, custom-friendly, icons management, - * ... - */ -public class BuDesktop extends JDesktopPane implements MouseListener, ActionListener { - public static final int LEFT_MARGIN = 31; - - public static final int SNAPX = Math.max(4, BuPreferences.BU.getIntegerProperty("desktop.snapx", 37)); - - public static final int SNAPY = Math.max(4, BuPreferences.BU.getIntegerProperty("desktop.snapy", 37)); - - public static final int BLOCK_LAYER = JLayeredPane.DEFAULT_LAYER.intValue() - 100; - - public BuDesktop() { - super(); - - setName("buDESKTOP"); - setDesktopManager(createDesktopManager()); - setBackgroundPainter(createBackgroundPainter()); - - addMouseListener(this); - - if (isTabbed()) { - setToolTipText("..."); - setLayout(new Layout()); - } - } - - public final boolean isPalette(JComponent _f) { - return (DEFAULT_LAYER.intValue() != getLayer(_f)) - && Boolean.TRUE.equals(_f.getClientProperty("JInternalFrame.isPalette")); - } - - protected String _(String _s) { - return BuResource.BU.getString(_s); - } - - // Anti-aliasing - - public void paint(Graphics _g) { - BuLib.setAntialiasing(this, _g); - super.paint(_g); - } - - // Snap - - public final void snapXY(JComponent _f) { - if (BuPreferences.BU.getBooleanProperty("desktop.snap", false) && !isTabbed() && !isPalette(_f) - && (_f instanceof JInternalFrame)) { - Point p = _f.getLocation(); - boolean b = false; - if (p.x % SNAPX != 0) { - p.x = p.x - p.x % SNAPX; - b = true; - } - if (p.y % SNAPY != 0) { - p.y = p.y - p.y % SNAPY; - b = true; - } - if (b) _f.setLocation(p); - } - } - - public final void snapWH(JComponent _f) { - if (BuPreferences.BU.getBooleanProperty("desktop.snap", false) && !isTabbed() && !isPalette(_f) - && (_f instanceof JInternalFrame)) { - Dimension d = _f.getSize(); - boolean b = false; - if (((JInternalFrame) _f).isResizable()) { - if (d.width % SNAPX != 0) { - d.width = d.width + SNAPX - d.width % SNAPX; - b = true; - } - if (d.height % SNAPY != 0) { - d.height = d.height + SNAPY - d.height % SNAPY; - b = true; - } - } - if (b) _f.setSize(d); - } - } - - protected DesktopManager createDesktopManager() { - return new BuDesktopManager(this); - } - - protected BuBackgroundPainter createBackgroundPainter() { - BuBackgroundPainter bp = new BuBackgroundPainter(); - if (isBlocked()) { - bp.setBar(true); - bp.setBarHeight(BuLib.isMetal() ? 8 + BuResource.BU.getDefaultFrameSize() : 0); - - /* - * (BuLib.isSlaf() ? 10+BuResource.BU.getDefaultFrameSize() : 0)); - */ - } - return bp; - } - - public boolean isFocusCycleRoot() { - return true; - } - - /* - * public void moveToFront(JInternalFrame _f) { _f.moveToFront(); JInternalFrame[] frames=getAllFrames(); int - * l=frames.length; for(int i=0;i<l;i++) if(isPalette(frames[i])&&frames[i].isVisible()) frames[i].moveToFront(); } - */ - - public boolean isOpaque() { - return Boolean.TRUE.equals(UIManager.get("Desktop.opaque")); - } - - protected void addImpl(Component _c, Object _constraints, int _index) { - if (_c instanceof JInternalFrame.JDesktopIcon) { - JInternalFrame.JDesktopIcon i = (JInternalFrame.JDesktopIcon) _c; - - i.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - putLayer(i, BLOCK_LAYER); - - if (isBlocked()) { - Component[] c = i.getComponents(); - - if (BuLib.isMetal()) { - if (i.getComponentCount() == 2) { - i.remove(c[1]); - i.setBorder(BuBorders.EMPTY0000); - if (c[0] instanceof JButton) { - ((JButton) c[0]).setHorizontalAlignment(SwingConstants.LEFT); - ((JButton) c[0]).setMargin(BuInsets.INSETS1111); - ((JButton) c[0]).getModel().setRollover(false); - } - } - } else if (BuLib.isSlaf()) { - if (c.length == 2) { - i.setBorder(BuBorders.EMPTY1111); - i.setLayout(new BorderLayout(2, 0)); - i.add(c[0], BorderLayout.CENTER); // text - i.add(c[1], BorderLayout.WEST); // icon - if (c[0] instanceof JLabel) ((JLabel) c[0]).setHorizontalAlignment(SwingConstants.LEFT); - } - } - Dimension ps = i.getPreferredSize(); - if (BuLib.isMotif()) ; - else if (BuLib.isMetal()) ps.width = SNAPX * 4; - // else if(BuLib.isSlaf ()) ps.width=SNAPX*3; - else - ps.width = SNAPX * 3; - // if(ps.width %37!=0) ps.width =ps.width +37-ps.width %37; - // if(ps.height%37!=0) ps.height=ps.height+37-ps.height%37; - i.setPreferredSize(ps); - i.setSize(ps); - - JInternalFrame f = i.getInternalFrame(); - f.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent _evt) { - if (Boolean.TRUE.equals(_evt.getNewValue()) && "selected".equals(_evt.getPropertyName())) { - final JInternalFrame fintern = (JInternalFrame) _evt.getSource(); - if (fintern.isIcon()) { - try { - fintern.setIcon(false); - } catch (PropertyVetoException ex) {} - } - } - } - }); - } - } - - if (_c instanceof JComponent) { - snapXY((JComponent) _c); - snapWH((JComponent) _c); - } - - super.addImpl(_c, _constraints, _index); - - boolean b = isBlocked() && (_c instanceof JInternalFrame.JDesktopIcon); - if (b) arrangeIcons0(); - } - - public void remove(int _index) { - Component c = getComponent(_index); - Rectangle r = c.getBounds(); - boolean b = isBlocked() && (c instanceof JInternalFrame.JDesktopIcon); - - super.remove(_index); - repaint(r); - if (b) arrangeIcons0(); - } - - // Paint - - public/* synchronized */void paintComponent(Graphics _g) { - JInternalFrame[] frames = getAllFrames(); - - if (!isTabbed() || (frames.length == 0)) { - Rectangle clip = _g.getClipBounds(); - // Dimension dd =getSize(); - - BuBackgroundPainter bp = getBackgroundPainter(); - if (bp != null) bp.paintBackground(this, _g); - - if (logo_ != null) { - Rectangle ri = new Rectangle(5, - // dd.width-5-logo_.getIconWidth(), - 5, logo_.getIconWidth(), logo_.getIconHeight()); - if (ri.intersects(clip)) logo_.paintIcon(this, _g, ri.x, ri.y); - } - } else { - Dimension dd = getSize(); - Color pbg = UIManager.getColor("Panel.background"); - Color dbg = getBackground(); - - _g.setColor(pbg); - _g.fillRect(0, 0, dd.width, dd.height); // LM+4 - - // JInternalFrame[] frames=getAllFrames(); - int y, l; - - sortFramesByTitle(frames); - - l = frames.length; - y = 0; - for (int i = 0; i < l; i++) { - if (frames[i].isClosed()) continue; - if (!frames[i].isVisible()) continue; - - // if(isPalette(frames[i])) continue; - - _g.setColor(pbg); - _g.draw3DRect(0, y, LEFT_MARGIN - 1, LEFT_MARGIN - 1, false); - - if (isPalette(frames[i])) _g.setColor(pbg); - else if (frames[i].isSelected()) _g.setColor(dbg.brighter()); - else - _g.setColor(dbg); - _g.fill3DRect(1, y + 1, LEFT_MARGIN - 2, LEFT_MARGIN - 2, true); - - Icon icon = frames[i].getFrameIcon(); - if (icon == null) icon = UIManager.getIcon("InternalFrame.icon"); - if (icon != null) { - int w = icon.getIconWidth(); - int h = icon.getIconHeight(); - icon.paintIcon(this, _g, (LEFT_MARGIN - w) / 2, y + (LEFT_MARGIN - h) / 2); - } - - y += LEFT_MARGIN; - } - } - } - - public void paintChildren(Graphics _g) { - /* - * if(isTabbed()) { JInternalFrame[] frames=getAllFrames(); } else - */ - - super.paintChildren(_g); - } - - public String getToolTipText() { - return null; - } - - public/* synchronized */String getToolTipText(MouseEvent _evt) { - if (isTabbed()) { - int xe = _evt.getX(); - int ye = _evt.getY(); - - JInternalFrame[] frames = getAllFrames(); - int l = frames.length; - - if ((xe < LEFT_MARGIN) && (ye < LEFT_MARGIN * l)) { - sortFramesByTitle(frames); - JInternalFrame f = frames[ye / LEFT_MARGIN]; - String r = f.getTitle(); - if ("".equals(r)) r = null; - if (r == null) r = "" + (1 + ye / LEFT_MARGIN); - return r; - } - } - - return super.getToolTipText(_evt); - } - - public/* synchronized */Point getToolTipLocation(MouseEvent _evt) { - if (isTabbed()) { - int xe = _evt.getX(); - int ye = _evt.getY(); - - JInternalFrame[] frames = getAllFrames(); - int l = frames.length; - - if ((xe < LEFT_MARGIN) && (ye < LEFT_MARGIN * l)) { - sortFramesByTitle(frames); - // return new Point(0,(ye/LEFT_MARGIN+1)*LEFT_MARGIN); - return new Point(LEFT_MARGIN + 2, (ye / LEFT_MARGIN) * LEFT_MARGIN + 1); - } - } - - return super.getToolTipLocation(_evt); - } - - // Proprietes - - private String title_; - - public String getTitle() { - return title_; - } - - public void setTitle(String _title) { - title_ = _title; - } - - private boolean outline_ = BuPreferences.BU.getBooleanProperty("desktop.outline", true); - - public boolean isOutline() { - return outline_; - } - - // public void setOutline(boolean _outline) { outline_=_outline; } - - /* - * if(FuLib.jdk()<1.2) { if(outline) putClientProperty("JDesktopPane.dragMode","outline"); else - * putClientProperty("JDesktopPane.dragMode","faster"); } else { if(outline) setDragMode(OUTLINE_DRAG_MODE); else - * setDragMode(LIVE_DRAG_MODE); } - */ - - private boolean tabbed_ = BuPreferences.BU.getBooleanProperty("desktop.tabbed", false); - - public boolean isTabbed() { - return tabbed_; - } - - // public void setTabbed(boolean _tabbed) { tabbed_=_tabbed; } - - private boolean blocked_ = BuPreferences.BU.getBooleanProperty("desktop.blocked", true); - - public boolean isBlocked() { - return blocked_; - } - - // public void setBlocked(boolean _blocked) { blocked_=_blocked; } - - private Icon logo_; - - public Icon getLogo() { - return logo_; - } - - public void setLogo(Icon _logo) { - logo_ = _logo; - repaint(); - } - - private BuBackgroundPainter bp_; - - public BuBackgroundPainter getBackgroundPainter() { - return bp_; - } - - public void setBackgroundPainter(BuBackgroundPainter _bp) { - bp_ = _bp; - invalidate(); - repaint(); - } - - private Insets margins_ = createHardMargins(); - - protected Insets createHardMargins() { - return new Insets(0, 0, 0, 0); - } - - public Insets getHardMargins() { - Insets r = new Insets(margins_.top, margins_.left, margins_.bottom, margins_.right); - - BuBackgroundPainter bp = getBackgroundPainter(); - if (bp != null) r.bottom = Math.max(r.bottom, bp.getBarHeight()); - - return r; - } - - public void setHardMargins(Insets _margins) { - margins_ = _margins; - invalidate(); - repaint(); - } - - // Filles - - public void addInternalFrame(JInternalFrame _f) { - if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " - + "Use Implementation.addInternalFrame() instead"); - - // System.err.println(_f.getName()+":"+_f.getDesktopPane()); - - if (_f.getDesktopPane() == null) { - if (_f.isSelected()) { - try { - _f.setSelected(false); - } catch (PropertyVetoException ex) {} - } - - Point pf = _f.getLocation(); - if ((pf.x == 0) && (pf.y == 0)) { - Container cp = getParent(); - if (cp instanceof JViewport) { - Rectangle vr = ((JViewport) cp).getViewRect(); - Dimension df = _f.getSize(); - - pf.x = vr.x + (vr.width - df.width) / 2; - pf.y = vr.y + (vr.height - df.height) / 2; - _f.setLocation(pf); - } - } - - // SwingUtilities.updateComponentTreeUI(_f); - add(_f); - checkInternalFrame(_f); - // doLayout(); - // validate(); - - snapXY(_f); - snapWH(_f); - // repaint(); // @GDX ??? - } - - activateInternalFrame(_f); - } - - public void removeInternalFrame(JInternalFrame _f) { - if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " - + "Use Implementation.removeInternalFrame() instead"); - - if (_f != null && _f.getDesktopPane() == this) { - deactivateInternalFrame(_f); - remove(_f); - } - - adjustSize(); - } - - public void checkInternalFrame(JInternalFrame _f) { - if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread."); - - Dimension dd = getSize(); - Point pf = _f.getLocation(); - Dimension df = _f.getSize(); - - if (_f.isResizable()) { - if (df.width > dd.width) df.width = dd.width; - if (df.height > dd.height) df.height = dd.height; - if (!df.equals(getSize())) _f.setSize(df); - } - - if (pf.x + df.width > dd.width) pf.x = dd.width - df.width; - if (pf.y + df.height > dd.height) pf.y = dd.height - df.height; - if (pf.x < 0) pf.x = 0; - if (pf.y < 0) pf.y = 0; - - if (isTabbed() && isPalette(_f) && (pf.x < LEFT_MARGIN + 4)) pf.x = LEFT_MARGIN + 4; - - if (!pf.equals(getLocation())) _f.setLocation(pf); - - adjustSize(); - } - - public void activateInternalFrame(JInternalFrame _f) { - if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " - + "Use Implementation.activateInternalFrame() instead"); - - if (!_f.isVisible()) { - _f.setVisible(true); - } - - if (_f.isClosed()) { - try { - _f.setClosed(false); - } catch (PropertyVetoException ex) {} - } - - checkInternalFrame(_f); - - if (_f.isIcon()) { - try { - _f.setIcon(false); - } catch (PropertyVetoException ex) {} - } - - // if(!isPalette(_f)) - { - moveToFront(_f); - if (!_f.isSelected() && !isPalette(_f)) { - try { - _f.setSelected(true); - } catch (PropertyVetoException ex) {} - } - } - } - - public void deactivateInternalFrame(JInternalFrame _f) { - if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread."); - - checkInternalFrame(_f); - - if (_f.isSelected()) { - try { - _f.setSelected(false); - } catch (PropertyVetoException ex) {} - } - } - - public/* synchronized */JInternalFrame getCurrentInternalFrame() { - JInternalFrame[] frames = getAllFrames(); - JInternalFrame r = null; - - for (int i = 0; i < frames.length; i++) - if (frames[i].isSelected()) { - r = frames[i]; - break; - } - - return r; - } - - public/* synchronized */JInternalFrame[] getNormalFrames() { - JInternalFrame[] frames = getAllFrames(); - int l, n, i, j; - - l = frames.length; - n = 0; - - for (i = 0; i < l; i++) - if (!frames[i].isIcon() && !isPalette(frames[i])) n++; - - JInternalFrame[] r = new JInternalFrame[n]; - - j = 0; - for (i = 0; i < l; i++) - if (!frames[i].isIcon() && !isPalette(frames[i])) { - r[j] = frames[i]; - j++; - } - - return r; - } - - public/* synchronized */JInternalFrame[] getNotIconifiedFrames() { - JInternalFrame[] frames = getAllFrames(); - int l, n, i, j; - - l = frames.length; - n = 0; - - for (i = 0; i < l; i++) - if (!frames[i].isIcon()) n++; - - JInternalFrame[] r = new JInternalFrame[n]; - - j = 0; - for (i = 0; i < l; i++) - if (!frames[i].isIcon()) { - r[j] = frames[i]; - j++; - } - - return r; - } - - public/* synchronized */JInternalFrame[] getIconifiedFrames() { - JInternalFrame[] frames = getAllFrames(); - int l, n, i, j; - - l = frames.length; - n = 0; - - for (i = 0; i < l; i++) - if (frames[i].isIcon()) n++; - - JInternalFrame[] r = new JInternalFrame[n]; - - j = 0; - for (i = 0; i < l; i++) - if (frames[i].isIcon()) { - r[j] = frames[i]; - j++; - } - - return r; - } - - public/* synchronized */JInternalFrame[] getPalettes() { - JInternalFrame[] frames = getAllFrames(); - int l, n, i, j; - - l = frames.length; - n = 0; - - for (i = 0; i < l; i++) - if (isPalette(frames[i])) n++; - - JInternalFrame[] r = new JInternalFrame[n]; - - j = 0; - for (i = 0; i < l; i++) - if (isPalette(frames[i])) { - r[j] = frames[i]; - j++; - } - - return r; - } - - public int getNormalFramesCount() { - return getNormalFrames().length; - } - - public int getNotIconifiedFramesCount() { - return getNotIconifiedFrames().length; - } - - public int getIconifiedFramesCount() { - return getIconifiedFrames().length; - } - - public int getPalettesCount() { - return getPalettes().length; - } - - public JInternalFrame getSelectedFrame() { - JInternalFrame r = null; - - if (BuLib.swing() >= 1.2) { - r = super.getSelectedFrame(); - } else { - JInternalFrame[] f = getNormalFrames(); - for (int i = 0; i < f.length; i++) - if (f[i].isSelected()) { - r = f[i]; - break; - } - } - - return r; - } - - // Reorganisation - - protected void sortFramesByTitle(JInternalFrame[] _frames) { - JInternalFrame tmp; - int i, l; - - l = _frames.length; - for (i = 0; i + 1 < l; i++) { - String t1 = _frames[i].getTitle(); - String t2 = _frames[i + 1].getTitle(); - if ((t1 != null) && (t2 != null) && (t1.compareTo(t2) > 0)) { - tmp = _frames[i]; - _frames[i] = _frames[i + 1]; - _frames[i + 1] = tmp; - i--; - if (i >= 0) i--; - } - } - } - - protected void sortFramesByHeight(JInternalFrame[] _frames) { - sortFramesByTitle(_frames); - - JInternalFrame tmp; - int i, l; - - l = _frames.length; - for (i = 0; i + 1 < l; i++) - if (_frames[i].getHeight() > _frames[i + 1].getHeight()) { - tmp = _frames[i]; - _frames[i] = _frames[i + 1]; - _frames[i + 1] = tmp; - i--; - if (i >= 0) i--; - } - } - - protected void sortFramesByWidth(JInternalFrame[] _frames) { - sortFramesByTitle(_frames); - - JInternalFrame tmp; - int i, l; - - l = _frames.length; - for (i = 0; i + 1 < l; i++) - if (_frames[i].getWidth() < _frames[i + 1].getWidth()) { - tmp = _frames[i]; - _frames[i] = _frames[i + 1]; - _frames[i + 1] = tmp; - i--; - if (i >= 0) i--; - } - } - - public/* synchronized */void waterfall() { - if (isTabbed()) return; - - JInternalFrame[] frames = getNormalFrames(); - int i, l, x, y; - - l = frames.length; - if (l > 0) { - sortFramesByTitle(frames); - - x = 74; - y = 0; // y=5; - for (i = l - 1; i >= 0; i--) { - frames[i].setLocation(x, y); - moveToFront(frames[i]); - checkInternalFrame(frames[i]); - x += SNAPX;// x+=25; - y += SNAPY;// y+=25; - } - } - } - - public/* synchronized */void tile() { - if (isTabbed()) return; - - JInternalFrame[] frames = getNormalFrames(); - int i, l, x, y, h, wd/* ,hd */; - - l = frames.length; - if (l > 0) { - sortFramesByHeight(frames); - - wd = getWidth(); // getSize().width; - // hd=getHeight(); // getSize().height; - wd = (wd < 200 ? 200 : wd); - // hd=(hd<200 ? 200 : hd-60); - - x = 0; - y = 0; - h = 0; - for (i = 0; i < l; i++) { - int wf = frames[i].getWidth(); // Size().width; - int hf = frames[i].getHeight(); // Size().height; - if (x + wf > wd) { - x = 0; - y += h; - h = 0; - } - frames[i].setLocation(x, y); - x += wf; - h = Math.max(h, hf); - moveToFront(frames[i]); - checkInternalFrame(frames[i]); - } - } - } - - public void arrangeIcons() { - arrangeIcons0(); - adjustSize(); - } - - protected/* synchronized */final void arrangeIcons0() { - if (isTabbed()) return; - - JInternalFrame[] frames; - int i, l, x, y, wd, hd, bh; - - wd = getWidth(); // getSize().width; - hd = getHeight(); // getSize().height; - bh = 0; - - frames = getIconifiedFrames(); - l = frames.length; - - if (l > 0) { - sortFramesByTitle(frames); - - x = 0; - y = hd; - - Border b = UIManager.getBorder("StatusBar.border"); - if ((l > 0) && (b != null)) y -= b.getBorderInsets(this).bottom; - - for (i = 0; i < l; i++) { - JInternalFrame.JDesktopIcon dti = frames[i].getDesktopIcon(); - dti.setSize(dti.getPreferredSize()); - Dimension cs = dti.getSize(); - - if (x + cs.width >= wd) { - x = 0; - y -= cs.height; - } - - dti.setLocation(x, y - cs.height); - x += cs.width; - bh = Math.max(bh, hd - y + cs.height); - } - - if ((l > 0) && (b != null)) bh += b.getBorderInsets(this).top; - } - - /* - * frames=getNotIconifiedFrames(); l=frames.length; if(l>0) { sortFramesByWidth(frames); y=0; for(i=l-1;i>=0;i--) { - * Dimension d=frames[i].getSize(); if(d.height<32) { frames[i].setLocation(0,y); y+=d.height; } } } - */ - - if (isBlocked()) { - BuBackgroundPainter bp = getBackgroundPainter(); - if ((bp != null) && (bh != bp.getBarHeight())) { - if (bh > 0) { - bp.setBarHeight(bh); - repaint(0, hd - bh, wd, bh); - } - } - } - } - - public/* synchronized */void arrangePalettes() { - // if(isTabbed()) return; - - JInternalFrame[] frames; - int i, l, x, y/* ,wd */, hd, wmax; - - // wd=getWidth(); // getSize().width; - hd = getHeight(); // getSize().height; - - frames = getAllFrames(); - l = frames.length; - - if (l > 0) - { - int yInit = isTabbed() ? 17 : 0; - int xInit = isTabbed() ? LEFT_MARGIN + 1 : 0; - if (!isTabbed() && getCurrentInternalFrame() != null) { - xInit = getCurrentInternalFrame().getX(); - yInit = getCurrentInternalFrame().getY(); - } - sortFramesByHeight(frames); - - wmax = 0; - x = xInit; - y = yInit; - - for (i = 0; i < l; i++) { - JInternalFrame dti = frames[i]; - if (!isPalette(dti)) continue; - - // dti.setSize(dti.getPreferredSize()); - Dimension cs = dti.getSize(); - - if (y + cs.height >= hd) { - x += wmax; - y = yInit; - wmax = 0; - } - - dti.setLocation(x, y); - y += cs.height; - wmax = Math.max(wmax, cs.width); - } - } - - adjustSize(); - } - - public void reshape(int _x, int _y, int _w, int _h) { - int ow = getWidth(); - int oh = getHeight(); - super.reshape(_x, _y, _w, _h); - - if (isBlocked() && ((ow != _w) || (oh != _h))) arrangeIcons0(); - } - - public final Dimension getDefaultPreferredSize() { - return super.getPreferredSize(); - } - - public Dimension getPreferredSize() { - Dimension r = getDefaultPreferredSize(); - - Point qmin = new Point(0, 0); - - JInternalFrame[] frames = getAllFrames(); - int i, l; - - l = frames.length; - for (i = l - 1; i >= 0; i--) { - if (isTabbed() && !isPalette(frames[i])) continue; - if (!isTabbed() && !frames[i].isIcon() && frames[i].isMaximum()) continue; - - Point q = null; - if (frames[i].isIcon()) q = frames[i].getDesktopIcon().getLocation(); - else - q = frames[i].getLocation(); - if (qmin.x > q.x) qmin.x = q.x; - if (qmin.y > q.y) qmin.y = q.y; - } - - for (i = l - 1; i >= 0; i--) { - if (isTabbed() && !isPalette(frames[i])) continue; - if (!isTabbed() && !frames[i].isIcon() && frames[i].isMaximum()) continue; - - if (frames[i].isIcon()) { - if (!isBlocked()) { - JComponent di = frames[i].getDesktopIcon(); - if (di.isVisible()) { - Point p = di.getLocation(); - p.x -= qmin.x; - p.y -= qmin.y; - di.setLocation(p); - - Dimension d = di.getSize(); - if (p.x + d.width > r.width) r.width = p.x + d.width; - if (p.y + d.height > r.height) r.height = p.y + d.height; - } - } - } else if (frames[i].isVisible()) { - Point p = frames[i].getLocation(); - p.x -= qmin.x; - p.y -= qmin.y; - frames[i].setLocation(p); - - Dimension d = frames[i].getSize(); - if (p.x + d.width > r.width) r.width = p.x + d.width; - if (p.y + d.height > r.height) r.height = p.y + d.height; - } - } - - // System.err.println("PSIZE="+r); - return r; - } - - public void adjustSize() { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - Container pt = getParent(); - - /* - * Point vxy=null; Dimension os =null; if(pt instanceof JViewport) { vxy=((JViewport)pt).getViewPosition(); os - * =getSize(); } - */ - - Dimension ns = getPreferredSize(); - - if (pt != null) { - Dimension vs = pt.getSize(); - if (ns.width < vs.width) ns.width = vs.width; - if (ns.height < vs.height) ns.height = vs.height; - } - - setSize(ns); - // revalidate(); - - /* - * getParent().doLayout(); getParent().validate(); doLayout(); validate(); - */ - - /* - * if(pt instanceof JViewport) { Dimension vwh=((JViewport)pt).getExtentSize(); - * ((JViewport)pt).scrollRectToVisible (new Rectangle(vxy.x-qmin.x-Math.max(0,ns.width -os.width ), - * vxy.y-qmin.y-Math.max(0,ns.height-os.height), vwh.width,vwh.height)); } - */ - - /* - * Container cp=getParent(); if(cp instanceof JViewport) { JInternalFrame sf=getCurrentInternalFrame(); - * if((sf!=null)&&sf.isShowing()) ((JViewport)cp).scrollRectToVisible(sf.getBounds()); } - */ - } - }); - } - - public void showFrame(final JInternalFrame _f) { - Runnable runnable = new Runnable() { - public void run() { - Container cp = getParent(); - if ((cp instanceof JViewport) && (_f != null) && _f.isShowing()) { - JViewport vp = (JViewport) cp; - Point vo = vp.getViewPosition(); - Dimension es = vp.getExtentSize(); - Dimension vs = vp.getViewSize(); - Point fo = _f.getLocation(); - Dimension fs = _f.getSize(); - - if (fo.x < vo.x) vo.x = fo.x; - if (fo.y < vo.y) vo.y = fo.y; - if (fo.x + fs.width > vo.x + es.width) vo.x = Math.min(fo.x, vs.width - es.width); - if (fo.y + fs.height > vo.y + es.height) vo.y = Math.min(fo.y, vs.height - es.height); - vp.setViewPosition(vo); - } - } - }; - - if (SwingUtilities.isEventDispatchThread()) runnable.run(); - else - SwingUtilities.invokeLater(runnable); - } - - // Layout - - final class Layout implements LayoutManager2 { - public void addLayoutComponent(String _s, Component _c) { - addLayoutComponent(_c, _s); - } - - public void addLayoutComponent(Component _c, Object _o) { - // System.out.println("ADD "+_c); - if ((_c instanceof JComponent) && isPalette((JComponent) _c)) return; - - if (_c instanceof BuInternalFrame) ((BuInternalFrame) _c).simplifyTop(); - - /* - * if(_c instanceof JComponent) ((JComponent)_c).setBorder(UIManager.getBorder("TitleBorder.border")); - */ - - if (_c instanceof JInternalFrame) { - JInternalFrame f = (JInternalFrame) _c; - f.setIconifiable(false); - f.setMaximizable(false); - // f.setVisible(f.isSelected()); - } - } - - public void removeLayoutComponent(Component _c) {} - - public float getLayoutAlignmentX(Container _p) { - return 0.5f; - } - - public float getLayoutAlignmentY(Container _p) { - return 0.5f; - } - - public Dimension minimumLayoutSize(Container _p) { - return _p.getSize(); - } - - public Dimension preferredLayoutSize(Container _p) { - return _p.getSize(); - } - - public Dimension maximumLayoutSize(Container _p) { - return _p.getSize(); - } - - public void invalidateLayout(Container _p) { - Dimension ds = _p.getSize(); - // int l=p.getComponentCount(); - repaint(0, 0, LEFT_MARGIN, ds.height); // l*LEFT_MARGIN; - } - - public void layoutContainer(Container _p) { - Dimension ds = _p.getSize(); - int l = _p.getComponentCount(); - for (int i = 0; i < l; i++) { - Component c = getComponent(i); - /* - * if( (c instanceof JComponent) &&isPalette((JComponent)c)) ; else c.setBounds(LEFT_MARGIN,0, - * ds.width-LEFT_MARGIN,ds.height); - */ - if ((c instanceof JInternalFrame) && !isPalette((JComponent) c)) { - c.setBounds(LEFT_MARGIN, 0, ds.width - LEFT_MARGIN, ds.height); - } - } - - // invalidate(); - repaint(0, 0, LEFT_MARGIN, ds.height); - } - } - - // Mouse - - public void mouseDown(MouseEvent _evt) {} - - public void mouseEntered(MouseEvent _evt) {} - - public void mouseExited(MouseEvent _evt) {} - - public void mousePressed(MouseEvent _evt) {} - - public void mouseReleased(MouseEvent _evt) {} - - public void mouseUp(MouseEvent _evt) {} - - public void mouseClicked(MouseEvent _evt) { - if (BuLib.isRight(_evt)) { - popupMenu(_evt); - } else if (BuLib.isLeft(_evt) && isTabbed()) { - int xe = _evt.getX(); - int ye = _evt.getY(); - - JInternalFrame[] frames = getAllFrames(); - int l = frames.length; - - if ((xe < LEFT_MARGIN) && (ye < LEFT_MARGIN * l)) { - sortFramesByTitle(frames); - activateInternalFrame(frames[ye / LEFT_MARGIN]); - } - } - } - - protected BuPopupMenu menu_ = null; - - protected/* synchronized */BuPopupMenu createPopupMenu() { - if (menu_ != null) return menu_; - - menu_ = new BuPopupMenu(_("Bureau")); - - menu_.addCheckBox(_("Grille"), "GRILLE", BuResource.BU.getMenuIcon("aucun"), true, true); - menu_.addCheckBox(_("Points"), "POINTS", BuResource.BU.getMenuIcon("aucun"), true, true); - menu_.addCheckBox(_("Magn\xE9tisme"), "MAGNETISME", BuResource.BU.getMenuIcon("aucun"), true, true); - menu_.addSeparator(); - menu_.addMenuItem(_("Uniforme"), "DESKTOP_UNIFORME", BuResource.BU.getMenuIcon("uniforme"), true); - menu_.addMenuItem(_("D\xE9grad\xE9"), "DESKTOP_DEGRADE", BuResource.BU.getMenuIcon("degrade"), true); - menu_.addSeparator(); - - BuMenu mnTextures = new BuMenu(_("Textures"), "MENU_TEXTURES", BuResource.BU.getMenuIcon("texture")); - - // new BuTextureIcon(BuResource.BU.getImage("background_desktop_1"))); - /* - * mnTextures.addMenuItem (_("Texture")+" 1", "DESKTOP_TEXTURE1",new BuTextureIcon - * (BuResource.BU.getImage("background_desktop_1")),true); mnTextures.addMenuItem (_("Texture")+" 2", - * "DESKTOP_TEXTURE2",new BuTextureIcon (BuResource.BU.getImage("background_desktop_2")),true); - * mnTextures.addMenuItem (_("Texture")+" 3", "DESKTOP_TEXTURE3",new BuTextureIcon - * (BuResource.BU.getImage("background_desktop_3")),true); mnTextures.addMenuItem (_("Texture")+" 4", - * "DESKTOP_TEXTURE4",new BuTextureIcon (new BuIcon (BuPreferences.BU.getStringProperty - * ("desktop.image")).getImage()),true); - */ - - for (int i = 1; i <= 9; i++) { - final int indx = i; - final BuTextureIcon icon = new BuTextureIcon(); - final BuMenuItem item = mnTextures.addMenuItem(_("Texture") + " " + i, "DESKTOP_TEXTURE" + i, icon, true); - - item.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent _evt) { - final ChangeListener THIS = this; - - Thread t = new Thread(new Runnable() { - public void run() { - item.removeChangeListener(THIS); - FuLog.debug("Loading texture #" + indx); - Image image = BuPreferences.BU.getTexture(indx); - icon.setImage(image); - item.repaint(); - } - }, "Bu load texture " + indx); - t.setPriority(Thread.MIN_PRIORITY); - t.start(); - } - }); - } - - BuMenu mnCouleurs = new BuMenu(_("Couleurs"), "MENU_COULEURS", new BuColorIcon(new Color(128, 160, 255))); - mnCouleurs.addMenuItem(_("Rouge"), "DESKTOP_ROUGE", new BuColorIcon(BuLib.getColor(new Color(128, 64, 64))), true); - mnCouleurs.addMenuItem(_("Vert"), "DESKTOP_VERT", new BuColorIcon(BuLib.getColor(new Color(64, 129, 64))), true); - mnCouleurs.addMenuItem(_("Bleu"), "DESKTOP_BLEU", new BuColorIcon(BuLib.getColor(new Color(64, 64, 128))), true); - mnCouleurs.addMenuItem(_("Orange"), "DESKTOP_ORANGE", new BuColorIcon(BuLib.getColor(new Color(192, 128, 96))), - true); - mnCouleurs.addMenuItem(_("Similaire"), "DESKTOP_SIMILAIRE", - new BuColorIcon(UIManager.getColor("Panel.background")), true); - mnCouleurs.addMenuItem(_("D\xE9faut"), "DESKTOP_DEFAUT", new BuColorIcon(UIManager.getColor("Desktop.background")), - true); - - menu_.addSubMenu(mnTextures, true); - menu_.addSubMenu(mnCouleurs, true); - - return menu_; - } - - public void popupMenu(MouseEvent _evt) { - BuBackgroundPainter bp = getBackgroundPainter(); - BuPopupMenu pm = createPopupMenu(); - - BuActionChecker.setCheckedForAction(pm, "GRILLE", bp.isGrid()); - BuActionChecker.setCheckedForAction(pm, "POINTS", bp.isDots()); - BuActionChecker.setCheckedForAction(pm, "MAGNETISME", BuPreferences.BU.getBooleanProperty("desktop.snap", false)); - - int x = _evt.getX() - pm.getPreferredSize().width / 2; - int y = _evt.getY() + 12; - pm.show((JComponent) _evt.getSource(), x, y); - } - - public void actionPerformed(ActionEvent _evt) { - String action = _evt.getActionCommand(); - // System.err.println("BuDesktop ACTION="+action); - - BuBackgroundPainter bp = getBackgroundPainter(); - - if (action.equals("GRILLE")) { - bp.setGrid(!bp.isGrid()); - } else if (action.equals("POINTS")) { - bp.setDots(!bp.isDots()); - } else if (action.equals("MAGNETISME")) { - BuPreferences.BU.putBooleanProperty("desktop.snap", !BuPreferences.BU.getBooleanProperty("desktop.snap", false)); - } else if (action.equals("DESKTOP_UNIFORME")) { - /* - * if(bp.getIcon()!=null) { setBackground(UIManager.getColor("Desktop.background")); bp.setIcon(null); } - */ - bp.setGradient(false); - } else if (action.equals("DESKTOP_DEGRADE")) { - bp.setGradient(true); - } else if (action.startsWith("DESKTOP_TEXTURE")) { - if (BuLib.getUIBoolean("Desktop.textureAlwaysUsed")) bp.setIcon(null); - else - bp.setIcon(BuLib.filter(new BuIcon(BuPreferences.BU.getTexture(Integer.parseInt(action.substring(15)))))); - } else if (action.equals("DESKTOP_ROUGE")) { - setBackground(new ColorUIResource(BuLib.getColor(new Color(128, 64, 64)))); - bp.setIcon(null); - } else if (action.equals("DESKTOP_VERT")) { - setBackground(new ColorUIResource(BuLib.getColor(new Color(64, 128, 64)))); - bp.setIcon(null); - } else if (action.equals("DESKTOP_BLEU")) { - setBackground(new ColorUIResource(BuLib.getColor(new Color(64, 64, 128)))); - bp.setIcon(null); - } else if (action.equals("DESKTOP_ORANGE")) { - setBackground(new ColorUIResource(BuLib.getColor(new Color(192, 128, 96)))); - bp.setIcon(null); - } else if (action.equals("DESKTOP_SIMILAIRE")) { - setBackground(UIManager.getColor("Panel.background")); - bp.setIcon(null); - } else if (action.equals("DESKTOP_DEFAUT")) { - setBackground(UIManager.getColor("Desktop.background")); - bp.setIcon(null); - } - - setBackgroundPainter(bp); - } - - public void updateUI() { - if (isShowing()) setBackground(null); - super.updateUI(); - } -} Copied: tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java (from rev 4311, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java) =================================================================== --- tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java (rev 0) +++ tags/FudaaModeleur_0_09/fudaa_devel/ctulu/src/com/memoire/bu/BuDesktop.java 2008-12-22 15:11:04 UTC (rev 4313) @@ -0,0 +1,1281 @@ +/** + * @modification $Date: 2007-03-30 15:34:39 $ + * @statut unstable + * @file BuDesktop.java + * @version 0.43 + * @author Guillaume Desnoix + * @email gui...@de... + * @license GNU General Public License 2 (GPL2) + * @copyright 1998-2005 Guillaume Desnoix + */ + +package com.memoire.bu; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyVetoException; + +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.plaf.ColorUIResource; + +import com.memoire.fu.FuLog; + +/** + * A DesktopPane with a few additional services. Auto-resizing, optionnaly tabbed, custom-friendly, icons management, + * ... + */ +public class BuDesktop extends JDesktopPane implements MouseListener, ActionListener { + public static final int LEFT_MARGIN = 31; + + public static final int SNAPX = Math.max(4, BuPreferences.BU.getIntegerProperty("desktop.snapx", 37)); + + public static final int SNAPY = Math.max(4, BuPreferences.BU.getIntegerProperty("desktop.snapy", 37)); + + public static final int BLOCK_LAYER = JLayeredPane.DEFAULT_LAYER.intValue() - 100; + + public BuDesktop() { + super(); + + setName("buDESKTOP"); + setDesktopManager(createDesktopManager()); + setBackgroundPainter(createBackgroundPainter()); + + addMouseListener(this); + + if (isTabbed()) { + setToolTipText("..."); + setLayout(new Layout()); + } + } + + public final boolean isPalette(JComponent _f) { + return (DEFAULT_LAYER.intValue() != getLayer(_f)) + && Boolean.TRUE.equals(_f.getClientProperty("JInternalFrame.isPalette")); + } + + protected String _(String _s) { + return BuResource.BU.getString(_s); + } + + // Anti-aliasing + + public void paint(Graphics _g) { + BuLib.setAntialiasing(this, _g); + super.paint(_g); + } + + // Snap + + public final void snapXY(JComponent _f) { + if (BuPreferences.BU.getBooleanProperty("desktop.snap", false) && !isTabbed() && !isPalette(_f) + && (_f instanceof JInternalFrame)) { + Point p = _f.getLocation(); + boolean b = false; + if (p.x % SNAPX != 0) { + p.x = p.x - p.x % SNAPX; + b = true; + } + if (p.y % SNAPY != 0) { + p.y = p.y - p.y % SNAPY; + b = true; + } + if (b) _f.setLocation(p); + } + } + + public final void snapWH(JComponent _f) { + if (BuPreferences.BU.getBooleanProperty("desktop.snap", false) && !isTabbed() && !isPalette(_f) + && (_f instanceof JInternalFrame)) { + Dimension d = _f.getSize(); + boolean b = false; + if (((JInternalFrame) _f).isResizable()) { + if (d.width % SNAPX != 0) { + d.width = d.width + SNAPX - d.width % SNAPX; + b = true; + } + if (d.height % SNAPY != 0) { + d.height = d.height + SNAPY - d.height % SNAPY; + b = true; + } + } + if (b) _f.setSize(d); + } + } + + protected DesktopManager createDesktopManager() { + return new BuDesktopManager(this); + } + + protected BuBackgroundPainter createBackgroundPainter() { + BuBackgroundPainter bp = new BuBackgroundPainter(); + if (isBlocked()) { + bp.setBar(true); + bp.setBarHeight(BuLib.isMetal() ? 8 + BuResource.BU.getDefaultFrameSize() : 0); + + /* + * (BuLib.isSlaf() ? 10+BuResource.BU.getDefaultFrameSize() : 0)); + */ + } + return bp; + } + + public boolean isFocusCycleRoot() { + return true; + } + + /* + * public void moveToFront(JInternalFrame _f) { _f.moveToFront(); JInternalFrame[] frames=getAllFrames(); int + * l=frames.length; for(int i=0;i<l;i++) if(isPalette(frames[i])&&frames[i].isVisible()) frames[i].moveToFront(); } + */ + + public boolean isOpaque() { + return Boolean.TRUE.equals(UIManager.get("Desktop.opaque")); + } + + protected void addImpl(Component _c, Object _constraints, int _index) { + if (_c instanceof JInternalFrame.JDesktopIcon) { + JInternalFrame.JDesktopIcon i = (JInternalFrame.JDesktopIcon) _c; + + i.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + putLayer(i, BLOCK_LAYER); + + if (isBlocked()) { + Component[] c = i.getComponents(); + + if (BuLib.isMetal()) { + if (i.getComponentCount() == 2) { + i.remove(c[1]); + i.setBorder(BuBorders.EMPTY0000); + if (c[0] instanceof JButton) { + ((JButton) c[0]).setHorizontalAlignment(SwingConstants.LEFT); + ((JButton) c[0]).setMargin(BuInsets.INSETS1111); + ((JButton) c[0]).getModel().setRollover(false); + } + } + } else if (BuLib.isSlaf()) { + if (c.length == 2) { + i.setBorder(BuBorders.EMPTY1111); + i.setLayout(new BorderLayout(2, 0)); + i.add(c[0], BorderLayout.CENTER); // text + i.add(c[1], BorderLayout.WEST); // icon + if (c[0] instanceof JLabel) ((JLabel) c[0]).setHorizontalAlignment(SwingConstants.LEFT); + } + } + Dimension ps = i.getPreferredSize(); + if (BuLib.isMotif()) ; + else if (BuLib.isMetal()) ps.width = SNAPX * 4; + // else if(BuLib.isSlaf ()) ps.width=SNAPX*3; + else + ps.width = SNAPX * 3; + // if(ps.width %37!=0) ps.width =ps.width +37-ps.width %37; + // if(ps.height%37!=0) ps.height=ps.height+37-ps.height%37; + i.setPreferredSize(ps); + i.setSize(ps); + + JInternalFrame f = i.getInternalFrame(); + f.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent _evt) { + if (Boolean.TRUE.equals(_evt.getNewValue()) && "selected".equals(_evt.getPropertyName())) { + final JInternalFrame fintern = (JInternalFrame) _evt.getSource(); + if (fintern.isIcon()) { + try { + fintern.setIcon(false); + } catch (PropertyVetoException ex) {} + } + } + } + }); + } + } + + if (_c instanceof JComponent) { + snapXY((JComponent) _c); + snapWH((JComponent) _c); + } + + super.addImpl(_c, _constraints, _index); + + boolean b = isBlocked() && (_c instanceof JInternalFrame.JDesktopIcon); + if (b) arrangeIcons0(); + } + + public void remove(int _index) { + Component c = getComponent(_index); + Rectangle r = c.getBounds(); + boolean b = isBlocked() && (c instanceof JInternalFrame.JDesktopIcon); + + super.remove(_index); + repaint(r); + if (b) arrangeIcons0(); + } + + // Paint + + public/* synchronized */void paintComponent(Graphics _g) { + JInternalFrame[] frames = getAllFrames(); + + if (!isTabbed() || (frames.length == 0)) { + Rectangle clip = _g.getClipBounds(); + // Dimension dd =getSize(); + + BuBackgroundPainter bp = getBackgroundPainter(); + if (bp != null) bp.paintBackground(this, _g); + + if (logo_ != null) { + Rectangle ri = new Rectangle(5, + // dd.width-5-logo_.getIconWidth(), + 5, logo_.getIconWidth(), logo_.getIconHeight()); + if (ri.intersects(clip)) logo_.paintIcon(this, _g, ri.x, ri.y); + } + } else { + Dimension dd = getSize(); + Color pbg = UIManager.getColor("Panel.background"); + Color dbg = getBackground(); + + _g.setColor(pbg); + _g.fillRect(0, 0, dd.width, dd.height); // LM+4 + + // JInternalFrame[] frames=getAllFrames(); + int y, l; + + sortFramesByTitle(frames); + + l = frames.length; + y = 0; + for (int i = 0; i < l; i++) { + if (frames[i].isClosed()) continue; + if (!frames[i].isVisible()) continue; + + // if(isPalette(frames[i])) continue; + + _g.setColor(pbg); + _g.draw3DRect(0, y, LEFT_MARGIN - 1, LEFT_MARGIN - 1, false); + + if (isPalette(frames[i])) _g.setColor(pbg); + else if (frames[i].isSelected()) _g.setColor(dbg.brighter()); + else + _g.setColor(dbg); + _g.fill3DRect(1, y + 1, LEFT_MARGIN - 2, LEFT_MARGIN - 2, true); + + Icon icon = frames[i].getFrameIcon(); + if (icon == null) icon = UIManager.getIcon("InternalFrame.icon"); + if (icon != null) { + int w = icon.getIconWidth(); + int h = icon.getIconHeight(); + icon.paintIcon(this, _g, (LEFT_MARGIN - w) / 2, y + (LEFT_MARGIN - h) / 2); + } + + y += LEFT_MARGIN; + } + } + } + + public void paintChildren(Graphics _g) { + /* + * if(isTabbed()) { JInternalFrame[] frames=getAllFrames(); } else + */ + + super.paintChildren(_g); + } + + public String getToolTipText() { + return null; + } + + public/* synchronized */String getToolTipText(MouseEvent _evt) { + if (isTabbed()) { + int xe = _evt.getX(); + int ye = _evt.getY(); + + JInternalFrame[] frames = getAllFrames(); + int l = frames.length; + + if ((xe < LEFT_MARGIN) && (ye < LEFT_MARGIN * l)) { + sortFramesByTitle(frames); + JInternalFrame f = frames[ye / LEFT_MARGIN]; + String r = f.getTitle(); + if ("".equals(r)) r = null; + if (r == null) r = "" + (1 + ye / LEFT_MARGIN); + return r; + } + } + + return super.getToolTipText(_evt); + } + + public/* synchronized */Point getToolTipLocation(MouseEvent _evt) { + if (isTabbed()) { + int xe = _evt.getX(); + int ye = _evt.getY(); + + JInternalFrame[] frames = getAllFrames(); + int l = frames.length; + + if ((xe < LEFT_MARGIN) && (ye < LEFT_MARGIN * l)) { + sortFramesByTitle(frames); + // return new Point(0,(ye/LEFT_MARGIN+1)*LEFT_MARGIN); + return new Point(LEFT_MARGIN + 2, (ye / LEFT_MARGIN) * LEFT_MARGIN + 1); + } + } + + return super.getToolTipLocation(_evt); + } + + // Proprietes + + private String title_; + + public String getTitle() { + return title_; + } + + public void setTitle(String _title) { + title_ = _title; + } + + private boolean outline_ = BuPreferences.BU.getBooleanProperty("desktop.outline", true); + + public boolean isOutline() { + return outline_; + } + + // public void setOutline(boolean _outline) { outline_=_outline; } + + /* + * if(FuLib.jdk()<1.2) { if(outline) putClientProperty("JDesktopPane.dragMode","outline"); else + * putClientProperty("JDesktopPane.dragMode","faster"); } else { if(outline) setDragMode(OUTLINE_DRAG_MODE); else + * setDragMode(LIVE_DRAG_MODE); } + */ + + private boolean tabbed_ = BuPreferences.BU.getBooleanProperty("desktop.tabbed", false); + + public boolean isTabbed() { + return tabbed_; + } + + // public void setTabbed(boolean _tabbed) { tabbed_=_tabbed; } + + private boolean blocked_ = BuPreferences.BU.getBooleanProperty("desktop.blocked", true); + + public boolean isBlocked() { + return blocked_; + } + + // public void setBlocked(boolean _blocked) { blocked_=_blocked; } + + private Icon logo_; + + public Icon getLogo() { + return logo_; + } + + public void setLogo(Icon _logo) { + logo_ = _logo; + repaint(); + } + + private BuBackgroundPainter bp_; + + public BuBackgroundPainter getBackgroundPainter() { + return bp_; + } + + public void setBackgroundPainter(BuBackgroundPainter _bp) { + bp_ = _bp; + invalidate(); + repaint(); + } + + private Insets margins_ = createHardMargins(); + + protected Insets createHardMargins() { + return new Insets(0, 0, 0, 0); + } + + public Insets getHardMargins() { + Insets r = new Insets(margins_.top, margins_.left, margins_.bottom, margins_.right); + + BuBackgroundPainter bp = getBackgroundPainter(); + if (bp != null) r.bottom = Math.max(r.bottom, bp.getBarHeight()); + + return r; + } + + public void setHardMargins(Insets _margins) { + margins_ = _margins; + invalidate(); + repaint(); + } + + // Filles + + /** + * Ajoute une fenetre interne. Lors de l'ajout, la fenetre est rendue visible, positionn\xE9e devant les autres, et devient active. + * @param _f La fenetre interne a ajouter. + */ + public void addInternalFrame(JInternalFrame _f) { + if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " + + "Use Implementation.addInternalFrame() instead"); + + // B.M. : On prend garde que l'\xE9tat de la fenetre (qui peut \xEAtre une ancienne frame supprim\xE9e puis ajout\xE9e a nouveau) + // soit bien reinitialis\xE9. Sinon, risque de traceback. + if (_f.getDesktopPane() == null) { + if (_f.isSelected()) { + try { + _f.setSelected(false); + } catch (PropertyVetoException ex) {} + } + if (_f.isIcon()) { + try { + _f.setIcon(false); + } catch (PropertyVetoException ex) {} + } + + Point pf = _f.getLocation(); + if ((pf.x == 0) && (pf.y == 0)) { + Container cp = getParent(); + if (cp instanceof JViewport) { + Rectangle vr = ((JViewport) cp).getViewRect(); + Dimension df = _f.getSize(); + + pf.x = vr.x + (vr.width - df.width) / 2; + pf.y = vr.y + (vr.height - df.height) / 2; + _f.setLocation(pf); + } + } + + // SwingUtilities.updateComponentTreeUI(_f); + add(_f); + checkInternalFrame(_f); + // doLayout(); + // validate(); + + snapXY(_f); + snapWH(_f); + // repaint(); // @GDX ??? + } + + activateInternalFrame(_f); + } + + public void removeInternalFrame(JInternalFrame _f) { + if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " + + "Use Implementation.removeInternalFrame() instead"); + + if (_f != null && _f.getDesktopPane() == this) { + deactivateInternalFrame(_f); + remove(_f); + } + + adjustSize(); + } + + /** + * Indique au desktop qu'il y a eu un changement de position/taille de l'internal frame. Ceci lui permet de r\xE9ajuster sa taille. + * @param _f L'internal frame concern\xE9e par le changement de taille/position. + */ + public void checkInternalFrame(JInternalFrame _f) { + if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread."); + + Dimension dd = getSize(); + Point pf = _f.getLocation(); + Dimension df = _f.getSize(); + + if (_f.isResizable()) { + if (df.width > dd.width) df.width = dd.width; + if (df.height > dd.height) df.height = dd.height; + if (!df.equals(getSize())) _f.setSize(df); + } + + if (pf.x + df.width > dd.width) pf.x = dd.width - df.width; + if (pf.y + df.height > dd.height) pf.y = dd.height - df.height; + if (pf.x < 0) pf.x = 0; + if (pf.y < 0) pf.y = 0; + + if (isTabbed() && isPalette(_f) && (pf.x < LEFT_MARGIN + 4)) pf.x = LEFT_MARGIN + 4; + + if (!pf.equals(getLocation())) _f.setLocation(pf); + + adjustSize(); + } + + /** + * Active une fenetre interne. Lors de l'activation, la fenetre est rendue visible, positionn\xE9e devant les autres, et + * d\xE9siconifi\xE9e. + * @param _f La fenetre interne a activer. + */ + public void activateInternalFrame(JInternalFrame _f) { + if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread. " + + "Use Implementation.activateInternalFrame() instead"); + + if (!_f.isVisible()) { + _f.setVisible(true); + } + + if (_f.isClosed()) { + try { + _f.setClosed(false); + } catch (PropertyVetoException ex) {} + } + + checkInternalFrame(_f); + + if (_f.isIcon()) { + try { + _f.setIcon(false); + } catch (PropertyVetoException ex) {} + } + + // if(!isPalette(_f)) + { + moveToFront(_f); + if (!_f.isSelected() && !isPalette(_f)) { + try { + _f.setSelected(true); + } catch (PropertyVetoException ex) {} + } + } + } + + public void deactivateInternalFrame(JInternalFrame _f) { + if (!SwingUtilities.isEventDispatchThread()) throw new RuntimeException("Not in swing thread."); + + checkInternalFrame(_f); + + if (_f.isSelected()) { + try { + _f.setSelected(false); + } catch (PropertyVetoException ex) {} + } + } + + public/* synchronized */JInternalFrame getCurrentInternalFrame() { + JInternalFrame[] frames = getAllFrames(); + JInternalFrame r = null; + + for (int i = 0; i < frames.length; i++) + if (frames[i].isSelected()) { + r = frames[i]; + break; + } + + return r; + } + + public/* synchronized */JInternalFrame[] getNormalFrames() { + JInternalFrame[] frames = getAllFrames(); + int l, n, i, j; + + l = frames.length; + n = 0; + + for (i = 0; i < l; i++) + if (!frames[i].isIcon() && !isPalette(frames[i])) n++; + + JInternalFrame[] r = new JInternalFrame[n]; + + j = 0; + for (i = 0; i < l; i++) + if (!frames[i].isIcon() && !isPalette(frames[i])) { + r[j] = frames[i]; + j++; + } + + return r; + } + + public/* synchronized */JInternalFrame[] getNotIconifiedFrames() { + JInternalFrame[] frames = getAllFrames(); + int l, n, i, j; + + l = frames.length; + n = 0; + + for (i = 0; i < l; i++) + if (!frames[i].isIcon()) n++; + + JInternalFrame[] r = new JInternalFrame[n]; + + j = 0; + for (i = 0; i < l; i++) + if (!frames[i].isIcon()) { + r[j] = frames[i]; + j++; + } + + return r; + } + + public/* synchronized */JInternalFrame[] getIconifiedFrames() { + JInternalFrame[] frames = getAllFrames(); + int l, n, i, j; + + l = frames.length; + n = 0; + + for (i = 0; i < l; i++) + if (frames[i].isIcon()) n++; + + JInternalFrame[] r = new JInternalFrame[n]; + + j = 0; + for (i = 0; i < l; i++) + if (frames[i].isIcon()) { + r[j] = frames[i]; + j++; + } + + return r; + } + + public/* synchronized */JInternalFrame[] getPalettes() { + JInternalFrame[] frames = getAllFrames(); + int l, n, i, j; + + l = frames.length; + n = 0; + + for (i = 0; i < l; i++) + if (isPalette(frames[i])) n++; + + JInternalFrame[] r = new JInternalFrame[n]; + + j = 0; + for (i = 0; i < l; i++) + if (isPalette(frames[i])) { + r[j] = frames[i]; + j++; + } + + return r; + } + + public int getNormalFramesCount() { + return getNormalFrames().length; + } + + public int getNotIconifiedFramesCount() { + return getNotIconifiedFrames().length; + } + + public int getIconifiedFramesCount() { + return getIconifiedFrames().length; + } + + public int getPalettesCount() { + return getPalettes().length; + } + + public JInternalFrame getSelectedFrame() { + JInternalFrame r = null; + + if (BuLib.swing() >= 1.2) { + r = super.getSelectedFrame(); + } else { + JInternalFrame[] f = getNormalFrames(); + for (int i = 0; i < f.length; i++) + if (f[i].isSelected()) { + r = f[i]; + break; + } + } + + return r; + } + + // Reorganisation + + protected void sortFramesByTitle(JInternalFrame[] _frames) { + JInternalFrame tmp; + int i, l; + + l = _frames.length; + for (i = 0; i + 1 < l; i++) { + String t1 = _frames[i].getTitle(); + String t2 = _frames[i + 1].getTitle(); + if ((t1 != null) && (t2 != null) && (t1.compareTo(t2) > 0)) { + tmp = _frames[i]; + _frames[i] = _frames[i + 1]; + _frames[i + 1] = tmp; + i--; + if (i >= 0) i--; + } + } + } + + protected void sortFramesByHeight(JInternalFrame[] _frames) { + sortFramesByTitle(_frames); + + JInternalFrame tmp; + int i, l; + + l = _frames.length; + for (i = 0; i + 1 < l; i++) + if (_frames[i].getHeight() > _frames[i + 1].getHeight()) { + tmp = _frames[i]; + _frames[i] = _frames[i + 1]; + _frames[i + 1] = tmp; + i--; + if (i >= 0) i--; + } + } + + protected void sortFramesByWidth(JInternalFrame[] _frames) { + sortFramesByTitle(_frames); + + JInternalFrame tmp; + int i, l; + + l = _frames.length; + for (i = 0; i + 1 < l; i++) + if (_frames[i].getWidth() < _frames[i + 1].getWidth()) { + tmp = _frames[i]; + _frames[i] = _frames[i + 1]; + _frames[i + 1] = tmp; + i--; + if (i >= 0) i--; + } + } + + public/* synchronized */void waterfall() { + if (isTabbed()) return; + + JInternalFrame[] frames = getNormalFrames(); + int i, l, x, y; + + l = frames.length; + if (l > 0) { + sortFramesByTitle(frames); + + x = 74; + y = 0; // y=5; + for (i = l - 1; i >= 0; i--) { + frames[i].setLocation(x, y); + moveToFront(frames[i]); + checkInternalFrame(frames[i]); + x += SNAPX;// x+=25; + y += SNAPY;// y+=25; + } + } + } + + public/* synchronized */void tile() { + if (isTabbed()) return; + + JInternalFrame[] frames = getNormalFrames(); + int i, l, x, y, h, wd/* ,hd */; + + l = frames.length; + if (l > 0) { + sortFramesByHeight(frames); + + wd = getWidth(); // getSize().width; + // hd=getHeight(); // getSize().height; + wd = (wd < 200 ? 20... [truncated message content] |
From: <bma...@us...> - 2009-01-12 11:28:40
|
Revision: 4344 http://fudaa.svn.sourceforge.net/fudaa/?rev=4344&view=rev Author: bmarchan Date: 2009-01-12 11:28:25 +0000 (Mon, 12 Jan 2009) Log Message: ----------- Created tag FudaaModeleur_0_10. Added Paths: ----------- tags/FudaaModeleur_0_10/ tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java tags/FudaaModeleur_0_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Removed Paths: ------------- tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java tags/FudaaModeleur_0_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Property changes on: tags/FudaaModeleur_0_10 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-01-09 15:13:24 UTC (rev 4342) +++ tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-01-12 11:28:25 UTC (rev 4344) @@ -1,231 +0,0 @@ -/** - * @file ZCalqueAffichageDonneesInterface.java - * @creation 24 oct. 2003 - * @modification $Date$ - * @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; - -import java.awt.Graphics2D; -import java.beans.PropertyChangeListener; - -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; - -import org.fudaa.ctulu.CtuluListSelectionInterface; - -import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; -import org.fudaa.ebli.commun.EbliTableInfoTarget; -import org.fudaa.ebli.find.EbliFindableItem; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrMorphisme; -import org.fudaa.ebli.geometrie.GrPoint; -import org.fudaa.ebli.palette.BPalettePlageTarget; -import org.fudaa.ebli.trace.TraceIconModel; -import org.fudaa.ebli.trace.TraceLigneModel; - -/** - * Une interface pour un calque d'affichage contenant des donn\xE9es, supportant la recherche et - * pouvant etre une cible d'une palette de couleurs. - * - * @author deniger - * @version $Id$ - */ -public interface ZCalqueAffichageDonneesInterface extends EbliFindableItem, BPalettePlageTarget, EbliTableInfoTarget, - ZCalqueAffichageInterface { - - void fillWithInfo(BCalquePaletteInfo.InfoData _d); - - /** - * Efface la selection du calque. - */ - void clearSelection(); - - /** - * Tout selectionner. - */ - void selectAll(); - - /** - * Selectionne les objets d'indices donn\xE9es. - * @param _idx Les indices. - */ - boolean setSelection(int[] _idx); - - /** - * Selectionne l'objet suivant de l'objet en cours. - * @return true si la selection a \xE9t\xE9 modifi\xE9e. - */ - public boolean selectNext(); - - - /** - * Selectionne l'objet suivant de l'objet en cours. - * @return true si la selection a \xE9t\xE9 modifi\xE9e. - */ - public boolean selectPrevious(); - - /** - * Inverser la selection. - */ - void inverseSelection(); - - boolean isEditable(); - - /** - * Definit si les objets du calque sont ou non selectionnables. - * @return true : Les objets sont selectionnables. - */ - boolean isSelectable(); - - /** - * Definit si l'utilisateur peut changer le caract\xE8re s\xE9lectionnable/non depuis l'action "Selectionnable". - * @return true : Si le calque peut \xEAtre rendu selectionnable - */ - public boolean canSetSelectable(); - - /** - * @return la boite zoomant sur la selection. Cette boite est la boite englobante - * augment\xE9e d'une marge. - */ - GrBoite getZoomOnSelected(); - - /** - * La boite englobante des objets s\xE9lectionn\xE9s. - * @return La boite - */ - GrBoite getDomaineOnSelected(); - - /** - * @return true si seulement un objet selectionne. - */ - boolean isOnlyOneObjectSelected(); - - /** - * Permet de modifier la selection du calque \xE0 partir d'un selection ponctuelle. - * - * @param _pointReel le point de selection en coordonnees reelles - * @param _tolerancePixel la tolerance utilisee pour determiner si un objet est selectionne - * @param _action voir les action de ZCalqueSelectionInteraction - * @return true si la selection a ete modifiee - * @see ZCalqueSelectionInteractionAbstract - */ - boolean changeSelection(GrPoint _pointReel, int _tolerancePixel, int _action); - - /** - * Permet de modifier la selection du calque \xE0 partir d'un poly de selection. - * - * @param _p le polygone englobant en COORDONNEES REELS - * @param _action l'action sur la selection (voir les action de ZCalqueSelectionInteraction) - * @param _mode TODO - * @return true si selection modifiee - * @see ZCalqueSelectionInteractionAbstract - */ - boolean changeSelection(LinearRing _p, int _action, int _mode); - - boolean changeSelection(LinearRing[] _p, int _action, int _mode); - - /** - * @return la ligne repr\xE9sentant la s\xE9lection courant. null si s\xE9lection non adequate - */ - LineString getSelectedLine(); - - /** - * @return true si la selection est vide - */ - boolean isSelectionEmpty(); - - /** - * @return le modele utilise - */ - ZModeleDonnees modeleDonnees(); - - /** - * @param _l un listener pour la selection - */ - void addSelectionListener(ZSelectionListener _l); - - /** - * @param _l le listener a enlever - */ - void removeSelectionListener(ZSelectionListener _l); - - /** - * @return l'id du calque - */ - String getName(); - - /** - * @return true si la selection sur une selection entre 2 points est possible. - */ - boolean isSpecialSelectionAllowed(); - - /** - * @param _l le listener a ajouter - */ - void addPropertyChangeListener(PropertyChangeListener _l); - - /** - * @param _l le listener a enlever - */ - void removePropertyChangeListener(PropertyChangeListener _l); - - /** - * Edition de la selection. - * - * @return chaine d'erreur - */ - String editSelected(); - - /** - * Permet au calque selection interaction de dessiner la s\xE9lection en dernier et donc par-dessus tous les autres - * calques. - * - * @param _g le grphics a modifier - * @param _trace le conteneur des tracer de selection - */ - void paintSelection(Graphics2D _g, ZSelectionTrace _trace, GrMorphisme _versEcran, GrBoite _clipReel); - - /** - * Redessiner le calque. - */ - void repaint(); - - /** - * @return la selection multi. Peut etre null. - */ - EbliListeSelectionMultiInterface getLayerSelectionMulti(); - - /** - * @return la selection simple. Peut etre null. - */ - CtuluListSelectionInterface getLayerSelection(); - - /** - * Un calque peut dispose de plusieurs jeux d'icone. - * - * @param _idx l'indice de l'icone. - * @param _model - * @return - */ - boolean setIconModel(int _idx, final TraceIconModel _model); - - TraceIconModel getIconModel(int _idx); - - /** - * @param _idx l'indice du jeu d'icone/ligne. - * @return le titre du jeu - */ - String getSetTitle(int _idx); - - /** - * @return le nomnbre de jeu d'icone/ligne - */ - int getNbSet(); - - boolean setLineModel(int _idx, final TraceLigneModel _model); - - TraceLigneModel getLineModel(int _idx); -} Copied: tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java (from rev 4343, branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java) =================================================================== --- tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java (rev 0) +++ tags/FudaaModeleur_0_10/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-01-12 11:28:25 UTC (rev 4344) @@ -0,0 +1,232 @@ +/** + * @file ZCalqueAffichageDonneesInterface.java + * @creation 24 oct. 2003 + * @modification $Date$ + * @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; + +import java.awt.Graphics2D; +import java.beans.PropertyChangeListener; + +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; + +import org.fudaa.ctulu.CtuluListSelectionInterface; + +import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; +import org.fudaa.ebli.commun.EbliTableInfoTarget; +import org.fudaa.ebli.find.EbliFindableItem; +import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrMorphisme; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.palette.BPalettePlageTarget; +import org.fudaa.ebli.trace.TraceIconModel; +import org.fudaa.ebli.trace.TraceLigneModel; + +/** + * Une interface pour un calque d'affichage contenant des donn\xE9es, supportant la recherche et + * pouvant etre une cible d'une palette de couleurs. + * + * @author deniger + * @version $Id$ + */ +public interface ZCalqueAffichageDonneesInterface extends EbliFindableItem, BPalettePlageTarget, EbliTableInfoTarget, + ZCalqueAffichageInterface { + + void fillWithInfo(BCalquePaletteInfo.InfoData _d); + + /** + * Efface la selection du calque. + */ + void clearSelection(); + + /** + * Tout selectionner. + */ + void selectAll(); + + /** + * Selectionne les objets d'indices donn\xE9es. + * @param _idx Les indices. + */ + boolean setSelection(int[] _idx); + + /** + * Selectionne l'objet suivant de l'objet en cours. + * @return true si la selection a \xE9t\xE9 modifi\xE9e. + */ + public boolean selectNext(); + + + /** + * Selectionne l'objet suivant de l'objet en cours. + * @return true si la selection a \xE9t\xE9 modifi\xE9e. + */ + public boolean selectPrevious(); + + /** + * Inverser la selection. + */ + void inverseSelection(); + + boolean isEditable(); + + /** + * Definit si les objets du calque sont ou non selectionnables. Si la valeur retourn\xE9e est false, les + * m\xE9thodes de s\xE9lection de l'interface n'ont aucun effet. + * @return true : Les objets sont selectionnables. + */ + boolean isSelectable(); + + /** + * Definit si l'utilisateur peut changer le caract\xE8re s\xE9lectionnable/non depuis l'action "Selectionnable". + * @return true : Si le calque peut \xEAtre rendu selectionnable + */ + public boolean canSetSelectable(); + + /** + * @return la boite zoomant sur la selection. Cette boite est la boite englobante + * augment\xE9e d'une marge. + */ + GrBoite getZoomOnSelected(); + + /** + * La boite englobante des objets s\xE9lectionn\xE9s. + * @return La boite + */ + GrBoite getDomaineOnSelected(); + + /** + * @return true si seulement un objet selectionne. + */ + boolean isOnlyOneObjectSelected(); + + /** + * Permet de modifier la selection du calque \xE0 partir d'un selection ponctuelle. + * + * @param _pointReel le point de selection en coordonnees reelles + * @param _tolerancePixel la tolerance utilisee pour determiner si un objet est selectionne + * @param _action voir les action de ZCalqueSelectionInteraction + * @return true si la selection a ete modifiee + * @see ZCalqueSelectionInteractionAbstract + */ + boolean changeSelection(GrPoint _pointReel, int _tolerancePixel, int _action); + + /** + * Permet de modifier la selection du calque \xE0 partir d'un poly de selection. + * + * @param _p le polygone englobant en COORDONNEES REELS + * @param _action l'action sur la selection (voir les action de ZCalqueSelectionInteraction) + * @param _mode TODO + * @return true si selection modifiee + * @see ZCalqueSelectionInteractionAbstract + */ + boolean changeSelection(LinearRing _p, int _action, int _mode); + + boolean changeSelection(LinearRing[] _p, int _action, int _mode); + + /** + * @return la ligne repr\xE9sentant la s\xE9lection courant. null si s\xE9lection non adequate + */ + LineString getSelectedLine(); + + /** + * @return true si la selection est vide + */ + boolean isSelectionEmpty(); + + /** + * @return le modele utilise + */ + ZModeleDonnees modeleDonnees(); + + /** + * @param _l un listener pour la selection + */ + void addSelectionListener(ZSelectionListener _l); + + /** + * @param _l le listener a enlever + */ + void removeSelectionListener(ZSelectionListener _l); + + /** + * @return l'id du calque + */ + String getName(); + + /** + * @return true si la selection sur une selection entre 2 points est possible. + */ + boolean isSpecialSelectionAllowed(); + + /** + * @param _l le listener a ajouter + */ + void addPropertyChangeListener(PropertyChangeListener _l); + + /** + * @param _l le listener a enlever + */ + void removePropertyChangeListener(PropertyChangeListener _l); + + /** + * Edition de la selection. + * + * @return chaine d'erreur + */ + String editSelected(); + + /** + * Permet au calque selection interaction de dessiner la s\xE9lection en dernier et donc par-dessus tous les autres + * calques. + * + * @param _g le grphics a modifier + * @param _trace le conteneur des tracer de selection + */ + void paintSelection(Graphics2D _g, ZSelectionTrace _trace, GrMorphisme _versEcran, GrBoite _clipReel); + + /** + * Redessiner le calque. + */ + void repaint(); + + /** + * @return la selection multi. Peut etre null. + */ + EbliListeSelectionMultiInterface getLayerSelectionMulti(); + + /** + * @return la selection simple. Peut etre null. + */ + CtuluListSelectionInterface getLayerSelection(); + + /** + * Un calque peut dispose de plusieurs jeux d'icone. + * + * @param _idx l'indice de l'icone. + * @param _model + * @return + */ + boolean setIconModel(int _idx, final TraceIconModel _model); + + TraceIconModel getIconModel(int _idx); + + /** + * @param _idx l'indice du jeu d'icone/ligne. + * @return le titre du jeu + */ + String getSetTitle(int _idx); + + /** + * @return le nomnbre de jeu d'icone/ligne + */ + int getNbSet(); + + boolean setLineModel(int _idx, final TraceLigneModel _model); + + TraceLigneModel getLineModel(int _idx); +} Deleted: tags/FudaaModeleur_0_10/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-09 15:13:24 UTC (rev 4342) +++ tags/FudaaModeleur_0_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2009-01-12 11:28:25 UTC (rev 4344) @@ -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.09"; - isMdl_.date = "2008-12-22"; - isMdl_.rights = "Tous droits r\xE9serv\xE9s. CETMEF (c)1999-2008"; - 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_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (from rev 4343, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java) =================================================================== --- tags/FudaaModeleur_0_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java (rev 0) +++ tags/FudaaModeleur_0_10/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2009-01-12 11:28:25 UTC (rev 4344) @@ -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; +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... [truncated message content] |
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] |
From: <bma...@us...> - 2009-03-30 08:10:51
|
Revision: 4594 http://fudaa.svn.sourceforge.net/fudaa/?rev=4594&view=rev Author: bmarchan Date: 2009-03-30 08:10:42 +0000 (Mon, 30 Mar 2009) Log Message: ----------- Created tag FudaaModeleur_0_13. Added Paths: ----------- tags/FudaaModeleur_0_13/ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceFactory.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceImmutable.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceUniqueImmutable.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionBloc.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/profile/InterpolationProfilRefineAndProj.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/profile/ProfileCalculator.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/profile/TestInterpolationProfile.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FortranDoubleReader.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/io/MascaretCasierFileFormat.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/io/MascaretCasierWriter.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarCasierFileFormat.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarCasierWriter.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMFileFormat.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesTraceConfigure.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueBloc.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleBloc.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteractionTargetI.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorLigneBriseePanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleBlocDefault.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/controle/BSelecteurSurfaceModel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/geometrie/GrVecteur.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/trace/TraceSurface.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/trace/TraceSurfaceChooser.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/trace/TraceSurfaceRenderer.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/LibUtils.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/Mdl.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExporter.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExporterFilter.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCutCopyPasteManager.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolateProfilePanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportTreeModel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlZDialog.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/MdlCasierExportAction.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePointAction.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProfilInterpolationAction.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dAxe.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dLimiteStockage.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dTrace.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCasier.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dDirectionLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dProfile.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayerFactory.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCasier.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainer.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/FusionBiefPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/OpenBiefPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueBief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/persistence/MdlLayer2dCasierPersistence.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/persistence/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/resource/ tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/resource/exporter-casier.png tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/resource/new-casier.png tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/resource/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java Removed Paths: ------------- tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceFactory.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GiSCoordinateSequenceImmutable.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GisCoordinateSequenceUniqueImmutable.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/profile/ProfileCalculator.java tags/FudaaModeleur_0_13/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/profile/TestInterpolationProfile.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FortranDoubleReader.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMFileFormat.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java tags/FudaaModeleur_0_13/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesTraceConfigure.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteractionTargetI.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorLigneBriseePanel.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/geometrie/GrVecteur.java tags/FudaaModeleur_0_13/fudaa_devel/ebli/src/org/fudaa/ebli/trace/TraceSurface.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/LibUtils.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/Mdl.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolateProfilePanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportTreeModel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlResource.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProfilInterpolation.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dAxe.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dLimiteStockage.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dTrace.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dDirectionLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dProfile.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayerFactory.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/mdl_en.fr_txt tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainer.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/OpenBiefPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueBief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/package.html tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java tags/FudaaModeleur_0_13/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java Property changes on: tags/FudaaModeleur_0_13 ___________________________________________________________________ Added: svn:ignore + eclipse_projects Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF:3445-3850 /branches/FudaaModeleur_TC1:3861-3891 Deleted: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java 2009-02-27 08:37:25 UTC (rev 4503) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -1,57 +0,0 @@ -/* - * @creation 24 sept. 2004 - * @modification $Date: 2006-02-09 08:59:30 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.fileformat; - -import java.io.File; - -import org.fudaa.ctulu.CtuluIOOperationSynthese; -import org.fudaa.ctulu.ProgressionInterface; - - -/** - * @author Fred Deniger - * @version $Id: FileFormatVersionInterface.java,v 1.3 2006-02-09 08:59:30 deniger Exp $ - */ -public interface FileFormatVersionInterface { - - /** - * @return le format parent - */ - FileFormat getFileFormat(); - - /** - * @return le nom de cette version - */ - String getVersionName(); - - - /** - * @return le reader asssocie a ce format - */ - FileReadOperationAbstract createReader(); - - /** - * @return le writer associe a cette version - */ - FileWriteOperationAbstract createWriter(); - - /** - * @param _f le fichier a lire - * @param _prog la barre de progression - * @return la synthese de la lecture. Les donnees lues sont dans la synthese (getSource()). - */ - CtuluIOOperationSynthese read(File _f,ProgressionInterface _prog); - - /** - * @param _f le fichier a ecrire - * @param _source la source. Il faut tester si l'instance est correcte - * @param _prog la barre de progression - * @return la synthese de l'operation - */ - CtuluIOOperationSynthese write(File _f,Object _source,ProgressionInterface _prog); -} \ No newline at end of file Copied: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java (from rev 4547, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java) =================================================================== --- tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java (rev 0) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/fileformat/FileFormatVersionInterface.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -0,0 +1,59 @@ +/* + * @creation 24 sept. 2004 + * @modification $Date: 2006-02-09 08:59:30 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.fileformat; + +import java.io.File; + +import org.fudaa.ctulu.CtuluIOOperationSynthese; +import org.fudaa.ctulu.ProgressionInterface; + + +/** + * Une interface d\xE9finissant un format de fichier. Elle permet d'acc\xE9der a la classe d'\xE9criture/lecture de ce format + * de fichier. + * @author Fred Deniger + * @version $Id: FileFormatVersionInterface.java,v 1.3 2006-02-09 08:59:30 deniger Exp $ + */ +public interface FileFormatVersionInterface { + + /** + * @return le format parent + */ + FileFormat getFileFormat(); + + /** + * @return le nom de cette version + */ + String getVersionName(); + + + /** + * @return le reader asssocie a ce format + */ + FileReadOperationAbstract createReader(); + + /** + * @return le writer associe a cette version + */ + FileWriteOperationAbstract createWriter(); + + /** + * @param _f le fichier a lire + * @param _prog la barre de progression + * @return la synthese de la lecture. Les donnees lues sont dans la synthese (getSource()). + */ + CtuluIOOperationSynthese read(File _f,ProgressionInterface _prog); + + /** + * @param _f le fichier a ecrire + * @param _source la source. Il faut tester si l'instance est correcte + * @param _prog la barre de progression + * @return la synthese de l'operation + */ + CtuluIOOperationSynthese write(File _f,Object _source,ProgressionInterface _prog); +} \ No newline at end of file Deleted: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-02-27 08:37:25 UTC (rev 4503) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -1,367 +0,0 @@ -/* - * @creation 7 avr. 2005 - * @modification $Date$ - * @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; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.gui.CtuluValueEditorChoice; - -import com.memoire.fu.FuLib; - -/** - * Une classe pour d\xE9finir des attributs syst\xE8mes associables \xE0 des objets GIS. Les attributs syst\xE8mes - * sont en principe des attributs programme (non construits par l'utilisateur). Le systeme connait - * ces attributs sp\xE9cifiques, et peut r\xE9agir en cons\xE9quence.<p> - * L'ID de chacun de ces attributs est ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans - * les fichiers GML. - * - * @author Fred Deniger - * @version $Id$ - */ -public final class GISAttributeConstants { - - /** Etat geom modifi\xE9. */ - public final static String ATT_VAL_ETAT_MODI="MODI"; - /** Etat geom origine */ - public final static String ATT_VAL_ETAT_ORIG="ORIG"; - /** Une valeur d'attribut valant True */ - public final static String ATT_VAL_TRUE="T"; - /** Une valeur d'attribut valant False */ - public final static String ATT_VAL_FALSE="F"; - - /** Nature Semis */ - public final static String ATT_NATURE_SM="SM"; - /** Nature Courbe niveau */ - public final static String ATT_NATURE_CN="CN"; - /** Nature Profil */ - public final static String ATT_NATURE_PF="PF"; - /** Nature Ligne directrice */ - public final static String ATT_NATURE_LD="LD"; - /** Nature Ligne de contrainte */ - public final static String ATT_NATURE_LC="LC"; - /** Nature Trace de profil */ - public final static String ATT_NATURE_TP="TP"; - /** Nature Zone */ - public final static String ATT_NATURE_ZN="ZN"; - /** Nature Contour d'\xE9tude */ - public final static String ATT_NATURE_CE="CE"; - /** Nature axe hydraulique */ - public final static String ATT_NATURE_AH="AH"; - /** Nature rive (gauche ou droite) */ - public final static String ATT_NATURE_RV="RV"; - /** Nature limite de stockage */ - public final static String ATT_NATURE_LS="LS"; - - /** - * Un attribut nom, global. - */ - public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) { - /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de nom. */ - private int numid_=0; - String def_ = CtuluLib.getS("<Defaut>"); - - public String getID() { - return "ATTRIBUTE_TITLE"; - } - - protected Object createGlobalValues(final Object _initValues) { - Object r = _initValues; - // Si la valeur en entr\xE9e est la valeur par d\xE9faut, alors une nouvelle valeur en sortie est cr\xE9\xE9e. - // Ceci permet d'affecter automatiquement un nom nouveau \xE0 une g\xE9om\xE9trie cr\xE9\xE9e. - if (r == null || def_.equals(r)) { - return r="Geom_"+(++numid_); - } - else { - return super.createGlobalValues(_initValues); - } - } - - public Object getDefaultValue() { - return def_; - } - }; - - /** - * Un attribut nature, global. - */ - public final static GISAttributeString NATURE = new GISAttributeString(CtuluLib.getS("Nature"), false) { - public String getID() { - return "ATTRIBUTE_NATURE"; - } - - public boolean isEditable() { - return false; - } - }; - - /** - * Un attribut etat, global a la g\xE9om\xE9trie. - */ - public final static GISAttributeString ETAT_GEOM= - new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, - new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { - public String getID() { - return "ATTRIBUTE_ETAT_GEOM"; - } - - protected Object createGlobalValues(Object _initValues) { - if (_initValues instanceof Object[]) { - // Si au moins une des valeurs est "modifi\xE9", on retourne "modifi\xE9". - boolean modifie=false; - int i=-1; - while (!modifie&&++i<((Object[])_initValues).length) - modifie=((Object[])_initValues)[i]==ATT_VAL_ETAT_MODI; - if (modifie) - _initValues=ATT_VAL_ETAT_MODI; - else - _initValues=ATT_VAL_ETAT_ORIG; - } - return super.createGlobalValues(_initValues); - } - - public boolean isEditable() { - return true; - } - - public Object getDefaultValue() { - return ATT_VAL_ETAT_ORIG; - } - }; - - /** - * Un attribut visibilit\xE9, global a la g\xE9om\xE9trie. - */ - public final static GISAttributeString VISIBILITE = - new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_TRUE, ATT_VAL_FALSE}, - new String[]{CtuluLib.getS("Oui"), CtuluLib.getS("Non")}), CtuluLib.getS("Visibilit\xE9"), false) { - - public String getID() { - return "ATTRIBUTE_VISIBILITY"; - } - - public boolean isEditable() { - return true; - } - - public Object getDefaultValue() { - return ATT_VAL_TRUE; - } - }; - - /** - * Un attribut commentaire hydraulique, utilis\xE9 dans la lecture/ecriture des fichiers. - */ - public final static GISAttributeString COMMENTAIRE_HYDRO = new GISAttributeString(CtuluLib.getS("Commentaire hydro"), false) { - public String getID() { - return "ATTRIBUTE_HYDRO_COMMENT"; - } - }; - - /** - * Un attribut label, atomique. - */ - public final static GISAttributeString LABEL = new GISAttributeString(CtuluLib.getS("Label"), true) { - public String getID() { - return "ATTRIBUTE_LABEL"; - } - }; - - /** - * Un attribut bathy, atomique. - */ - public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { - - public String getID() { - return "ATTRIBUTE_Z"; - } - }; - - /** - * Un attribut index de g\xE9om\xE9trie. - * Attention : Il n'est utilis\xE9 que lors de la sauvegarde, et n'apparait pas dans les calques autrement. - */ - public final static GISAttributeInteger INDEX_GEOM = new GISAttributeInteger(CtuluLib.getS("Index"), false) { - - public String getID() { - return "ATTRIBUTE_INDEX_GEOM"; - } - }; - - /** La liste des attributs syst\xE8mes. */ - protected final static List<GISAttribute> attrs_= - Arrays.asList(new GISAttribute[]{BATHY,TITRE,NATURE,VISIBILITE,ETAT_GEOM,COMMENTAIRE_HYDRO,LABEL}); - - private GISAttributeConstants() {} - - public static String toString(final GISAttributeInterface _att) { - for (GISAttributeInterface att: attrs_) { - if (_att==att) return _att.getID(); - } - final String attributeSep = getAttributeSep(); - return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") - + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); - } - - private static String getAttributeSep() { - return "|"; - } - - /** - * Retourne l'attribut syst\xE8me a partir de son identifiant. - * @param _idName L'identifiant. - * @return L'attribut syst\xE8me, ou null si aucun ne correspond a l'identifiant. - */ - public static GISAttributeInterface getConstantAttribute(final String _idName) { - for (GISAttributeInterface att: attrs_) { - if (att.getID().equals(_idName)) return att; - } - return null; - } - - public static GISAttributeInterface restoreFrom(final String _s) { - GISAttributeInterface res = getConstantAttribute(_s); - if (res != null) { - return res; - } - final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); - if (s == null || s.length != 3) { - return null; - } - final String clazz = s[0]; - final String name = s[1]; - final boolean atomic = CtuluLibString.toBoolean(s[2]); - if (clazz.equals(Double.class.getName())) { - res = new GISAttributeDouble(name, atomic); - if (BATHY.isSameContent(res)) { - res = BATHY; - } - } else if (clazz.equals(Integer.class.getName())) { - res = new GISAttributeInteger(name, atomic); - } else { - res = new GISAttributeString(name, atomic); - if (TITRE.isSameContent(res)) { - res = TITRE; - } - else if (NATURE.isSameContent(res)) { - res = NATURE; - } - else if (ETAT_GEOM.isSameContent(res)) { - res = ETAT_GEOM; - } - else if (VISIBILITE.isSameContent(res)) { - res = VISIBILITE; - } - else if (COMMENTAIRE_HYDRO.isSameContent(res)) { - res = COMMENTAIRE_HYDRO; - } - } - - return res; - } - - /** - * Retourne la liste des attributs syst\xE8mes. - * @return La liste. - */ - public static List<GISAttribute> getDefaults() { - return new ArrayList<GISAttribute>(attrs_); // Une copie, pour eviter les modifications. - } - - /** - * L'attribut est-il un attribut syst\xE8me ? - * @param _att L'attribut a tester. - * @return True si l'attribut est systeme. - */ - public static boolean isConstant(final GISAttributeInterface _att) { - for (GISAttributeInterface att: attrs_) { - if (_att==att) return true; - } - return false; - } - - // Attributs 1D \\ - - /** - * Attribut contenant l'index du point correspondant \xE0 l'intersection entre - * une rive gauche et un profil. - */ - public final static GISAttributeInteger INTERSECTION_RIVE_GAUCHE=new GISAttributeInteger(CtuluLib.getS("Intersection rive gauche"), false){ - @Override - public String getID() { - return "ATTRIBUTE_INTERSECTION_RIVE_GAUCHE"; - } - }; - - /** - * Attribut contenant l'index du point correspondant \xE0 l'intersection entre - * une rive droite et un profil. - */ - public final static GISAttributeInteger INTERSECTION_RIVE_DROITE=new GISAttributeInteger(CtuluLib.getS("Intersection rive droite"), false){ - @Override - public String getID() { - return "ATTRIBUTE_INTERSECTION_RIVE_DROITE"; - } - }; - - /** - * Attribut contenant l'index du point correspondant \xE0 l'intersection entre - * une limite de stockage gauche et un profil. - */ - public final static GISAttributeInteger INTERSECTION_LIMITE_STOCKAGE_GAUCHE=new GISAttributeInteger(CtuluLib - .getS("Intersection limite stockage gauche"), false){ - @Override - public String getID() { - return "ATTRIBUTE_INTERSECTION_LIMITE_STOCKAGE_GAUCHE"; - } - }; - - /** - * Attribut contenant l'index du point correspondant \xE0 l'intersection entre - * une limite de stockage droite et un profil. - */ - public final static GISAttributeInteger INTERSECTION_LIMITE_STOCKAGE_DROITE=new GISAttributeInteger(CtuluLib - .getS("Intersection limite stockage droite"), false){ - @Override - public String getID() { - return "ATTRIBUTE_INTERSECTION_LIMITE_STOCKAGE_DROITE"; - } - }; - - /** - * Attribut contenant l'index des points correspondants aux l'intersections entre - * les lignes directrices et un profil. Ces index sont stock\xE9s dans une {@link GISAttributeModelIntegerList}. - */ - public final static GISAttribute INTERSECTIONS_LIGNES_DIRECTRICES=new GISAttribute(null, CtuluLib - .getS("Intersections lignes directrices"), false){ - @Override - public String getID() { - return "ATTRIBUTE_INTERSECTIONS_LIGNES_DIRECTRICES"; - } - @Override - protected Object createGlobalValues(Object _initValues) { - if (_initValues instanceof GISAttributeModelIntegerList) - return _initValues; - else - return getDefaultValue(); - }; - }; - - /** - * Attribut contenant le d\xE9calage curviligne de l'axe hydraulique. - */ - public final static GISAttribute CURVILIGNE_DECALAGE=new GISAttributeDouble(CtuluLib.getS("D\xE9calage curviligne"), false) { - @Override - public String getID() { - return "ATTRIBUTE_CURVILIGNE_DECALAGE"; - } - }; -} Copied: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java (from rev 4547, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java) =================================================================== --- tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java (rev 0) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -0,0 +1,369 @@ +/* + * @creation 7 avr. 2005 + * @modification $Date$ + * @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; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.gui.CtuluValueEditorChoice; + +import com.memoire.fu.FuLib; + +/** + * Une classe pour d\xE9finir des attributs syst\xE8mes associables \xE0 des objets GIS. Les attributs syst\xE8mes + * sont en principe des attributs programme (non construits par l'utilisateur). Le systeme connait + * ces attributs sp\xE9cifiques, et peut r\xE9agir en cons\xE9quence.<p> + * L'ID de chacun de ces attributs est ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans + * les fichiers GML. + * + * @author Fred Deniger + * @version $Id$ + */ +public final class GISAttributeConstants { + + /** Etat geom modifi\xE9. */ + public final static String ATT_VAL_ETAT_MODI="MODI"; + /** Etat geom origine */ + public final static String ATT_VAL_ETAT_ORIG="ORIG"; + /** Une valeur d'attribut valant True */ + public final static String ATT_VAL_TRUE="T"; + /** Une valeur d'attribut valant False */ + public final static String ATT_VAL_FALSE="F"; + + /** Nature Semis */ + public final static String ATT_NATURE_SM="SM"; + /** Nature Courbe niveau */ + public final static String ATT_NATURE_CN="CN"; + /** Nature Profil */ + public final static String ATT_NATURE_PF="PF"; + /** Nature Ligne directrice */ + public final static String ATT_NATURE_LD="LD"; + /** Nature Ligne de contrainte */ + public final static String ATT_NATURE_LC="LC"; + /** Nature Trace de profil */ + public final static String ATT_NATURE_TP="TP"; + /** Nature Zone */ + public final static String ATT_NATURE_ZN="ZN"; + /** Nature Contour d'\xE9tude */ + public final static String ATT_NATURE_CE="CE"; + /** Nature axe hydraulique */ + public final static String ATT_NATURE_AH="AH"; + /** Nature rive (gauche ou droite) */ + public final static String ATT_NATURE_RV="RV"; + /** Nature limite de stockage */ + public final static String ATT_NATURE_LS="LS"; + /** Nature casier */ + public final static String ATT_NATURE_CA="CA"; + + /** + * Un attribut nom, global. + */ + public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) { + /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de nom. */ + private int numid_=0; + String def_ = CtuluLib.getS("<Defaut>"); + + public String getID() { + return "ATTRIBUTE_TITLE"; + } + + protected Object createGlobalValues(final Object _initValues) { + Object r = _initValues; + // Si la valeur en entr\xE9e est la valeur par d\xE9faut, alors une nouvelle valeur en sortie est cr\xE9\xE9e. + // Ceci permet d'affecter automatiquement un nom nouveau \xE0 une g\xE9om\xE9trie cr\xE9\xE9e. + if (r == null || def_.equals(r)) { + return r="Geom_"+(++numid_); + } + else { + return super.createGlobalValues(_initValues); + } + } + + public Object getDefaultValue() { + return def_; + } + }; + + /** + * Un attribut nature, global. + */ + public final static GISAttributeString NATURE = new GISAttributeString(CtuluLib.getS("Nature"), false) { + public String getID() { + return "ATTRIBUTE_NATURE"; + } + + public boolean isEditable() { + return false; + } + }; + + /** + * Un attribut etat, global a la g\xE9om\xE9trie. + */ + public final static GISAttributeString ETAT_GEOM= + new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, + new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { + public String getID() { + return "ATTRIBUTE_ETAT_GEOM"; + } + + protected Object createGlobalValues(Object _initValues) { + if (_initValues instanceof Object[]) { + // Si au moins une des valeurs est "modifi\xE9", on retourne "modifi\xE9". + boolean modifie=false; + int i=-1; + while (!modifie&&++i<((Object[])_initValues).length) + modifie=((Object[])_initValues)[i]==ATT_VAL_ETAT_MODI; + if (modifie) + _initValues=ATT_VAL_ETAT_MODI; + else + _initValues=ATT_VAL_ETAT_ORIG; + } + return super.createGlobalValues(_initValues); + } + + public boolean isEditable() { + return true; + } + + public Object getDefaultValue() { + return ATT_VAL_ETAT_ORIG; + } + }; + + /** + * Un attribut visibilit\xE9, global a la g\xE9om\xE9trie. + */ + public final static GISAttributeString VISIBILITE = + new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_TRUE, ATT_VAL_FALSE}, + new String[]{CtuluLib.getS("Oui"), CtuluLib.getS("Non")}), CtuluLib.getS("Visibilit\xE9"), false) { + + public String getID() { + return "ATTRIBUTE_VISIBILITY"; + } + + public boolean isEditable() { + return true; + } + + public Object getDefaultValue() { + return ATT_VAL_TRUE; + } + }; + + /** + * Un attribut commentaire hydraulique, utilis\xE9 dans la lecture/ecriture des fichiers. + */ + public final static GISAttributeString COMMENTAIRE_HYDRO = new GISAttributeString(CtuluLib.getS("Commentaire hydro"), false) { + public String getID() { + return "ATTRIBUTE_HYDRO_COMMENT"; + } + }; + + /** + * Un attribut label, atomique. + */ + public final static GISAttributeString LABEL = new GISAttributeString(CtuluLib.getS("Label"), true) { + public String getID() { + return "ATTRIBUTE_LABEL"; + } + }; + + /** + * Un attribut bathy, atomique. + */ + public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { + + public String getID() { + return "ATTRIBUTE_Z"; + } + }; + + /** + * Un attribut index de g\xE9om\xE9trie. + * Attention : Il n'est utilis\xE9 que lors de la sauvegarde, et n'apparait pas dans les calques autrement. + */ + public final static GISAttributeInteger INDEX_GEOM = new GISAttributeInteger(CtuluLib.getS("Index"), false) { + + public String getID() { + return "ATTRIBUTE_INDEX_GEOM"; + } + }; + + /** La liste des attributs syst\xE8mes. */ + protected final static List<GISAttribute> attrs_= + Arrays.asList(new GISAttribute[]{BATHY,TITRE,NATURE,VISIBILITE,ETAT_GEOM,COMMENTAIRE_HYDRO,LABEL}); + + private GISAttributeConstants() {} + + public static String toString(final GISAttributeInterface _att) { + for (GISAttributeInterface att: attrs_) { + if (_att==att) return _att.getID(); + } + final String attributeSep = getAttributeSep(); + return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") + + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); + } + + private static String getAttributeSep() { + return "|"; + } + + /** + * Retourne l'attribut syst\xE8me a partir de son identifiant. + * @param _idName L'identifiant. + * @return L'attribut syst\xE8me, ou null si aucun ne correspond a l'identifiant. + */ + public static GISAttributeInterface getConstantAttribute(final String _idName) { + for (GISAttributeInterface att: attrs_) { + if (att.getID().equals(_idName)) return att; + } + return null; + } + + public static GISAttributeInterface restoreFrom(final String _s) { + GISAttributeInterface res = getConstantAttribute(_s); + if (res != null) { + return res; + } + final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); + if (s == null || s.length != 3) { + return null; + } + final String clazz = s[0]; + final String name = s[1]; + final boolean atomic = CtuluLibString.toBoolean(s[2]); + if (clazz.equals(Double.class.getName())) { + res = new GISAttributeDouble(name, atomic); + if (BATHY.isSameContent(res)) { + res = BATHY; + } + } else if (clazz.equals(Integer.class.getName())) { + res = new GISAttributeInteger(name, atomic); + } else { + res = new GISAttributeString(name, atomic); + if (TITRE.isSameContent(res)) { + res = TITRE; + } + else if (NATURE.isSameContent(res)) { + res = NATURE; + } + else if (ETAT_GEOM.isSameContent(res)) { + res = ETAT_GEOM; + } + else if (VISIBILITE.isSameContent(res)) { + res = VISIBILITE; + } + else if (COMMENTAIRE_HYDRO.isSameContent(res)) { + res = COMMENTAIRE_HYDRO; + } + } + + return res; + } + + /** + * Retourne la liste des attributs syst\xE8mes. + * @return La liste. + */ + public static List<GISAttribute> getDefaults() { + return new ArrayList<GISAttribute>(attrs_); // Une copie, pour eviter les modifications. + } + + /** + * L'attribut est-il un attribut syst\xE8me ? + * @param _att L'attribut a tester. + * @return True si l'attribut est systeme. + */ + public static boolean isConstant(final GISAttributeInterface _att) { + for (GISAttributeInterface att: attrs_) { + if (_att==att) return true; + } + return false; + } + + // Attributs 1D \\ + + /** + * Attribut contenant l'index du point correspondant \xE0 l'intersection entre + * une rive gauche et un profil. + */ + public final static GISAttributeInteger INTERSECTION_RIVE_GAUCHE=new GISAttributeInteger(CtuluLib.getS("Intersection rive gauche"), false){ + @Override + public String getID() { + return "ATTRIBUTE_INTERSECTION_RIVE_GAUCHE"; + } + }; + + /** + * Attribut contenant l'index du point correspondant \xE0 l'intersection entre + * une rive droite et un profil. + */ + public final static GISAttributeInteger INTERSECTION_RIVE_DROITE=new GISAttributeInteger(CtuluLib.getS("Intersection rive droite"), false){ + @Override + public String getID() { + return "ATTRIBUTE_INTERSECTION_RIVE_DROITE"; + } + }; + + /** + * Attribut contenant l'index du point correspondant \xE0 l'intersection entre + * une limite de stockage gauche et un profil. + */ + public final static GISAttributeInteger INTERSECTION_LIMITE_STOCKAGE_GAUCHE=new GISAttributeInteger(CtuluLib + .getS("Intersection limite stockage gauche"), false){ + @Override + public String getID() { + return "ATTRIBUTE_INTERSECTION_LIMITE_STOCKAGE_GAUCHE"; + } + }; + + /** + * Attribut contenant l'index du point correspondant \xE0 l'intersection entre + * une limite de stockage droite et un profil. + */ + public final static GISAttributeInteger INTERSECTION_LIMITE_STOCKAGE_DROITE=new GISAttributeInteger(CtuluLib + .getS("Intersection limite stockage droite"), false){ + @Override + public String getID() { + return "ATTRIBUTE_INTERSECTION_LIMITE_STOCKAGE_DROITE"; + } + }; + + /** + * Attribut contenant l'index des points correspondants aux l'intersections entre + * les lignes directrices et un profil. Ces index sont stock\xE9s dans une {@link GISAttributeModelIntegerList}. + */ + public final static GISAttribute INTERSECTIONS_LIGNES_DIRECTRICES=new GISAttribute(null, CtuluLib + .getS("Intersections lignes directrices"), false){ + @Override + public String getID() { + return "ATTRIBUTE_INTERSECTIONS_LIGNES_DIRECTRICES"; + } + @Override + protected Object createGlobalValues(Object _initValues) { + if (_initValues instanceof GISAttributeModelIntegerList) + return _initValues; + else + return getDefaultValue(); + }; + }; + + /** + * Attribut contenant le d\xE9calage curviligne de l'axe hydraulique. + */ + public final static GISAttribute CURVILIGNE_DECALAGE=new GISAttributeDouble(CtuluLib.getS("D\xE9calage curviligne"), false) { + @Override + public String getID() { + return "ATTRIBUTE_CURVILIGNE_DECALAGE"; + } + }; +} Deleted: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java 2009-02-27 08:37:25 UTC (rev 4503) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -1,73 +0,0 @@ -/* - * @creation 7 avr. 2005 - * @modification $Date: 2006-09-19 14:36:53 $ - * @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; - -import org.fudaa.ctulu.gui.CtuluValueEditorInteger; - -/** - * @author Fred Deniger - * @version $Id: GISAttributeInteger.java,v 1.8 2006-09-19 14:36:53 deniger Exp $ - */ -public class GISAttributeInteger extends GISAttribute { - - public GISAttributeInteger() { - super(new CtuluValueEditorInteger()); - } - - public GISAttributeModelObservable createAtomicModel(final Object[] _initValues, final int _nbValues) { - if (_initValues != null) { - if (_initValues.length != _nbValues) { - throw new IllegalArgumentException("bad size value=" + _nbValues + " used=" + _initValues.length); - } - return new GISAttributeModelIntegerArray(_initValues, this); - } - return new GISAttributeModelIntegerArray(_nbValues, this); - } - - public GISAttributeModelObservable createAtomicModel(final int _nbValues) { - return createAtomicModelInteger(_nbValues); - } - - public GISAttributeModelIntegerArray createAtomicModelInteger(final int _nbValues) { - return new GISAttributeModelIntegerArray(_nbValues, this); - } - - public GISAttributeModelObservable createListModel(final int _defaultCap) { - return createListModelInteger(_defaultCap); - } - - public GISAttributeModelObservable createListModelInteger(final int _defaultCap) { - return new GISAttributeModelIntegerList(_defaultCap, this); - } - - /** - * @param _name - */ - public GISAttributeInteger(final String _name) { - super(new CtuluValueEditorInteger(), _name); - } - - /** - * @param _name - * @param _atomic - * true si donnees sur vertex - */ - public GISAttributeInteger(final String _name, final boolean _atomic) { - super(new CtuluValueEditorInteger(), _name, _atomic); - } - - public final Class getDataClass() { - return Integer.class; - } - - Integer def_ = new Integer(0); - - public Object getDefaultValue() { - return def_; - } -} Copied: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java (from rev 4565, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java) =================================================================== --- tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java (rev 0) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInteger.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -0,0 +1,74 @@ +/* + * @creation 7 avr. 2005 + * @modification $Date: 2006-09-19 14:36:53 $ + * @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; + +import org.fudaa.ctulu.gui.CtuluValueEditorInteger; + +/** + * @author Fred Deniger + * @version $Id$ + */ +public class GISAttributeInteger extends GISAttribute { + + public GISAttributeInteger() { + super(new CtuluValueEditorInteger()); + } + + public GISAttributeModelObservable createAtomicModel(final Object[] _initValues, final int _nbValues) { + if (_initValues != null) { + if (_initValues.length != _nbValues) { + throw new IllegalArgumentException("bad size value=" + _nbValues + " used=" + _initValues.length); + } + return new GISAttributeModelIntegerArray(_initValues, this); + } + return new GISAttributeModelIntegerArray(_nbValues, this); + } + + public GISAttributeModelObservable createAtomicModel(final int _nbValues) { + return createAtomicModelInteger(_nbValues); + } + + public GISAttributeModelIntegerArray createAtomicModelInteger(final int _nbValues) { + return new GISAttributeModelIntegerArray(_nbValues, this); + } + + public GISAttributeModelObservable createListModel(final int _defaultCap) { + return createListModelInteger(_defaultCap); + } + + public GISAttributeModelObservable createListModelInteger(final int _defaultCap) { + return new GISAttributeModelIntegerList(_defaultCap, this); + } + + /** + * Cree un attribut integer, par defaut global. + * @param _name Le nom de l'attribut + */ + public GISAttributeInteger(final String _name) { + super(new CtuluValueEditorInteger(), _name); + } + + /** + * @param _name + * @param _atomic + * true si donnees sur vertex + */ + public GISAttributeInteger(final String _name, final boolean _atomic) { + super(new CtuluValueEditorInteger(), _name, _atomic); + } + + public final Class getDataClass() { + return Integer.class; + } + + Integer def_ = new Integer(0); + + public Object getDefaultValue() { + return def_; + } +} Deleted: tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceFactory.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceFactory.java 2009-02-27 08:37:25 UTC (rev 4503) +++ tags/FudaaModeleur_0_13/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceFactory.java 2009-03-30 08:10:42 UTC (rev 4594) @@ -1,135 +0,0 @@ -/* - * The JTS Topology Suite is a collection of Java classes that - * implement the fundamental operations required to validate a given - * geo-spatial data set to a known topological specification. - * - * Copyright (C) 2001 Vivid Solutions - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, contact: - * - * Vivid Solutions - * Suite #1A - * 2328 Government Street - * Victoria BC V8T 5G5 - * Canada - * - * (250)385-6040 - * www.vividsolutions.com - */ -package org.fudaa.ctulu.gis; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.CoordinateSequenceFactory; - - -/** - * @author Fred Deniger - * @version $Id: GISCoordinateSequenceFactory.java,v 1.7 2007-01-17 10:45:25 deniger Exp $ - */ -public class GISCoordinateSequenceFactory implements CoordinateSequenceFactory { - - private GISCoordinateSequenceEmpty empty_; - - public GISCoordinateSequenceFactory() {} - - public GISCoordinateSequenceEmpty getEmpty(){ - if (empty_ != null) { - empty_ = new GISCoordinateSequenceEmpty(); - } - return empty_; - } - - public CoordinateSequence create(final Coordinate[] _coordinates){ - //vide on renvoie la sequence vide! - if (_coordinates == null) { - return null; - } - if (_coordinates.length == 0) { - return getEmpty(); - } - //unique on renvoie l'unique - if (_coordinates.length == 1) { - return new GISCoordinateSequenceUnique(_coordinates[0]); - } - //la sequence par defaut - return new GISCoordinateSequence(_coordinates); - } - - public CoordinateSequence create(final CoordinateSequence _coordSeq){ - if (_coordSeq == null) { - return null; - } - if (_coordSeq == empty_ || _coordSeq.size() == 0) { - return getEmpty(); - } - if (_coordSeq.size() == 1) { - return new GISCoordinateSequenceUnique(_coordSeq.getCoordinate(0)); - } - return new GISCoordinateSequence(_coordSeq); - } - - public CoordinateSequence create(final int _size,final int _dim){ - if (_size == 0) { - return getEmpty(); - } - if (_size == 1) { - return new GISCoordinateSequenceUnique(0, 0, 0); - } - return new GISCoordinateSequence(_size); - } - - public CoordinateSequence createImmutable(final Coordinate[] _coordinates){ - //vide on renvoie la sequence vide! - if (_coordinates == null) { - return null; - } - if (_coordinates.length == 0) { - return getEmpty(); - } - //unique on renvoie l'unique - if (_coordinates.length == 1) { - return new GisCoordinateSequenceUniqueImmutable(_coordinates[0]); - } - /... [truncated message content] |
From: <de...@us...> - 2009-07-21 08:39:49
|
Revision: 4960 http://fudaa.svn.sourceforge.net/fudaa/?rev=4960&view=rev Author: deniger Date: 2009-07-21 08:39:38 +0000 (Tue, 21 Jul 2009) Log Message: ----------- [maven-release-plugin] copy for tag fudaa-common-0.1 Added Paths: ----------- tags/fudaa-common-0.1/ tags/fudaa-common-0.1/ctulu-fu/ tags/fudaa-common-0.1/ctulu-fu/pom.xml tags/fudaa-common-0.1/pom/ tags/fudaa-common-0.1/pom.xml tags/fudaa-common-0.1/soft-pom/ tags/fudaa-common-0.1/soft-pom/pom.xml tags/fudaa-common-0.1/super-pom/ Removed Paths: ------------- tags/fudaa-common-0.1/ctulu-fu/ tags/fudaa-common-0.1/ctulu-fu/pom.xml tags/fudaa-common-0.1/pom/ tags/fudaa-common-0.1/pom.xml tags/fudaa-common-0.1/soft-pom/ tags/fudaa-common-0.1/soft-pom/pom.xml tags/fudaa-common-0.1/super-pom/ Deleted: tags/fudaa-common-0.1/ctulu-fu/pom.xml =================================================================== --- trunk/fudaa-common/ctulu-fu/pom.xml 2009-07-21 08:23:22 UTC (rev 4957) +++ tags/fudaa-common-0.1/ctulu-fu/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -1,21 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.fudaa</groupId> - <artifactId>fudaa-common</artifactId> - <version>0.1-SNAPSHOT</version> - </parent> - <groupId>org.fudaa.ctulu</groupId> - <artifactId>ctulu-fu</artifactId> - <packaging>jar</packaging> - <name>ctulu-fu</name> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> Copied: tags/fudaa-common-0.1/ctulu-fu/pom.xml (from rev 4959, trunk/fudaa-common/ctulu-fu/pom.xml) =================================================================== --- tags/fudaa-common-0.1/ctulu-fu/pom.xml (rev 0) +++ tags/fudaa-common-0.1/ctulu-fu/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -0,0 +1,20 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.fudaa</groupId> + <artifactId>fudaa-common</artifactId> + <version>0.1</version> + </parent> + <groupId>org.fudaa.ctulu</groupId> + <artifactId>ctulu-fu</artifactId> + <packaging>jar</packaging> + <name>ctulu-fu</name> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> +</project> Deleted: tags/fudaa-common-0.1/pom.xml =================================================================== --- trunk/fudaa-common/pom.xml 2009-07-21 08:29:55 UTC (rev 4958) +++ tags/fudaa-common-0.1/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.fudaa</groupId> - <artifactId>super-pom</artifactId> - <version>0.1</version> - </parent> - <artifactId>fudaa-common</artifactId> - <version>0.1-SNAPSHOT</version> - - <packaging>pom</packaging> - <name>Pom Common</name> - <scm> - <connection>scm:svn:http://fudaa.svn.sourceforge.net/svnroot/fudaa/trunk/common</connection> - <developerConnection>scm:svn:https://fudaa.svn.sourceforge.net/svnroot/fudaa/trunk/common</developerConnection> - <url>http://fudaa.svn.sourceforge.net/viewvc/fudaa/svnroot/fudaa/trunk/common</url> - </scm> - <modules> - <module>ctulu-fu</module> - <module>soft-pom</module> - </modules> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>3.8.1</version> - <scope>test</scope> - </dependency> - </dependencies> - </dependencyManagement> - <build> - <plugins> - <plugin> - <artifactId>maven-release-plugin</artifactId> - <configuration> - <tagBase>https://fudaa.svn.sourceforge.net/svnroot/fudaa/tags</tagBase> - </configuration> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file Copied: tags/fudaa-common-0.1/pom.xml (from rev 4959, trunk/fudaa-common/pom.xml) =================================================================== --- tags/fudaa-common-0.1/pom.xml (rev 0) +++ tags/fudaa-common-0.1/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.fudaa</groupId> + <artifactId>super-pom</artifactId> + <version>0.1</version> + </parent> + <artifactId>fudaa-common</artifactId> + <version>0.1</version> + + <packaging>pom</packaging> + <name>Pom Common</name> + <scm> + <connection>scm:svn:http://fudaa.svn.sourceforge.net/svnroot/fudaa/tags/fudaa-common-0.1</connection> + <developerConnection>scm:svn:https://fudaa.svn.sourceforge.net/svnroot/fudaa/tags/fudaa-common-0.1</developerConnection> + <url>http://fudaa.svn.sourceforge.net/viewvc/fudaa/svnroot/fudaa/tags/fudaa-common-0.1</url> + </scm> + <modules> + <module>ctulu-fu</module> + <module>soft-pom</module> + </modules> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> + <build> + <plugins> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://fudaa.svn.sourceforge.net/svnroot/fudaa/tags</tagBase> + </configuration> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file Deleted: tags/fudaa-common-0.1/soft-pom/pom.xml =================================================================== --- trunk/fudaa-common/soft-pom/pom.xml 2009-07-21 08:23:22 UTC (rev 4957) +++ tags/fudaa-common-0.1/soft-pom/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.fudaa</groupId> - <artifactId>fudaa-common</artifactId> - <version>0.1-SNAPSHOT</version> - </parent> - <artifactId>soft-pom</artifactId> - <packaging>pom</packaging> - <name>soft-pom </name> -</project> \ No newline at end of file Copied: tags/fudaa-common-0.1/soft-pom/pom.xml (from rev 4959, trunk/fudaa-common/soft-pom/pom.xml) =================================================================== --- tags/fudaa-common-0.1/soft-pom/pom.xml (rev 0) +++ tags/fudaa-common-0.1/soft-pom/pom.xml 2009-07-21 08:39:38 UTC (rev 4960) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.fudaa</groupId> + <artifactId>fudaa-common</artifactId> + <version>0.1</version> + </parent> + <artifactId>soft-pom</artifactId> + <packaging>pom</packaging> + <name>soft-pom </name> +</project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2009-10-15 18:52:59
|
Revision: 5291 http://fudaa.svn.sourceforge.net/fudaa/?rev=5291&view=rev Author: deniger Date: 2009-10-15 18:52:53 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Removed Paths: ------------- tags/fudaa-common-0.1/ tags/fudaa-ef-1.0/ tags/fudaa-framework-1.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |