Revision 41312 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/ProjectExtension.java
ProjectExtension.java | ||
---|---|---|
25 | 25 |
|
26 | 26 |
import java.awt.Component; |
27 | 27 |
import java.io.File; |
28 |
import java.lang.reflect.InvocationTargetException; |
|
29 | 28 |
import java.text.MessageFormat; |
30 | 29 |
import java.util.ArrayList; |
31 | 30 |
import java.util.Iterator; |
... | ... | |
37 | 36 |
|
38 | 37 |
import org.slf4j.Logger; |
39 | 38 |
import org.slf4j.LoggerFactory; |
40 |
import org.apache.commons.io.FilenameUtils; |
|
39 |
import org.gvsig.tools.util.ArrayUtils; |
|
40 |
import org.apache.commons.lang.StringUtils; |
|
41 | 41 |
import org.gvsig.andami.IconThemeHelper; |
42 | 42 |
import org.gvsig.andami.Launcher; |
43 | 43 |
import org.gvsig.andami.Launcher.TerminationProcess; |
44 | 44 |
import org.gvsig.andami.PluginServices; |
45 |
import org.gvsig.andami.PluginsLocator; |
|
46 |
import org.gvsig.andami.actioninfo.ActionInfo; |
|
47 |
import org.gvsig.andami.actioninfo.ActionInfoManager; |
|
45 | 48 |
import org.gvsig.andami.messages.NotificationManager; |
46 | 49 |
import org.gvsig.andami.plugins.Extension; |
47 | 50 |
import org.gvsig.andami.plugins.IExtension; |
... | ... | |
51 | 54 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
52 | 55 |
import org.gvsig.andami.ui.mdiManager.WindowInfo; |
53 | 56 |
import org.gvsig.andami.ui.wizard.UnsavedDataPanel; |
54 |
import org.gvsig.app.ApplicationLocator; |
|
55 |
import org.gvsig.app.ApplicationManager; |
|
56 | 57 |
import org.gvsig.app.project.Project; |
57 | 58 |
import org.gvsig.app.project.ProjectManager; |
58 | 59 |
import org.gvsig.app.project.documents.gui.ProjectWindow; |
59 | 60 |
import org.gvsig.app.project.documents.view.ViewManager; |
60 | 61 |
import org.gvsig.gui.beans.swing.JFileChooser; |
61 | 62 |
import org.gvsig.tools.ToolsLocator; |
63 |
import org.gvsig.tools.dataTypes.DataTypes; |
|
62 | 64 |
import org.gvsig.tools.extensionpoint.ExtensionPointManager; |
63 | 65 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
64 | 66 |
import org.gvsig.utils.GenericFileFilter; |
... | ... | |
66 | 68 |
import org.gvsig.utils.save.BeforeSavingListener; |
67 | 69 |
import org.gvsig.utils.save.SaveEvent; |
68 | 70 |
import org.gvsig.utils.swing.threads.IMonitorableTask; |
71 |
import sun.misc.Launcher; |
|
69 | 72 |
|
70 | 73 |
/** |
71 | 74 |
* Extension que proporciona controles para crear proyectos nuevos, abrirlos y |
... | ... | |
99 | 102 |
|
100 | 103 |
private List<AfterSavingListener> afterSavingListeners = new ArrayList<AfterSavingListener>(); |
101 | 104 |
|
102 |
/** |
|
103 |
* @see com.iver.mdiApp.plugins.IExtension#initialize() |
|
104 |
*/ |
|
105 |
public void initialize() { |
|
106 |
// try { |
|
107 |
// Class.forName("javax.media.jai.EnumeratedParameter"); |
|
108 |
// } catch (ClassNotFoundException e) { |
|
109 |
// NotificationManager |
|
110 |
// .addError( |
|
111 |
// "La m?quina virtual con la que se ejecuta gvSIG no tiene JAI instalado", |
|
112 |
// e); |
|
113 |
// } |
|
105 |
public void initialize() { |
|
106 |
initializeDocumentActionsExtensionPoint(); |
|
107 |
registerDocuments(); |
|
108 |
registerIcons(); |
|
109 |
PluginsLocator.getManager().addStartupTask( |
|
110 |
"Open project", |
|
111 |
new OpenInitialProjectTask(), true, 1000); |
|
112 |
} |
|
114 | 113 |
|
115 |
initializeDocumentActionsExtensionPoint(); |
|
116 |
registerDocuments(); |
|
117 |
registerIcons(); |
|
118 |
} |
|
119 |
|
|
120 | 114 |
private void registerIcons() { |
121 | 115 |
IconThemeHelper.registerIcon("action", "application-project-new", this); |
122 | 116 |
IconThemeHelper |
... | ... | |
129 | 123 |
IconThemeHelper.registerIcon("project", "project-icon", this); |
130 | 124 |
} |
131 | 125 |
|
126 |
private class OpenInitialProjectTask implements Runnable { |
|
127 |
public void run() { |
|
128 |
File pf = getInitialProjectFile(); |
|
129 |
if (pf == null) { |
|
130 |
LOG.info("No initial file opened."); |
|
131 |
return; |
|
132 |
} |
|
133 |
ActionInfoManager actionManager = PluginsLocator.getActionInfoManager(); |
|
134 |
ActionInfo action = actionManager.getAction("application-project-open"); |
|
135 |
action.execute(pf); |
|
136 |
} |
|
137 |
/** |
|
138 |
* Returns the file to be opened or null if no parameter |
|
139 |
* or file does not exist |
|
140 |
* |
|
141 |
* @return |
|
142 |
*/ |
|
143 |
private File getInitialProjectFile() { |
|
144 |
String[] theArgs = PluginServices.getArguments(); |
|
145 |
String lastArg = theArgs[theArgs.length - 1]; |
|
146 |
if ( StringUtils.isEmpty(lastArg) ) { |
|
147 |
return null; |
|
148 |
} |
|
149 |
if( lastArg.startsWith("-") ) { |
|
150 |
return null; |
|
151 |
} |
|
152 |
if (!lastArg.toLowerCase().endsWith(Project.FILE_EXTENSION.toLowerCase())) { |
|
153 |
LOG.info("Do not open project file, does not have the expected extension '" + |
|
154 |
Project.FILE_EXTENSION +"' ("+lastArg+")."); |
|
155 |
return null; |
|
156 |
} |
|
157 |
File projectFile = new File(lastArg); |
|
158 |
if ( !projectFile.exists()) { |
|
159 |
LOG.info("Do not open project file, '" +projectFile.getAbsolutePath() + "' do not exist."); |
|
160 |
return null; |
|
161 |
} |
|
162 |
return projectFile; |
|
163 |
} |
|
164 |
} |
|
132 | 165 |
|
133 |
|
|
134 |
|
|
135 |
|
|
136 | 166 |
public ProjectWindow getProjectFrame() { |
137 | 167 |
if (projectFrame == null) { |
138 | 168 |
projectFrame = new ProjectWindow(); |
... | ... | |
262 | 292 |
public void execute(String command) { |
263 | 293 |
this.execute(command, null); |
264 | 294 |
} |
265 |
|
|
295 |
|
|
266 | 296 |
public void execute(String actionCommand, Object[] args) { |
267 | 297 |
if (actionCommand.equals("application-project-new")) { |
268 | 298 |
if (!askSave()) { |
... | ... | |
270 | 300 |
} |
271 | 301 |
|
272 | 302 |
projectPath = null; |
273 |
// ProjectDocument.initializeNUMS(); |
|
274 | 303 |
PluginServices.getMDIManager().closeAllWindows(); |
275 | 304 |
setProject(ProjectManager.getInstance().createProject()); |
276 | 305 |
getProjectFrame().setProject(p); |
277 | 306 |
showProjectWindow(); |
278 | 307 |
PluginServices.getMainFrame().setTitle( |
279 | 308 |
PluginServices.getText(this, "sin_titulo")); |
280 |
} else if (actionCommand.equals("application-project-open")) { |
|
309 |
|
|
310 |
} else if (actionCommand.equals("application-project-open")) { |
|
281 | 311 |
if (!askSave()) { |
282 | 312 |
return; |
283 | 313 |
} |
284 |
File projectFile = null; |
|
314 |
File projectFile = (File) ArrayUtils.get(args, 0, DataTypes.FILE); |
|
315 |
if ( projectFile != null && !projectFile.exists() ) { |
|
316 |
LOG.warn("Can't load project '" |
|
317 |
+ projectFile.getAbsolutePath() |
|
318 |
+ "', file not exist."); |
|
319 |
projectFile = null; |
|
320 |
} |
|
285 | 321 |
|
286 |
if (args != null && args.length > 0 && args[0] != null) { |
|
287 |
if (args[0] instanceof File) { |
|
288 |
projectFile = (File) args[0]; |
|
289 |
} else if (args[0] instanceof String) { |
|
290 |
projectFile = new File((String) args[0]); |
|
291 |
if (!projectFile.exists()) { |
|
292 |
LOG.warn("Can't load project '" |
|
293 |
+ projectFile.getAbsolutePath() |
|
294 |
+ "', file not exist."); |
|
295 |
projectFile = null; |
|
296 |
} |
|
297 |
} |
|
298 |
} |
|
299 |
|
|
300 | 322 |
if (projectFile == null) { |
301 | 323 |
Preferences prefs = Preferences.userRoot().node( |
302 | 324 |
"gvsig.foldering"); |
... | ... | |
334 | 356 |
} else if (actionCommand.equals("application-project-save")) { |
335 | 357 |
saveProject(); |
336 | 358 |
} else if (actionCommand.equals("application-project-save-as")) { |
337 |
File file = null; |
|
338 |
if (args != null && args.length > 0 && args[0] != null) { |
|
339 |
if (args[0] instanceof File) { |
|
340 |
file = (File) args[0]; |
|
341 |
} else if (args[0] instanceof String) { |
|
342 |
file = new File((String) args[0]); |
|
343 |
} |
|
344 |
} |
|
359 |
File file = (File) ArrayUtils.get(args, 0, DataTypes.FILE); |
|
345 | 360 |
saveAsProject(file); |
346 | 361 |
} |
347 | 362 |
|
Also available in: Unified diff