diff options
author | Tomas O'Connor <toconnor@openoffice.org> | 2003-06-12 10:31:28 +0000 |
---|---|---|
committer | Tomas O'Connor <toconnor@openoffice.org> | 2003-06-12 10:31:28 +0000 |
commit | ef35f4fc44353555c60cb923416ec09ac85807b2 (patch) | |
tree | 0041faa6294024dea236bb4fcf2877a1f7d49623 /scripting | |
parent | 439dd1d6db035d66205ef8f2459b091f0d071333 (diff) |
IssueZilla 12001 - Contents folder should not have a new from template menu,
just an Add New Script menu item
Consolidated new script creation code in ParcelContentsFolder and improved
use of ParcelDescriptor
Diffstat (limited to 'scripting')
6 files changed, 141 insertions, 81 deletions
diff --git a/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderCookie.java b/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderCookie.java index 98e1c8262b1a..0a1cbd4d0540 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderCookie.java +++ b/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderCookie.java @@ -2,9 +2,9 @@ * * $RCSfile: ParcelFolderCookie.java,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: toconnor $ $Date: 2003-02-24 12:53:09 $ + * last change: $Author: toconnor $ $Date: 2003-06-12 11:31:25 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -71,4 +71,6 @@ public interface ParcelFolderCookie extends Node.Cookie public void setClasspath(String value); public String getClasspath(); + + public String getLanguage(); } diff --git a/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderSupport.java b/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderSupport.java index 5baafa2f758b..dab1ae8b77d9 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderSupport.java +++ b/scripting/java/org/openoffice/netbeans/modules/office/actions/ParcelFolderSupport.java @@ -2,9 +2,9 @@ * * $RCSfile: ParcelFolderSupport.java,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: toconnor $ $Date: 2003-06-04 13:19:53 $ + * last change: $Author: toconnor $ $Date: 2003-06-12 11:31:26 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -104,46 +104,55 @@ public class ParcelFolderSupport implements ParcelFolderCookie { protected ParcelFolder parcelFolder; private ConfigurePanel configuror = null; - private ParcelDescriptor descriptor = null; public ParcelFolderSupport(ParcelFolder parcelFolder) { this.parcelFolder = parcelFolder; } + public String getLanguage() { + ParcelDescriptor descriptor = getParcelDescriptor(); + + if (descriptor == null) { + return ""; + } + else { + return descriptor.getLanguage(); + } + } + public String getClasspath() { + ParcelDescriptor descriptor = getParcelDescriptor(); + if (descriptor == null) { - try { - descriptor = getParcelDescriptor(); - } - catch (IOException ioe) { - ErrorManager.getDefault().notify(ioe); - return null; - } + return ""; + } + else { + return descriptor.getLanguageProperty("classpath"); } - return descriptor.getLanguageProperty("classpath"); } public void setClasspath(String value) { - try { - if (descriptor == null) { - descriptor = getParcelDescriptor(); - } + ParcelDescriptor descriptor = getParcelDescriptor(); + + if (descriptor != null) { descriptor.setLanguageProperty("classpath", value); - descriptor.write(); - } - catch (IOException ioe) { - ErrorManager.getDefault().notify(ioe); + + try { + descriptor.write(); + } + catch (IOException ioe) { + ErrorManager.getDefault().notify(ioe); + } } } - private ParcelDescriptor getParcelDescriptor() throws IOException { + private ParcelDescriptor getParcelDescriptor() { FileObject primary = parcelFolder.getPrimaryFile(); File contents = FileUtil.toFile( primary.getFileObject(ParcelZipper.CONTENTS_DIRNAME)); - return new ParcelDescriptor( - new File(contents, ParcelZipper.PARCEL_DESCRIPTOR_XML)); + return ParcelDescriptor.getParcelDescriptor(contents); } public void generate() { @@ -203,8 +212,9 @@ public class ParcelFolderSupport implements ParcelFolderCookie classpath.addElement(contents.getAbsolutePath()); try { + ParcelDescriptor descriptor = getParcelDescriptor(); if (descriptor == null) { - descriptor = getParcelDescriptor(); + descriptor = ParcelDescriptor.createParcelDescriptor(contents); } if (configuror == null) { @@ -229,7 +239,7 @@ public class ParcelFolderSupport implements ParcelFolderCookie if (dd.getValue() == DialogDescriptor.OK_OPTION) { try { - descriptor = configuror.getConfiguration(); + ParcelDescriptor descriptor = configuror.getConfiguration(); descriptor.write(); } catch (Exception e) { diff --git a/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolder.java b/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolder.java index e3ac000cd713..d8676531aad2 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolder.java +++ b/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolder.java @@ -2,9 +2,9 @@ * * $RCSfile: ParcelContentsFolder.java,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: toconnor $ $Date: 2002-11-13 17:44:32 $ + * last change: $Author: toconnor $ $Date: 2003-06-12 11:31:26 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -61,14 +61,101 @@ package org.openoffice.netbeans.modules.office.loader; +import java.io.IOException; + +import org.openide.TopManager; +import org.openide.NotifyDescriptor; +import org.openide.ErrorManager; + +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.filesystems.FileSystem; +import org.openide.filesystems.Repository; + +import org.openide.loaders.DataObject; import org.openide.loaders.DataFolder; import org.openide.loaders.DataObjectExistsException; -import org.openide.filesystems.FileObject; +import org.openide.nodes.Node; +import org.openide.util.datatransfer.NewType; + +import org.openoffice.netbeans.modules.office.actions.ParcelFolderCookie; +import org.openoffice.netbeans.modules.office.utils.PackageRemover; public class ParcelContentsFolder extends DataFolder { public ParcelContentsFolder(FileObject pf, ParcelContentsFolderDataLoader loader) throws DataObjectExistsException { super(pf, loader); } + + public Node createNodeDelegate() { + return new DataFolder.FolderNode() { + public NewType[] getNewTypes() { + NewType[] newtypes = new NewType[1]; + newtypes[0] = new NewType() { + public String getName() { + return "New Script"; + } + + public void create() { + DataFolder contents = (DataFolder)getDataObject(); + ParcelFolderCookie cookie = + (ParcelFolderCookie)contents.getFolder(). + getCookie(ParcelFolderCookie.class); + + String language = cookie.getLanguage(); + ParcelContentsFolder.createEmptyScript(contents, + language); + } + }; + return newtypes; + } + }; + } + + public static void createEmptyScript(DataFolder parent, String language) { + String sourceFile = "Templates/OfficeScripting/EmptyScript/Empty"; + + if (language.toLowerCase().equals("java")) { + sourceFile += ".java"; + } + else if (language.toLowerCase().equals("beanshell")) { + sourceFile += ".bsh"; + } + else { + NotifyDescriptor d = new NotifyDescriptor.Message( + "Language not defined for this Parcel Folder"); + TopManager.getDefault().notify(d); + return; + } + + FileSystem fs = Repository.getDefault().getDefaultFileSystem(); + DataObject result = null; + try { + DataObject dObj = DataObject.find(fs.findResource(sourceFile)); + result = dObj.createFromTemplate(parent); + } + catch (IOException ioe) { + ErrorManager.getDefault().notify(ioe); + } + + FileObject fo = result.getPrimaryFile(); + if (fo.getExt().equals("java")) { + try { + PackageRemover.removeDeclaration(FileUtil.toFile(fo)); + + // IssueZilla 11986 - rename the FileObject + // so the JavaNode is resynchronized + fo.rename(fo.lock(), fo.getName(), fo.getExt()); + } + catch (IOException ioe) { + NotifyDescriptor d = new NotifyDescriptor.Message( + "Error removing package declaration from file: " + + fo.getNameExt() + + ". You should manually remove this declaration " + + "before building the Parcel Recipe"); + TopManager.getDefault().notify(d); + } + } + } } diff --git a/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolderDataLoader.java b/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolderDataLoader.java index 90b8a4365f83..2e78e98a1545 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolderDataLoader.java +++ b/scripting/java/org/openoffice/netbeans/modules/office/loader/ParcelContentsFolderDataLoader.java @@ -2,9 +2,9 @@ * * $RCSfile: ParcelContentsFolderDataLoader.java,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: toconnor $ $Date: 2003-01-16 17:58:24 $ + * last change: $Author: toconnor $ $Date: 2003-06-12 11:31:26 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -99,7 +99,7 @@ public class ParcelContentsFolderDataLoader extends UniFileLoader { protected SystemAction[] defaultActions() { return new SystemAction[] { SystemAction.get(PasteAction.class), - SystemAction.get(NewTemplateAction.class), + SystemAction.get(NewAction.class), // null, // SystemAction.get(PropertiesAction.class), }; diff --git a/scripting/java/org/openoffice/netbeans/modules/office/resources/templates/EmptyParcelDescriptor.xml_ b/scripting/java/org/openoffice/netbeans/modules/office/resources/templates/EmptyParcelDescriptor.xml_ index 14bb82951002..7c016c322e0a 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/resources/templates/EmptyParcelDescriptor.xml_ +++ b/scripting/java/org/openoffice/netbeans/modules/office/resources/templates/EmptyParcelDescriptor.xml_ @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<parcel> -</parcel>
\ No newline at end of file +<parcel language="Java" xmlns:parcel="scripting.dtd"> +</parcel> diff --git a/scripting/java/org/openoffice/netbeans/modules/office/wizard/ParcelContentsIterator.java b/scripting/java/org/openoffice/netbeans/modules/office/wizard/ParcelContentsIterator.java index 233228ef0447..2f0cca3eac61 100644 --- a/scripting/java/org/openoffice/netbeans/modules/office/wizard/ParcelContentsIterator.java +++ b/scripting/java/org/openoffice/netbeans/modules/office/wizard/ParcelContentsIterator.java @@ -2,9 +2,9 @@ * * $RCSfile: ParcelContentsIterator.java,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: toconnor $ $Date: 2003-03-04 17:42:27 $ + * last change: $Author: toconnor $ $Date: 2003-06-12 11:31:28 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -62,6 +62,7 @@ package org.openoffice.netbeans.modules.office.wizard; import java.awt.Component; +import java.io.File; import java.io.IOException; import java.io.ObjectInputStream; import java.util.Collections; @@ -73,7 +74,6 @@ import javax.swing.JComponent; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import org.openide.ErrorManager; import org.openide.TopManager; import org.openide.NotifyDescriptor; import org.openide.WizardDescriptor; @@ -86,8 +86,8 @@ import org.openide.filesystems.*; import org.openoffice.idesupport.zip.ParcelZipper; import org.openoffice.idesupport.xml.ParcelDescriptor; import org.openoffice.netbeans.modules.office.loader.ParcelFolder; +import org.openoffice.netbeans.modules.office.loader.ParcelContentsFolder; import org.openoffice.netbeans.modules.office.filesystem.OpenOfficeDocFileSystem; -import org.openoffice.netbeans.modules.office.utils.PackageRemover; /** A template wizard iterator (sequence of panels). * Used to fill in the second and subsequent panels in the New wizard. @@ -156,16 +156,8 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator { DataFolder targetFolder = wiz.getTargetFolder(); targetFolder = checkTarget(targetFolder); - String sourceFile = "Templates/OfficeScripting/EmptyScript/Empty"; String language = (String)wiz.getProperty(PROP_LANGUAGE); - if (language.toLowerCase().equals("java")) - sourceFile += ".java"; - else if (language.toLowerCase().equals("beanshell")) - sourceFile += ".bsh"; - else - sourceFile = null; - DataObject template = wiz.getTemplate(); DataObject result; if (name == null) { @@ -180,45 +172,14 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator { FileObject contents = recipe.getFileObject(ParcelZipper.CONTENTS_DIRNAME); - FileObject descriptor = - contents.getFileObject(ParcelZipper.PARCEL_DESCRIPTOR_XML); - - if (descriptor != null) { - ParcelDescriptor pd = - new ParcelDescriptor(FileUtil.toFile(descriptor)); + if (contents != null) { + File f = FileUtil.toFile(contents); + ParcelDescriptor pd = ParcelDescriptor.createParcelDescriptor(f); pd.setLanguage(language); pd.write(); - } - if (contents != null) { DataFolder parent = DataFolder.findFolder(contents); - - FileSystem fs = Repository.getDefault().getDefaultFileSystem(); - DataObject dObj = DataObject.find(fs.findResource(sourceFile)); - dObj.createFromTemplate(parent); - - DataObject[] objs = parent.getChildren(); - - for (int i = 0; i < objs.length; i++) { - FileObject fo = objs[i].getPrimaryFile(); - if (fo.getExt().equals("java")) { - try { - PackageRemover.removeDeclaration(FileUtil.toFile(fo)); - - // IssueZilla 11986 - rename the FileObject - // so the JavaNode is resynchronized - fo.rename(fo.lock(), fo.getName(), fo.getExt()); - } - catch (IOException ioe) { - NotifyDescriptor d = new NotifyDescriptor.Message( - "Error removing package declaration from file: " + - fo.getNameExt() + - ". You should manually remove this declaration " + - "before building the Parcel Recipe"); - TopManager.getDefault().notify(d); - } - } - } + ParcelContentsFolder.createEmptyScript(parent, language); } return Collections.singleton(result); |