package org.korsakow.ide.ui.controller.action; import java.io.File; import org.dsrg.soenea.service.Registry; import org.korsakow.ide.Application; import org.korsakow.ide.DataRegistry; import org.korsakow.ide.lang.LanguageBundle; import org.korsakow.ide.resources.media.JSound; import org.korsakow.ide.resources.media.Playable; import org.korsakow.ide.ui.controller.action.SaveProjectAction.PlayableCloser; import org.korsakow.ide.util.FileUtil; import org.korsakow.ide.util.UIResourceManager; public class SaveProjectAsAction extends AbstractAction { public SaveProjectAsAction() { } @Override public void performAction() { File defaultFile = Application.getInstance().getSaveFile(); try{ if (defaultFile == null) defaultFile = new File(Registry.getProperty("defaultProjectFilename")); File file = Application.getInstance().showFileSaveDialog(Application.getInstance().getProjectExplorer(), defaultFile); if (file == null) return; if (FileUtil.getFileExtension(file.getName()).length() == 0) file = new File(file.getPath() + '.' + OpenProjectFileAction.getDefaultExtension()); if (!SaveProjectAction.saveProject(file)) return; String filename = DataRegistry.getFile().getAbsolutePath(); SaveProjectAction.addRecent(filename); Playable sound = new JSound(UIResourceManager.getSoundResourceStream(UIResourceManager.SOUND_SAVE)); sound.start(); new PlayableCloser(sound); } catch (Exception e) { Application.getInstance().showUnhandledErrorDialog(LanguageBundle.getString("general.errors.cantsave.title"), e); } } }