/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ 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.FileLock; 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.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")) { FileLock lock = null; try { PackageRemover.removeDeclaration(FileUtil.toFile(fo)); // IssueZilla 11986 - rename the FileObject // so the JavaNode is resynchronized lock = fo.lock(); if (lock != null) { fo.rename(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); } finally { if (lock != null) { lock.releaseLock(); } } } } }