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. |