/* * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI for * visualizing and manipulating spatial features with geometry and attributes. * * Copyright (C) 2003 Vivid Solutions * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program 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 General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; 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 com.vividsolutions.jump.workbench.ui.plugin; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.util.FileUtil; import com.vividsolutions.jump.workbench.plugin.PlugInContext; import com.vividsolutions.jump.workbench.ui.GUIUtil; import com.vividsolutions.jump.workbench.ui.images.IconLoader; import java.io.File; import javax.swing.filechooser.FileFilter; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn; public class SaveProjectAsPlugIn extends AbstractSaveProjectPlugIn { public static final ImageIcon ICON = IconLoader.icon("layout_save.png"); public static final FileFilter JUMP_PROJECT_FILE_FILTER = GUIUtil.createFileFilter(I18N.get("ui.plugin.SaveProjectAsPlugIn.jump-project-files"), new String[]{"jmp", "jcs"}); private JFileChooser fileChooser; public void initialize(PlugInContext context) throws Exception { //Don't initialize fileChooser at field declaration; otherwise get // intermittent //exceptions: //java.lang.NullPointerException // at javax.swing.ImageIcon.<init>(ImageIcon.java:161) // at javax.swing.ImageIcon.<init>(ImageIcon.java:147) // at // com.sun.java.swing.plaf.windows.WindowsFileChooserUI$ShortCutPanel.<init>(WindowsFileChooserUI.java:603) // at // com.sun.java.swing.plaf.windows.WindowsFileChooserUI.installComponents(WindowsFileChooserUI.java:361) // at // javax.swing.plaf.basic.BasicFileChooserUI.installUI(BasicFileChooserUI.java:130) // at // com.sun.java.swing.plaf.windows.WindowsFileChooserUI.installUI(WindowsFileChooserUI.java:176) // at javax.swing.JComponent.setUI(JComponent.java:449) // at javax.swing.JFileChooser.updateUI(JFileChooser.java:1701) // at javax.swing.JFileChooser.setup(JFileChooser.java:345) // at javax.swing.JFileChooser.<init>(JFileChooser.java:320) //[Jon Aquino 2004-01-12] fileChooser = GUIUtil.createJFileChooserWithOverwritePrompting("jmp"); fileChooser.setDialogTitle(I18N.get("ui.plugin.SaveProjectAsPlugIn.save-project")); GUIUtil.removeChoosableFileFilters(fileChooser); fileChooser.addChoosableFileFilter(JUMP_PROJECT_FILE_FILTER); fileChooser.addChoosableFileFilter(GUIUtil.ALL_FILES_FILTER); fileChooser.setFileFilter(JUMP_PROJECT_FILE_FILTER); } public String getName() { return I18N.get("ui.plugin.SaveProjectAsPlugIn.save-project-as"); } public boolean execute(PlugInContext context) throws Exception { reportNothingToUndoYet(context); if (context.getTask().getProjectFile() != null) { fileChooser.setSelectedFile(context.getTask().getProjectFile()); } if (JFileChooser.APPROVE_OPTION != fileChooser.showSaveDialog(context .getWorkbenchFrame())) { return false; } File file = fileChooser.getSelectedFile(); java.util.Collection collection = ignoredLayers(context.getTask()); if (collection.size() > 0) { // Starting with OpenJUMP 1.4.1beta (2011-04-20), the plugin uses // org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn // to give the user the possibility to save unsaved layers to HD // before saving the project new org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn() .execute(context, collection, FileUtil.removeExtensionIfAny(file)); } file = FileUtil.addExtensionIfNone(file, "jmp"); save(context.getTask(), file, context.getWorkbenchFrame()); return true; } }