Scripting: Remove org package

Change-Id: If0b6ac87b5d53da43557dee5824e9413a260ba7c
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
David Ostrovsky
2014-10-09 10:47:42 +02:00
committed by Stephan Bergmann
parent 87bf3fb4a5
commit a1552a0ec3
201 changed files with 0 additions and 21407 deletions

View File

@@ -1,26 +0,0 @@
Manifest-Version: 1.0
OpenIDE-Module: org.openoffice.netbeans.modules.office/1
OpenIDE-Module-Name: Office Support
OpenIDE-Module-Short-Description: Scripting Support for Office Documents
OpenIDE-Module-Localizing-Bundle: org/openoffice/netbeans/modules/office/Bundle.properties
OpenIDE-Module-Specification-Version: 0.2
OpenIDE-Module-Implementation-Version: 0.2
OpenIDE-Module-Install: org/openoffice/netbeans/modules/office/utils/OfficeModule.class
OpenIDE-Module-Layer: org/openoffice/netbeans/modules/office/resources/layer.xml
Name: org/openoffice/netbeans/modules/office/loader/OfficeDocumentDataLoader.class
OpenIDE-Module-Class: Loader
Name: org/openoffice/netbeans/modules/office/loader/ParcelDataLoader.class
OpenIDE-Module-Class: Loader
Name: org/openoffice/netbeans/modules/office/loader/ParcelDescriptorDataLoader.class
Install-Before: org.openide.loaders.XMLDataObject, org.netbeans.modules.xml.core.XMLDataObject
OpenIDE-Module-Class: Loader
Name: org/openoffice/netbeans/modules/office/loader/ParcelFolderDataLoader.class
Install-Before: org.openoffice.netbeans.modules.office.loader.ParcelDescriptorDataLoader
OpenIDE-Module-Class: Loader
Name: org/openoffice/netbeans/modules/office/loader/ParcelContentsFolderDataLoader.class
OpenIDE-Module-Class: Loader

View File

@@ -1,337 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.StringTokenizer;
import com.sun.star.script.framework.container.ScriptEntry;
import com.sun.star.script.framework.container.ParcelDescriptor;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.idesupport.filter.AllFilesFilter;
import com.sun.star.script.framework.container.XMLParserFactory;
import org.openoffice.idesupport.*;
public class CommandLineTools {
private static final String PARCEL_XML_FILE =
ParcelZipper.PARCEL_DESCRIPTOR_XML;
private static String officePath = null;
public static void main(String[] args) {
CommandLineTools driver = new CommandLineTools();
Command command = driver.parseArgs(args);
// Get the URL for the Office DTD directory and pass it to the
// XMLParserFactory so that Office xml files can be parsed
if (officePath == null) {
try {
SVersionRCFile sv = SVersionRCFile.createInstance();
if (sv.getDefaultVersion() != null) {
officePath = sv.getDefaultVersion().getPath();
}
} catch (IOException ioe) {
System.err.println("Error getting Office directory");
}
}
if (officePath == null) {
driver.fatalUsage("Error: Office Installation path not set");
}
File officeDir = new File(officePath);
if (!officeDir.exists() || !officeDir.isDirectory()) {
driver.fatalUsage(
"Error: Office Installation path not valid: " + officePath);
}
OfficeInstallation oi = new OfficeInstallation(officePath);
String url = oi.getURL("share/dtd/officedocument/1_0/");
XMLParserFactory.setOfficeDTDURL(url);
if (command == null)
driver.printUsage();
else {
try {
command.execute();
} catch (Exception e) {
driver.fatal("Error: " + e.getMessage());
}
}
}
private interface Command {
void execute() throws Exception;
}
private void printUsage() {
System.out.println("java " + getClass().getName() + " -h " +
"prints this message");
System.out.println("java " + getClass().getName() +
" [-o Path to Office Installation] " +
"-d <script parcel zip file> " +
"<destination document or directory>");
System.out.println("java " + getClass().getName() +
" [-o Path to Office Installation] " +
"-g [parcel root directory] [options] [script names]");
System.out.println("options:");
System.out.println("\t[-l language[=supported extension 1[" +
File.pathSeparator + "supported extension 2]]]");
System.out.println("\t[-p name=value]");
System.out.println("\t[-v]");
}
private void fatal(String message) {
System.err.println(message);
System.exit(-1);
}
private void fatalUsage(String message) {
System.err.println(message);
System.err.println();
printUsage();
System.exit(-1);
}
private Command parseArgs(String[] args) {
if (args.length < 1) {
return null;
} else if (args[0].equals("-h")) {
return new Command() {
public void execute() {
printUsage();
}
};
}
int i = 0;
if (args[0].equals("-o")) {
officePath = args[i + 1];
i += 2;
}
if (args[i].equals("-d")) {
if ((args.length - i) != 3)
return null;
else
return new DeployCommand(args[i + 1], args[i + 2]);
} else if (args[i].equals("-g")) {
if ((args.length - i) == 1)
return new GenerateCommand(System.getProperty("user.dir"));
GenerateCommand command;
i++;
if (!args[i].startsWith("-"))
command = new GenerateCommand(args[i++]);
else
command = new GenerateCommand(System.getProperty("user.dir"));
for (; i < args.length; i++) {
if (args[i].equals("-l")) {
command.setLanguage(args[++i]);
} else if (args[i].equals("-p")) {
command.addProperty(args[++i]);
} else if (args[i].equals("-v")) {
command.setVerbose();
} else {
command.addScript(args[i]);
}
}
return command;
}
return null;
}
private static class GenerateCommand implements Command {
private File basedir, contents, parcelxml;
private boolean verbose = false;
private String language = null;
private MethodFinder finder = null;
private ArrayList<ScriptEntry> scripts = null;
private HashMap properties = new HashMap(3);
public GenerateCommand(String basedir) {
this.basedir = new File(basedir);
this.contents = new File(basedir, ParcelZipper.CONTENTS_DIRNAME);
this.parcelxml = new File(contents, PARCEL_XML_FILE);
}
public void setLanguage(String language) {
StringTokenizer tokenizer = new StringTokenizer(language, "=");
this.language = tokenizer.nextToken();
if (this.language.equalsIgnoreCase("java")) {
this.finder = JavaFinder.getInstance();
return;
}
if (tokenizer.hasMoreTokens()) {
String ext = (String)tokenizer.nextToken();
String[] extensions;
if (ext.indexOf(File.pathSeparator) != -1) {
tokenizer = new StringTokenizer(ext, File.pathSeparator);
extensions = new String[tokenizer.countTokens()];
int i = 0;
while (tokenizer.hasMoreTokens())
extensions[i++] = (String)tokenizer.nextToken();
} else {
extensions = new String[1];
extensions[0] = ext;
}
this.finder = new ExtensionFinder(this.language, extensions);
}
}
public void addProperty(String prop) {
StringTokenizer tok = new StringTokenizer(prop, "=");
if (tok.countTokens() != 2)
return;
String name = tok.nextToken();
String value = tok.nextToken();
properties.put(name, value);
}
public void setVerbose() {
verbose = true;
}
public void addScript(String script) {
if (language == null)
return;
addScript(new ScriptEntry(language, script, script, basedir.getName()));
}
public void addScript(ScriptEntry entry) {
if (scripts == null)
scripts = new ArrayList(3);
scripts.add(entry);
}
public void execute() throws Exception {
if (!basedir.isDirectory()) {
throw new Exception(basedir.getName() + " is not a directory");
} else if (!contents.exists()) {
throw new Exception(basedir.getName() +
" does not contain a Contents directory");
}
if (language == null && !parcelxml.exists()) {
throw new Exception(parcelxml.getName() + " not found and language " +
"not specified");
}
if (language != null && parcelxml.exists()) {
ParcelDescriptor desc;
String desclang = "";
desc = new ParcelDescriptor(parcelxml);
desclang = desc.getLanguage().toLowerCase();
if (!desclang.equals(language.toLowerCase()))
throw new Exception(parcelxml.getName() + " already exists, " +
"and has a different language attribute: " +
desc.getLanguage());
}
if (language != null && scripts == null) {
if (finder == null)
throw new Exception("Extension list not specified for this language");
log("Searching for " + language + " scripts");
ScriptEntry[] entries = finder.findMethods(contents);
for (int i = 0; i < entries.length; i++) {
addScript(entries[i]);
log("Found: " + entries[i].getLogicalName());
}
}
if (scripts != null) {
if (scripts.isEmpty())
throw new Exception("No valid scripts found");
ParcelDescriptor desc = new ParcelDescriptor(parcelxml, language);
desc.setScriptEntries(scripts.toArray(new ScriptEntry[scripts.size()]));
if (properties.size() != 0) {
Enumeration enumer = properties.keys();
while (enumer.hasMoreElements()) {
String name = (String)enumer.nextElement();
String value = (String)properties.get(name);
log("Setting property: " + name + " to " + value);
desc.setLanguageProperty(name, value);
}
}
desc.write();
} else {
if (!parcelxml.exists())
throw new Exception("No valid scripts found");
}
contents = new File(contents.getAbsolutePath());
String name = ParcelZipper.getParcelZipper().zipParcel(contents,
AllFilesFilter.getInstance());
System.out.println(name + " generated");
}
private void log(String message) {
if (verbose)
System.out.println(message);
}
}
private static class DeployCommand implements Command {
File source, target;
public DeployCommand(String source, String target) {
this.source = new File(source);
this.target = new File(target);
}
public void execute() throws Exception {
ParcelZipper.getParcelZipper().deployParcel(source, target);
System.out.println(source.getName() +
" successfully deployed to " + target.getAbsolutePath());
}
}
}

View File

@@ -1,81 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.File;
import java.util.ArrayList;
import org.openoffice.idesupport.zip.ParcelZipper;
import com.sun.star.script.framework.container.ScriptEntry;
public class ExtensionFinder implements MethodFinder {
private String[] extensions;
private String language;
public ExtensionFinder(String language, String[] extensions) {
this.language = language;
this.extensions = extensions;
}
public ScriptEntry[] findMethods(File basedir) {
String parcelName;
ArrayList<ScriptEntry> files = new ArrayList<ScriptEntry>(10);
ScriptEntry[] empty = new ScriptEntry[0];
if (basedir == null || !basedir.exists() ||
!basedir.isDirectory())
return empty;
parcelName = basedir.getName();
if (parcelName.equals(ParcelZipper.CONTENTS_DIRNAME))
parcelName = basedir.getParentFile().getName();
findFiles(files, basedir, parcelName);
if (files.size() != 0)
return files.toArray(empty);
return empty;
}
private void findFiles(ArrayList<ScriptEntry> list, File basedir,
String parcelName) {
File[] children = basedir.listFiles();
File f;
for (int i = 0; i < children.length; i++) {
f = children[i];
if (f.isDirectory())
findFiles(list, f, parcelName);
else {
for (int j = 0; j < extensions.length; j++) {
if (f.getName().endsWith(extensions[j])) {
ScriptEntry entry = new ScriptEntry(language,
f.getName(), parcelName);
list.add(entry);
break;
}
}
}
}
}
}

View File

@@ -1,231 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.openoffice.idesupport.zip.ParcelZipper;
import com.sun.star.script.framework.container.ScriptEntry;
public class JavaFinder implements MethodFinder {
private static JavaFinder finder;
private static final String JAVA_SUFFIX = ".java";
private static final String CLASS_SUFFIX = ".class";
private static final String FIRST_PARAM =
"drafts.com.sun.star.script.framework.runtime.XScriptContext";
private List<String> classpath = null;
private JavaFinder() {}
private JavaFinder(List<String> classpath) {
this.classpath = classpath;
}
public static JavaFinder getInstance(List<String> classpath) {
return new JavaFinder(classpath);
}
public ScriptEntry[] findMethods(File basedir) {
String parcelName;
ArrayList<ScriptEntry> result = new ArrayList<ScriptEntry>(10);
ScriptEntry[] empty = new ScriptEntry[0];
if (basedir == null || !basedir.exists() ||
!basedir.isDirectory())
return empty;
parcelName = basedir.getName();
if (parcelName.equals(ParcelZipper.CONTENTS_DIRNAME))
parcelName = basedir.getParentFile().getName();
String[] classNames = findClassNames(basedir);
if (classNames != null && classNames.length != 0) {
ClassLoader classloader;
if (classpath == null)
classloader = getClassLoader(basedir);
else
classloader = getClassLoader();
for (int i = 0; i < classNames.length; i++) {
try {
Class clazz = classloader.loadClass(classNames[i]);
Method[] methods = clazz.getDeclaredMethods();
for (int k = 0; k < methods.length; k++) {
if (Modifier.isPublic(methods[k].getModifiers())) {
Class[] params = methods[k].getParameterTypes();
if (params.length > 0) {
if (params[0].getName().equals(FIRST_PARAM)) {
ScriptEntry entry =
new ScriptEntry(classNames[i] + "." +
methods[k].getName(), parcelName);
result.add(entry);
}
}
}
}
} catch (ClassNotFoundException e) {
System.err.println("Caught ClassNotFoundException loading: "
+ classNames[i]);
continue;
} catch (NoClassDefFoundError nc) {
System.err.println("Caught NoClassDefFoundErr loading: " +
classNames[i]);
continue;
}
}
}
if (result.size() != 0)
return result.toArray(empty);
return empty;
}
private ClassLoader getClassLoader() {
int len = classpath.size();
ArrayList<URL> urls = new ArrayList<URL>(len);
for (int i = 0; i < len; i++) {
try {
String s = classpath.get(i);
s = SVersionRCFile.toFileURL(s);
if (s != null)
urls.add(new URL(s));
} catch (MalformedURLException mue) {
}
}
return new URLClassLoader(urls.toArray(new URL[urls.size()]));
}
private ClassLoader getClassLoader(File basedir) {
ArrayList<File> files = findFiles(basedir, ".jar");
files.add(basedir);
try {
Iterator<OfficeInstallation> offices =
SVersionRCFile.createInstance().getVersions();
while (offices.hasNext()) {
OfficeInstallation oi = offices.next();
String unoil = SVersionRCFile.getPathForUnoil(oi.getPath());
if (unoil != null) {
files.add(new File(unoil, "unoil.jar"));
break;
}
}
} catch (IOException ioe) {
return null;
}
URL[] urls = new URL[files.size()];
String urlpath;
File f;
for (int i = 0; i < urls.length; i++) {
try {
f = files.get(i);
urlpath = SVersionRCFile.toFileURL(f.getAbsolutePath());
if (urlpath != null)
urls[i] = new URL(urlpath);
} catch (MalformedURLException mue) {
// do nothing, go on to next file
}
}
return new URLClassLoader(urls);
}
private ArrayList<File> findFiles(File basedir, String suffix) {
ArrayList<File> result = new ArrayList<File>();
File[] children = basedir.listFiles();
for (int i = 0; i < children.length; i++) {
if (children[i].isDirectory())
result.addAll(findFiles(children[i], suffix));
else if (children[i].getName().endsWith(suffix))
result.add(children[i]);
}
return result;
}
private String[] findClassNames(File basedir) {
ArrayList<File> classFiles = findFiles(basedir, CLASS_SUFFIX);
if(classFiles == null || classFiles.isEmpty())
return null;
ArrayList<File> javaFiles = findFiles(basedir, JAVA_SUFFIX);
if (javaFiles == null || javaFiles.size() == 0)
return null;
ArrayList<String> result = new ArrayList<String>();
for (int i = 0; i < classFiles.size(); i++) {
File classFile = classFiles.get(i);
String className = classFile.getName();
className = className.substring(0, className.lastIndexOf(CLASS_SUFFIX));
boolean finished = false;
for (int j = 0; j < javaFiles.size() && !finished; j++) {
File javaFile = javaFiles.get(j);
String javaName = javaFile.getName();
javaName = javaName.substring(0, javaName.lastIndexOf(JAVA_SUFFIX));
if (javaName.equals(className)) {
String path = classFile.getAbsolutePath();
path = path.substring(basedir.getAbsolutePath().length() + 1);
path = path.replace(File.separatorChar, '.');
path = path.substring(0, path.lastIndexOf(CLASS_SUFFIX));
result.add(path);
javaFiles.remove(j);
finished = true;
}
}
}
return result.toArray(new String[result.size()]);
}
}

View File

@@ -1,54 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.net.ConnectException;
/**
* LocalOffice represents a connection to the local office.
*
* This class allows to get access to some scripting framework
* related functionality of the locally running office. The
* office has to be started with options appropriate for establishing
* local connection.
*/
public abstract class LocalOffice
{
/**
* Connects to the running office.
*
* @param officePath is a platform specific path string
* to the office distribution.
* @param port is a communication port.
*/
protected abstract void connect(String officePath, int port)
throws ConnectException;
/**
* Closes the connection to the running office.
*/
public abstract void disconnect();
/**
* Refresh the script storage.
*
* @param uri is an identifier of storage has to be refreshed.
*/
public abstract void refreshStorage(String uri);
}

View File

@@ -1,26 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.File;
import com.sun.star.script.framework.container.ScriptEntry;
public interface MethodFinder {
ScriptEntry[] findMethods(File basedir);
}

View File

@@ -1,106 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import org.openoffice.idesupport.zip.ParcelZipper;
public class OfficeDocument {
public static final String PARCEL_PREFIX_DIR =
ParcelZipper.PARCEL_PREFIX_DIR;
public static final String[] OFFICE_EXTENSIONS =
{".sxc" , ".sxw", ".sxi", ".sxd"};
public static final String OFFICE_PRODUCT_NAME = "OpenOffice.org";
private File file = null;
public OfficeDocument(File file) throws IllegalArgumentException {
if (!file.exists() || file.isDirectory() || !isOfficeFile(file)) {
throw new IllegalArgumentException("This is not a valid " +
OFFICE_PRODUCT_NAME + " document.");
}
this.file = file;
}
private boolean isOfficeFile(File file) {
for (int i = 0; i < OFFICE_EXTENSIONS.length; i++)
if (file.getName().endsWith(OFFICE_EXTENSIONS[i]))
return true;
return false;
}
public Iterator<String> getParcels() {
ArrayList<String> parcels = new ArrayList<String>();
ZipFile zp = null;
try {
zp = new ZipFile(this.file);
for (Enumeration enumer = zp.entries(); enumer.hasMoreElements();) {
ZipEntry ze = (ZipEntry)enumer.nextElement();
if (ze.getName().endsWith(ParcelZipper.PARCEL_DESCRIPTOR_XML)) {
String tmp = ze.getName();
int end = tmp.lastIndexOf('/');
tmp = tmp.substring(0, end);
String parcelName = ze.getName().substring(0, end);
parcels.add(parcelName);
}
}
} catch (ZipException ze) {
ze.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (zp != null) {
try {
zp.close();
} catch (IOException asdf) {
}
}
}
return parcels.iterator();
}
public boolean removeParcel(String parcelName) {
try {
ParcelZipper.getParcelZipper().removeParcel(file, parcelName);
} catch (IOException ioe) {
ioe.printStackTrace();
return false;
}
return true;
}
}

View File

@@ -1,85 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.File;
import java.net.URLDecoder;
public class OfficeInstallation implements java.io.Serializable {
private String name;
private String path;
private String url;
private boolean hasFW = false;
private static final String FILE_URL_PREFIX = SVersionRCFile.FILE_URL_PREFIX;
public OfficeInstallation(String path) {
this(path, path);
}
public OfficeInstallation(String name, String path) {
this.name = name;
if (path.startsWith(FILE_URL_PREFIX)) {
this.url = path;
path = URLDecoder.decode(path);
path = path.substring(FILE_URL_PREFIX.length());
if (System.getProperty("os.name").startsWith("Windows"))
path = path.replace('/', File.separatorChar);
this.path = path;
} else {
this.path = path;
if (System.getProperty("os.name").startsWith("Windows"))
path = path.replace(File.separatorChar, '/');
this.url = FILE_URL_PREFIX + path;
}
}
public String getName() {
return name;
}
public String getPath() {
return path;
}
public String getURL() {
return url;
}
public boolean supportsFramework() {
return true;
}
@Override
public String toString() {
return getName();
}
}

View File

@@ -1,226 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.StringTokenizer;
public class SVersionRCFile {
private static final String DEFAULT_NAME =
System.getProperty("os.name").startsWith("Windows") ?
System.getProperty("user.home") + File.separator +
"Application Data" + File.separator + "sversion.ini" :
System.getProperty("user.home") + File.separator +
".sversionrc";
public static final String FILE_URL_PREFIX =
System.getProperty("os.name").startsWith("Windows") ?
"file:///" : "file://";
private static final String VERSIONS_LINE = "[Versions]";
private static final String UNOILJAR =
"skip_registration" + File.separator + "unoil.jar";
private static final String UNOPACKAGEDIR =
File.separator + "user" + File.separator + "uno_packages" +
File.separator + "cache" + File.separator + "uno_packages";
/* Make sure this is in LowerCase !!!!! */
private static final String SCRIPTF = "scriptf";
private static final HashMap<String, SVersionRCFile> files = new
HashMap<String, SVersionRCFile>(3);
private File sversionrc = null;
private OfficeInstallation defaultversion = null;
private ArrayList<OfficeInstallation> versions = null;
private long lastModified = 0;
public SVersionRCFile() {
this(DEFAULT_NAME);
}
private SVersionRCFile(String name) {
sversionrc = new File(name);
versions = new ArrayList<OfficeInstallation>(5);
}
public static SVersionRCFile createInstance() {
return (createInstance(DEFAULT_NAME));
}
private static SVersionRCFile createInstance(String name) {
SVersionRCFile result = null;
synchronized (SVersionRCFile.class) {
result = files.get(name);
if (result == null) {
result = new SVersionRCFile(name);
files.put(name, result);
}
}
return result;
}
public OfficeInstallation getDefaultVersion() throws IOException {
if (defaultversion == null) {
getVersions();
}
return defaultversion;
}
public Iterator<OfficeInstallation> getVersions() throws IOException {
long l = sversionrc.lastModified();
if (l > lastModified) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(sversionrc));
load(br);
lastModified = l;
} catch (FileNotFoundException fnfe) {
throw new IOException(fnfe.getMessage());
} finally {
if (br != null)
br.close();
}
}
return versions.iterator();
}
private void load(BufferedReader br) throws IOException {
String s;
while ((s = br.readLine()) != null &&
!(s.equals(VERSIONS_LINE))) {}
while ((s = br.readLine()) != null &&
s.length() != 0) {
StringTokenizer tokens = new StringTokenizer(s, "=");
int count = tokens.countTokens();
if (count != 2)
continue;
String name = tokens.nextToken();
String path = tokens.nextToken();
OfficeInstallation oi = new OfficeInstallation(name, path);
if (oi.supportsFramework()) {
versions.add(oi);
defaultversion = oi;
}
}
}
public static String toFileURL(String path) {
File f = new File(path);
if (!f.exists())
return null;
try {
path = f.getCanonicalPath();
} catch (IOException ioe) {
return null;
}
if (System.getProperty("os.name").startsWith("Windows"))
path = path.replace(File.separatorChar, '/');
StringBuilder buf = new StringBuilder(FILE_URL_PREFIX);
buf.append(path);
if (f.isDirectory())
buf.append("/");
return buf.toString();
}
public static String getPathForUnoil(String officeInstall) {
File unopkgdir = new File(officeInstall, UNOPACKAGEDIR);
if (!unopkgdir.exists()) {
return null;
}
File scriptf = null;
String[] listunopkg = unopkgdir.list();
int size = listunopkg.length;
for (int i = 0; i < size; i++) {
if (listunopkg[i].toLowerCase().indexOf(SCRIPTF) > -1) {
scriptf = new File(unopkgdir, listunopkg[i]);
}
}
if (scriptf != null) {
File unoil = new File(scriptf, UNOILJAR);
if (unoil.exists()) {
String path = unoil.getParent();
path = path.substring(path.indexOf(UNOPACKAGEDIR));
return officeInstall + path;
}
}
return null;
}
public static void main(String[] args) {
SVersionRCFile ov;
if (args.length == 0)
ov = new SVersionRCFile();
else
ov = new SVersionRCFile(args[0]);
Iterator<OfficeInstallation> enumer;
try {
enumer = ov.getVersions();
} catch (IOException ioe) {
System.err.println("Error getting versions: " + ioe.getMessage());
return;
}
while (enumer.hasNext()) {
OfficeInstallation oi = enumer.next();
System.out.println("Name: " + oi.getName() + ", Path: " + oi.getPath() +
", URL: " + oi.getURL());
}
}
}

View File

@@ -1,39 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.filter;
public class AllFilesFilter implements FileFilter {
private static final AllFilesFilter filter = new AllFilesFilter();
private AllFilesFilter() {
}
public static AllFilesFilter getInstance() {
return filter;
}
public boolean validate(String name) {
return true;
}
@Override
public String toString() {
return "<all files>";
}
}

View File

@@ -1,44 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.filter;
public class BinaryOnlyFilter implements FileFilter {
private static final String[] EXTENSIONS = {".class", ".jar", ".bsh"};
private static final String DESCRIPTION = "Executable Files Only";
private static final BinaryOnlyFilter filter = new BinaryOnlyFilter();
private BinaryOnlyFilter() {
}
public static BinaryOnlyFilter getInstance() {
return filter;
}
public boolean validate(String name) {
for (int i = 0; i < EXTENSIONS.length; i++)
if (name.endsWith(EXTENSIONS[i]))
return true;
return false;
}
@Override
public String toString() {
return DESCRIPTION;
}
}

View File

@@ -1,45 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.filter;
public class ExceptParcelFilter implements FileFilter {
private static final String DESCRIPTION = "Remove specified Parcel";
private static final ExceptParcelFilter filter = new ExceptParcelFilter();
private static String parcelName = null;
private ExceptParcelFilter() {
}
public void setParcelToRemove(String parcelName) {
ExceptParcelFilter.parcelName = parcelName;
}
public static ExceptParcelFilter getInstance() {
return filter;
}
public boolean validate(String name) {
return name.startsWith(ExceptParcelFilter.parcelName);
}
@Override
public String toString() {
return DESCRIPTION + ": " + "<" + ExceptParcelFilter.parcelName + ">";
}
}

View File

@@ -1,23 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.filter;
public interface FileFilter {
boolean validate(String name);
}

View File

@@ -1,131 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.localoffice;
import java.net.ConnectException;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.bridge.UnoUrlResolver;
import com.sun.star.bridge.XUnoUrlResolver;
import com.sun.star.beans.XPropertySet;
import com.sun.star.comp.helper.Bootstrap;
import com.sun.star.uno.XComponentContext;
import com.sun.star.uno.UnoRuntime;
import drafts.com.sun.star.script.framework.storage.XScriptStorageManager;
import org.openoffice.idesupport.LocalOffice;
/**
* LocalOfficeImpl represents a connection to the local office.
*
* This class is an implementation of LocalOffice ane allows to
* get access to some scripting framework releated functionality
* of the locally running office. The office has to be started
* with options appropriate for establishing local connection.
*/
public final class LocalOfficeImpl
extends LocalOffice {
private final static String STORAGE_MRG_SINGLETON =
"/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager";
private transient XMultiComponentFactory mComponentFactory;
private transient XComponentContext mComponentContext;
/**
* Connects to the running office.
*
* @param officePath is a platform specific path string
* to the office distribution.
* @param port is a communication port.
*/
@Override
protected void connect(String officePath, int port)
throws ConnectException {
try {
bootstrap(port);
} catch (java.lang.Exception ex) {
throw new ConnectException(ex.getMessage());
}
}
/**
* Refresh the script storage.
*
* @param uri is an identifier of storage has to be refreshed.
*/
@Override
public void refreshStorage(String uri) {
try {
Object object = null;
object = mComponentContext.getValueByName(STORAGE_MRG_SINGLETON);
XScriptStorageManager storageMgr;
storageMgr = UnoRuntime.queryInterface(
XScriptStorageManager.class, object);
storageMgr.refreshScriptStorage(uri);
} catch (java.lang.Exception ex) {
System.out.println("*** LocalOfficeImpl.refreshStorage: FAILED " +
ex.getMessage());
System.out.println("*** LocalOfficeImpl.refreshStorage: FAILED " +
ex.getClass().getName());
}
System.out.println("*** LocalOfficeImpl.refreshStorage: DONE");
}
/**
* Closes the connection to the running office.
*/
@Override
public void disconnect() {
/*
if(mComponentFactory != null) {
XComponent comp = (XComponent)UnoRuntime.queryInterface(
XComponent.class, mComponentFactory);
comp.dispose();
}
*/
}
/**
* Boot straps UNO.
*
* The office has to be started with following string:
* "--accept=socket,host=localhost,port=<PORT>;urp;StarOffice.ServiceManager"
*
* @param port is a communication port.
*/
private void bootstrap(int port)
throws java.lang.Exception {
Object object;
mComponentContext = Bootstrap.createInitialComponentContext(null);
XUnoUrlResolver urlresolver = UnoUrlResolver.create(mComponentContext);
object = urlresolver.resolve(
"uno:socket,host=localhost,port=" +
port +
";urp;StarOffice.ServiceManager");
mComponentFactory = UnoRuntime.queryInterface(
XMultiComponentFactory.class, object);
XPropertySet factoryProps;
factoryProps = UnoRuntime.queryInterface(
XPropertySet.class, mComponentFactory);
object = factoryProps.getPropertyValue("DefaultContext");
mComponentContext = UnoRuntime.queryInterface(
XComponentContext.class, object);
}
}

View File

@@ -1,223 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.ui;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import org.openoffice.idesupport.zip.ParcelZipper;
import com.sun.star.script.framework.container.ParcelDescriptor;
import com.sun.star.script.framework.container.ScriptEntry;
public class ConfigurePanel extends JPanel {
private File basedir;
private ArrayList<String> classpath;
private ParcelDescriptor descriptor;
private MethodPanel methodPanel;
private ScriptPanel scriptPanel;
public static final String DIALOG_TITLE =
"Choose What to Export as Scripts";
public ConfigurePanel(String basedir, ArrayList<String> classpath,
ParcelDescriptor descriptor) {
this.basedir = new File(basedir);
this.classpath = classpath;
this.descriptor = descriptor;
initUI();
}
public ConfigurePanel(String basedir, ArrayList<String> classpath)
throws IOException {
this.basedir = new File(basedir);
this.classpath = classpath;
this.descriptor = new ParcelDescriptor(new File(this.basedir,
ParcelZipper.PARCEL_DESCRIPTOR_XML));
initUI();
}
public void reload(String basedir, ArrayList<String> classpath,
ParcelDescriptor descriptor) {
if (basedir != null)
this.basedir = new File(basedir);
if (classpath != null)
this.classpath = classpath;
if (descriptor != null) {
this.descriptor = descriptor;
}
methodPanel.reload(this.basedir, this.classpath,
descriptor.getLanguage());
scriptPanel.reload(descriptor.getScriptEntries());
}
public void reload(String basedir, ArrayList<String> classpath)
throws IOException {
if (basedir != null)
this.basedir = new File(basedir);
if (classpath != null)
this.classpath = classpath;
this.descriptor = new ParcelDescriptor(new File(this.basedir,
ParcelZipper.PARCEL_DESCRIPTOR_XML));
methodPanel.reload(this.basedir, this.classpath,
descriptor.getLanguage());
scriptPanel.reload(descriptor.getScriptEntries());
}
public ParcelDescriptor getConfiguration() throws Exception {
Iterator<ScriptEntry> scripts = scriptPanel.getScriptEntries();
descriptor.setScriptEntries(scripts);
return descriptor;
}
private void initUI() {
JPanel leftPanel = new JPanel();
JPanel methodButtons = initMethodButtons();
methodPanel = new MethodPanel(basedir, classpath, descriptor.getLanguage());
leftPanel.setLayout(new BorderLayout());
leftPanel.add(methodPanel, BorderLayout.CENTER);
JPanel rightPanel = new JPanel();
JPanel scriptButtons = initScriptButtons();
scriptPanel = new ScriptPanel(descriptor.getScriptEntries());
rightPanel.setLayout(new BorderLayout());
rightPanel.add(scriptPanel, BorderLayout.CENTER);
rightPanel.add(scriptButtons, BorderLayout.SOUTH);
setLayout(new GridBagLayout());
setPreferredSize(new java.awt.Dimension(700, 300));
setBorder(LineBorder.createBlackLineBorder());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = java.awt.GridBagConstraints.BOTH;
gbc.ipadx = 40;
gbc.anchor = java.awt.GridBagConstraints.WEST;
gbc.insets = new Insets(10, 5, 5, 5);
gbc.weightx = 0.75;
add(leftPanel, gbc);
gbc = new java.awt.GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
add(methodButtons, gbc);
gbc = new java.awt.GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gbc.fill = java.awt.GridBagConstraints.BOTH;
gbc.anchor = java.awt.GridBagConstraints.EAST;
gbc.insets = new Insets(10, 5, 5, 5);
gbc.weightx = 1.0;
gbc.weighty = 1.0;
add(rightPanel, gbc);
}
private JPanel initMethodButtons() {
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
ImageIcon icon = new ImageIcon(
getClass().getResource("/org/openoffice/idesupport/ui/add.gif"));
JButton addButton = new JButton("Add", icon);
addButton.setHorizontalTextPosition(AbstractButton.LEFT);
addButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
scriptPanel.addScriptEntries(methodPanel.getSelectedEntries());
}
}
);
GridBagConstraints gbc = new java.awt.GridBagConstraints();
gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gbc.fill = java.awt.GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(5, 5, 5, 5);
panel.add(addButton, gbc);
JPanel dummyPanel = new JPanel();
gbc = new java.awt.GridBagConstraints();
gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gbc.gridheight = java.awt.GridBagConstraints.REMAINDER;
gbc.fill = java.awt.GridBagConstraints.BOTH;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
panel.add(dummyPanel, gbc);
return panel;
}
private JPanel initScriptButtons() {
JPanel panel = new JPanel();
JButton removeButton = new JButton("Remove");
JButton removeAllButton = new JButton("Remove All");
removeButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
scriptPanel.removeSelectedRows();
}
}
);
removeAllButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
scriptPanel.removeAllRows();
}
}
);
panel.add(removeButton);
panel.add(removeAllButton);
return panel;
}
}

View File

@@ -1,164 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.ui;
import java.awt.BorderLayout;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.openoffice.idesupport.ExtensionFinder;
import org.openoffice.idesupport.JavaFinder;
import org.openoffice.idesupport.MethodFinder;
import com.sun.star.script.framework.container.ScriptEntry;
public class MethodPanel extends JPanel {
private File basedir;
private ArrayList<String> classpath;
private JList list;
private ScriptEntry[] values;
public MethodPanel(File basedir, ArrayList<String> classpath, String language) {
this.basedir = basedir;
this.classpath = classpath;
initValues(language);
initUI();
}
public void reload(File basedir, ArrayList<String> classpath, String language) {
this.basedir = basedir;
this.classpath = classpath;
initValues(language);
list.setListData(values);
}
public ScriptEntry[] getSelectedEntries() {
Object[] selections = list.getSelectedValues();
ScriptEntry[] entries = new ScriptEntry[selections.length];
for (int i = 0; i < selections.length; i++) {
entries[i] = (ScriptEntry)selections[i];
}
return entries;
}
private void initUI() {
JLabel label = new JLabel("Available Methods:");
list = new JList(values);
JScrollPane pane = new JScrollPane(list);
label.setLabelFor(pane);
BorderLayout layout = new BorderLayout();
setLayout(layout);
layout.setVgap(5);
add(label, BorderLayout.NORTH);
add(pane, BorderLayout.CENTER);
}
private void initValues(String language) {
MethodFinder finder;
if (language == null)
finder = JavaFinder.getInstance(classpath);
else if (language.equalsIgnoreCase("beanshell"))
finder = new ExtensionFinder(language, new String[] {".bsh"});
else
finder = JavaFinder.getInstance(classpath);
values = finder.findMethods(basedir);
}
/*
private class MethodTableModel extends AbstractTableModel {
final String[] columnNames = {"Method",
"Language"};
private ArrayList methods;
private int nextRow;
public MethodTableModel() {
methods = new ArrayList(11);
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return methods.size();
}
public String getColumnName(int col) {
return columnNames[col];
}
public void add(ScriptEntry entry) {
methods.addElement(entry);
fireTableRowsInserted(nextRow, nextRow);
nextRow++;
}
public void remove(int row) {
methods.removeElementAt(row);
fireTableRowsDeleted(row, row);
nextRow--;
}
public void removeAll() {
methods.removeAllElements();
fireTableRowsDeleted(0, nextRow);
nextRow = 0;
}
public Object getValueAt(int row) {
return methods.elementAt(row);
}
public Object getValueAt(int row, int col) {
String result = "";
ScriptEntry entry;
entry = (ScriptEntry)methods.elementAt(row);
if (col == 0)
result = entry.getLanguageName();
else if (col == 1)
result = entry.getLanguage();
return result;
}
public boolean isCellEditable(int row, int col) {
return false;
}
}
*/
}

View File

@@ -1,199 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.ui;
import java.awt.BorderLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.DefaultCellEditor;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
import com.sun.star.script.framework.container.ScriptEntry;
public class ScriptPanel extends JPanel {
private ScriptTableModel model;
private JTable table;
public ScriptPanel(ScriptEntry[] scripts) {
model = new ScriptTableModel(scripts);
initUI();
}
public void reload(ScriptEntry[] entries) {
model.removeAll();
addScriptEntries(entries);
}
public void addScriptEntries(ScriptEntry[] entries) {
for (int i = 0; i < entries.length; i++) {
ScriptEntry entry;
try {
entry = (ScriptEntry) entries[i].clone();
} catch (CloneNotSupportedException cnse) {
entry = new ScriptEntry(entries[i].getLanguage(),
entries[i].getLanguageName(),
entries[i].getLocation());
}
model.add(entry);
}
}
public void removeSelectedRows() {
int[] selections = table.getSelectedRows();
for (int i = selections.length - 1; i >= 0; i--) {
model.remove(selections[i]);
}
}
public void removeAllRows() {
model.removeAll();
}
public Iterator<ScriptEntry> getScriptEntries() {
return model.getScriptEntries();
}
private void initUI() {
table = new JTable(model);
TableColumn column = table.getColumnModel().getColumn(1);
column.setCellEditor(new DefaultCellEditor(new JTextField()));
table.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent evt) {
tableFocusLost();
}
});
JScrollPane pane = new JScrollPane(table);
JLabel label = new JLabel("Scripts:");
label.setLabelFor(pane);
BorderLayout layout = new BorderLayout();
setLayout(layout);
layout.setVgap(5);
add(label, BorderLayout.NORTH);
add(pane, BorderLayout.CENTER);
}
private void tableFocusLost() {
TableCellEditor editor = table.getCellEditor();
if (editor != null) {
Object value = editor.getCellEditorValue();
if (value != null)
model.setValueAt(value,
table.getEditingRow(), table.getEditingColumn());
}
}
private class ScriptTableModel extends AbstractTableModel {
final String[] columnNames = {"Exported Method",
"Script Name"
};
private ArrayList<ScriptEntry> scripts;
private int nextRow;
public ScriptTableModel(ScriptEntry[] entries) {
scripts = new ArrayList<ScriptEntry>(entries.length + 11);
for (int i = 0; i < entries.length; i++) {
scripts.add(entries[i]);
}
nextRow = entries.length;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return scripts.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
public void add(ScriptEntry entry) {
scripts.add(entry);
fireTableRowsInserted(nextRow, nextRow);
nextRow++;
}
public void remove(int row) {
scripts.remove(row);
fireTableRowsDeleted(row, row);
nextRow--;
}
public void removeAll() {
scripts.clear();
fireTableRowsDeleted(0, nextRow);
nextRow = 0;
}
public Iterator<ScriptEntry> getScriptEntries() {
return scripts.iterator();
}
public Object getValueAt(int row, int col) {
String result = "";
ScriptEntry entry;
entry = scripts.get(row);
if (col == 0)
result = entry.getLanguageName();
else if (col == 1)
result = entry.getLogicalName();
return result;
}
@Override
public boolean isCellEditable(int row, int col) {
return (col != 0);
}
@Override
public void setValueAt(Object value, int row, int col) {
ScriptEntry entry = scripts.get(row);
entry.setLogicalName((String)value);
fireTableCellUpdated(row, col);
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 B

View File

@@ -1,125 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.xml;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import com.sun.star.script.framework.container.XMLParserFactory;
public class Manifest {
private Document document = null;
private boolean baseElementsExist = false;
public Manifest(InputStream inputStream) throws IOException {
document = XMLParserFactory.getParser().parse(inputStream);
}
public void add(String entry) {
add(entry, "");
}
private void add(String entry, String type) {
Element root, el;
ensureBaseElementsExist();
try {
root = (Element)
document.getElementsByTagName("manifest:manifest").item(0);
el = document.createElement("manifest:file-entry");
el.setAttribute("manifest:media-type", type);
el.setAttribute("manifest:full-path", entry);
root.appendChild(el);
} catch (Exception e) {
System.err.println("Error adding entry: " + e.getMessage());
}
}
private void ensureBaseElementsExist() {
if (!baseElementsExist) {
baseElementsExist = true;
add("Scripts/", "application/script-parcel");
}
}
public void remove(String entry) {
Element root, el;
int len;
try {
root = (Element)
document.getElementsByTagName("manifest:manifest").item(0);
NodeList nl = root.getElementsByTagName("manifest:file-entry");
if (nl == null || (len = nl.getLength()) == 0)
return;
ArrayList<Element> list = new ArrayList<Element>();
for (int i = 0; i < len; i++) {
el = (Element)nl.item(i);
if (el.getAttribute("manifest:full-path").startsWith(entry)) {
list.add(el);
}
}
Iterator iter = list.iterator();
while (iter.hasNext())
root.removeChild((Element)iter.next());
} catch (Exception e) {
System.err.println("Error removing entry: " + e.getMessage());
}
}
public InputStream getInputStream() throws IOException {
InputStream result = null;
ByteArrayOutputStream out = null;
try {
out = new ByteArrayOutputStream();
write(out);
result = new ByteArrayInputStream(out.toByteArray());
} finally {
if (out != null)
out.close();
}
return result;
}
private void write(OutputStream out) throws IOException {
XMLParserFactory.getParser().write(document, out);
}
}

View File

@@ -1,159 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.idesupport.zip;
import java.io.*;
import java.util.zip.*;
import org.openoffice.idesupport.filter.FileFilter;
import org.openoffice.idesupport.filter.BinaryOnlyFilter;
import org.openoffice.idesupport.xml.Manifest;
public class ParcelZipper {
public static final String PARCEL_PREFIX_DIR = "Scripts/";
private static final String PARCEL_EXTENSION = "sxp";
public static final String CONTENTS_DIRNAME = "Contents";
public static final String PARCEL_DESCRIPTOR_XML = "parcel-descriptor.xml";
private static ParcelZipper zipper = null;
private static final FileFilter DEFAULT_FILTER =
BinaryOnlyFilter.getInstance();
private ParcelZipper() {
}
public static synchronized ParcelZipper getParcelZipper() {
if (zipper == null)
zipper = new ParcelZipper();
return zipper;
}
public String removeParcel(File document, String parcelName)
throws IOException {
ZipInputStream documentStream = null;
ZipOutputStream outStream = null;
Manifest manifest = null;
if (!parcelName.startsWith(PARCEL_PREFIX_DIR))
parcelName = PARCEL_PREFIX_DIR + parcelName;
manifest = removeParcelFromManifest(document, parcelName);
// first write contents of document to tmpfile
File tmpfile = new File(document.getAbsolutePath() + ".tmp");
try {
ZipEntry outEntry;
ZipEntry inEntry;
byte[] bytes = new byte[1024];
int len;
documentStream = new ZipInputStream(new FileInputStream(document));
outStream = new ZipOutputStream(new FileOutputStream(tmpfile));
while ((inEntry = documentStream.getNextEntry()) != null) {
if (inEntry.getName().startsWith(parcelName))
continue;
outEntry = new ZipEntry(inEntry);
outStream.putNextEntry(outEntry);
if (inEntry.getName().equals("META-INF/manifest.xml") &&
manifest != null) {
InputStream manifestStream = null;
try {
manifestStream = manifest.getInputStream();
while ((len = manifestStream.read(bytes)) != -1)
outStream.write(bytes, 0, len);
} finally {
if (manifestStream != null)
manifestStream.close();
}
} else if (!inEntry.isDirectory()) {
while ((len = documentStream.read(bytes)) != -1)
outStream.write(bytes, 0, len);
}
outStream.closeEntry();
}
} catch (IOException ioe) {
tmpfile.delete();
throw ioe;
} finally {
if (documentStream != null)
documentStream.close();
if (outStream != null)
outStream.close();
}
if (!document.delete()) {
tmpfile.delete();
throw new IOException("Could not overwrite " + document);
} else
tmpfile.renameTo(document);
return document.getAbsolutePath();
}
private Manifest getManifestFromDocument(File document) {
ZipFile documentZip = null;
Manifest result = null;
try {
documentZip = new ZipFile(document);
ZipEntry original = documentZip.getEntry("META-INF/manifest.xml");
if (original != null) {
result = new Manifest(documentZip.getInputStream(original));
}
} catch (IOException ioe) {
} finally {
try {
if (documentZip != null)
documentZip.close();
} catch (IOException ioe) {}
}
return result;
}
private Manifest removeParcelFromManifest(File document, String name) {
Manifest result = null;
result = getManifestFromDocument(document);
if (result == null)
return null;
result.remove(name);
return result;
}
}

View File

@@ -1,237 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.editor;
import java.io.*;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.text.MessageFormat;
import java.util.Map;
import java.util.List;
import java.util.ResourceBundle;
import java.util.MissingResourceException;
import javax.swing.KeyStroke;
import javax.swing.JEditorPane;
import javax.swing.JMenuItem;
import javax.swing.Action;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.text.TextAction;
import javax.swing.text.BadLocationException;
import org.netbeans.editor.*;
import org.netbeans.editor.ext.*;
import org.netbeans.editor.ext.java.*;
/**
* Java editor kit with appropriate document
*
* @version 1.00
*/
/* This class is based on the JavaKit class in the demosrc directory of
* the editor module of the NetBeans project: http://www.netbeans.org
*
* The class sets up an EditorKit for syntax highlighting and code completion
* of Java syntax
*/
public class JavaKit extends ExtKit {
public static final String JAVA_MIME_TYPE = "text/x-java"; // NOI18N
static final long serialVersionUID = -5445829962533684922L;
static {
Settings.addInitializer(new JavaSettingsInitializer(JavaKit.class));
Settings.reset();
URL skeleton = null, body = null;
skeleton = JavaKit.class.getResource("OOo.jcs");
body = JavaKit.class.getResource("OOo.jcb");
if (skeleton != null && body != null) {
DAFileProvider provider = new DAFileProvider(
new URLAccessor(skeleton),
new URLAccessor(body));
JCBaseFinder finder = new JCBaseFinder();
finder.append(provider);
JavaCompletion.setFinder(finder);
}
}
public String getContentType() {
return JAVA_MIME_TYPE;
}
/** Create new instance of syntax coloring scanner
* @param doc document to operate on. It can be null in the cases the syntax
* creation is not related to the particular document
*/
public Syntax createSyntax(Document doc) {
return new JavaSyntax();
}
/** Create syntax support */
public SyntaxSupport createSyntaxSupport(BaseDocument doc) {
return new JavaSyntaxSupport(doc);
}
public Completion createCompletion(ExtEditorUI extEditorUI) {
return new JavaCompletion(extEditorUI);
}
/** Create the formatter appropriate for this kit */
public Formatter createFormatter() {
return new JavaFormatter(this.getClass());
}
protected EditorUI createEditorUI() {
return new ExtEditorUI();
}
protected void initDocument(BaseDocument doc) {
doc.addLayer(new JavaDrawLayerFactory.JavaLayer(),
JavaDrawLayerFactory.JAVA_LAYER_VISIBILITY);
doc.addDocumentListener(new JavaDrawLayerFactory.LParenWatcher());
}
/**
* DataAccessor for parser DB files via URL streams
*/
public static class URLAccessor implements DataAccessor {
URL url;
InputStream stream;
int streamOff;
int actOff;
public URLAccessor(URL url) {
this.url = url;
}
/** Not implemented
*/
public void append(byte[] buffer, int off, int len)
throws IOException {
throw new IllegalArgumentException("read only!");
}
/**
* Reads exactly <code>len</code> bytes from this file resource
* into the byte array, starting at the current file pointer.
* This method reads repeatedly from the file until the requested
* number of bytes are read. This method blocks until the requested
* number of bytes are read, the end of the inputStream is detected,
* or an exception is thrown.
*
* @param buffer the buffer into which the data is read.
* @param off the start offset of the data.
* @param len the number of bytes to read.
*/
public void read(byte[] buffer, int off, int len) throws IOException {
InputStream str = getStream(actOff);
while (len > 0) {
int count = str.read(buffer, off, len);
streamOff += count;
off += count;
len -= count;
}
}
/** Opens DataAccessor file resource
* @param requestWrite if true, file is opened for read/write
*/
public void open(boolean requestWrite) throws IOException {
if (requestWrite)
throw new IllegalArgumentException("read only!");
}
/** Closes DataAccessor file resource */
public void close() throws IOException {
if (stream != null) {
stream.close();
stream = null;
}
}
/**
* Returns the current offset in this file.
*
* @return the offset from the beginning of the file, in bytes,
* at which the next read or write occurs.
*/
public long getFilePointer() throws IOException {
return actOff;
}
/** Clears the file and sets the offset to 0 */
public void resetFile() throws IOException {
throw new IllegalArgumentException("read only!");
}
/**
* Sets the file-pointer offset, measured from the beginning of this
* file, at which the next read or write occurs.
*/
public void seek(long pos) throws IOException {
actOff = (int)pos;
}
/** Gets InputStream prepared for reading from <code>off</code>
* offset position
*/
private InputStream getStream(int off) throws IOException {
if (streamOff > off && stream != null) {
stream.close();
stream = null;
}
if (stream == null) {
stream = url.openStream();
streamOff = 0;
}
while (streamOff < off) {
long len = stream.skip(off - streamOff);
streamOff += (int)len;
if (len == 0) throw new IOException("EOF");
}
return stream;
}
public int getFileLength() {
try {
int l = url.openConnection().getContentLength();
return l;
} catch (IOException e) {
return 0;
}
}
public String toString() {
return url.toString();
}
}
}

View File

@@ -1,197 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.editor;
import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import java.io.*;
import java.util.ResourceBundle;
import javax.swing.text.Caret;
import org.netbeans.editor.*;
import org.netbeans.editor.ext.*;
import com.sun.star.script.framework.provider.beanshell.ScriptSourceView;
import com.sun.star.script.framework.provider.beanshell.ScriptSourceModel;
public class NetBeansSourceView extends JPanel
implements ScriptSourceView, DocumentListener {
private ScriptSourceModel model;
private JEditorPane pane;
private boolean isModified = false;
static {
// Feed our kits with their default Settings
Settings.addInitializer(
new BaseSettingsInitializer(), Settings.CORE_LEVEL);
Settings.addInitializer(
new ExtSettingsInitializer(), Settings.CORE_LEVEL);
Settings.reset();
try {
Class kitClass = Class.forName(
NetBeansSourceView.class.getPackage().getName() + ".JavaKit");
JEditorPane.registerEditorKitForContentType(
"text/x-java", kitClass.getName(), kitClass.getClassLoader());
} catch (ClassNotFoundException exc) {
}
}
private class MyLocalizer implements LocaleSupport.Localizer {
private ResourceBundle bundle;
public MyLocalizer(String bundleName) {
bundle = ResourceBundle.getBundle(bundleName);
}
// Localizer
public String getString(String key) {
return bundle.getString(key);
}
}
public NetBeansSourceView(ScriptSourceModel model) {
this.model = model;
LocaleSupport.addLocalizer(
new MyLocalizer("org.netbeans.editor.Bundle"));
pane = new JEditorPane("text/x-java", "");
pane.setText(model.getText());
JScrollPane spane = new JScrollPane();
spane.setViewportView(pane);
setLayout(new java.awt.GridLayout(1, 1));
add(spane);
pane.getDocument().addDocumentListener(this);
}
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("No file specified");
System.exit(-1);
}
File f = new File(args[0]);
if (!f.exists() || !f.isFile()) {
System.err.println("Invalid file");
System.exit(-1);
}
java.net.URL url = null;
try {
url = f.toURL();
} catch (java.net.MalformedURLException mue) {
System.err.println("Invalid file");
System.exit(-1);
}
NetBeansSourceView view =
new NetBeansSourceView(new ScriptSourceModel(url));
JFrame frame = new JFrame();
frame.getContentPane().add(view);
frame.setSize(640, 480);
frame.show();
}
// Code grabbed from NetBeans editor module
public void scrollToLine(int line) {
BaseDocument doc = Utilities.getDocument(pane);
int pos = -1;
if (doc != null) {
// Obtain the offset where to jump
pos = Utilities.getRowStartFromLineOffset(doc, line);
}
if (pos != -1) {
Caret caret = pane.getCaret();
if (caret instanceof BaseCaret) { // support extended scroll mode
BaseCaret bCaret = (BaseCaret)caret;
bCaret.setDot(pos, bCaret, EditorUI.SCROLL_FIND);
} else {
caret.setDot(pos);
}
}
}
public void clear() {
pane.setText("");
}
public void update() {
/* Remove ourselves as a DocumentListener while loading the source
so we don't get a storm of DocumentEvents during loading */
pane.getDocument().removeDocumentListener(this);
if (!isModified) {
pane.setText(model.getText());
}
// scroll to current position of the model
try {
scrollToLine(model.getCurrentPosition());
} catch (Exception e) {
// couldn't scroll to line, do nothing
}
// Add back the listener
pane.getDocument().addDocumentListener(this);
}
public boolean isModified() {
return isModified;
}
public void setModified(boolean value) {
isModified = value;
}
public String getText() {
return pane.getText();
}
/* Implementation of DocumentListener interface */
public void insertUpdate(DocumentEvent e) {
doChanged(e);
}
public void removeUpdate(DocumentEvent e) {
doChanged(e);
}
public void changedUpdate(DocumentEvent e) {
doChanged(e);
}
public void doChanged(DocumentEvent e) {
isModified = true;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,60 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.util.Vector;
import java.util.Enumeration;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.RequestProcessor;
import org.openide.actions.BuildAllAction;
import org.openide.compiler.Compiler;
import org.openide.compiler.CompilerJob;
import org.openide.compiler.CompilerTask;
import org.openoffice.netbeans.modules.office.utils.FrameworkJarChecker;
public class BuildParcelAction extends BuildAllAction {
public String getName() {
return "Build";
}
protected void performAction(Node[] activatedNodes) {
FrameworkJarChecker.mountDependencies();
for (int i = 0; i < activatedNodes.length; i++) {
ArrayList v = new ArrayList(1);
v.addElement(activatedNodes[i]);
CompilerJob job = createJob(v.elements(), Compiler.DEPTH_INFINITE);
CompilerTask task = job.start();
task.waitFinished();
if (task.isSuccessful()) {
ParcelFolderCookie cookie = (ParcelFolderCookie)
activatedNodes[i].getCookie(ParcelFolderCookie.class);
if (cookie != null)
cookie.generate();
}
}
}
}

View File

@@ -1,35 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.openide.nodes.Node;
import org.openide.actions.CompileAllAction;
import org.openoffice.netbeans.modules.office.utils.FrameworkJarChecker;
public class CompileParcelAction extends CompileAllAction {
public String getName() {
return "Compile";
}
protected void performAction(Node[] activatedNodes) {
FrameworkJarChecker.mountDependencies();
super.performAction(activatedNodes);
}
}

View File

@@ -1,61 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.RequestProcessor;
import org.openide.util.actions.CookieAction;
import org.openoffice.netbeans.modules.office.utils.FrameworkJarChecker;
public class ConfigureParcelAction extends CookieAction {
public String getName() {
return "Configure";
}
protected java.lang.Class[] cookieClasses() {
return new Class[] {ParcelFolderCookie.class};
}
protected int mode() {
return CookieAction.MODE_EXACTLY_ONE;
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
protected void performAction(final Node[] activatedNodes) {
FrameworkJarChecker.mountDependencies();
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
for (int i = 0; i < activatedNodes.length; i++) {
ParcelFolderCookie pfc = (ParcelFolderCookie)
activatedNodes[i].getCookie(ParcelFolderCookie.class);
if (pfc != null)
pfc.configure();
}
}
});
}
}

View File

@@ -1,238 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.JMenuItem;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import org.openide.TopManager;
import org.openide.NotifyDescriptor;
import org.openide.awt.Actions;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;
import org.openide.util.actions.*;
import org.openide.awt.JMenuPlus;
import org.openoffice.idesupport.SVersionRCFile;
import org.openoffice.idesupport.OfficeInstallation;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.idesupport.LocalOffice;
import org.openoffice.netbeans.modules.office.utils.NagDialog;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
public class DeployParcelAction extends CookieAction implements
Presenter.Popup {
private static final String BROWSE_LABEL = "Office Document...";
private static final String DEPLOY_LABEL = "Deploy To";
public String getName() {
return DEPLOY_LABEL;
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
public JMenuItem getPopupPresenter() {
JMenuPlus menu = new JMenuPlus(DEPLOY_LABEL);
JMenuItem item, user, share;
final OfficeInstallation oi = OfficeSettings.getDefault().getOfficeDirectory();
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JMenuItem choice = (JMenuItem)e.getSource();
String label = choice.getText();
Node[] nodes = getActivatedNodes();
final ParcelCookie parcelCookie =
(ParcelCookie)nodes[0].getCookie(ParcelCookie.class);
File target = new File(oi.getPath(File.separator + label +
File.separator + "Scripts"));
File langdir = new File(target, parcelCookie.getLanguage());
if (!langdir.exists()) {
boolean response = askIfCreateDirectory(langdir);
if (!response) {
return;
}
}
deploy(target);
}
};
user = new JMenuItem("user");
user.addActionListener(listener);
share = new JMenuItem("share");
share.addActionListener(listener);
item = new JMenuPlus(oi.getName());
item.add(user);
item.add(share);
menu.add(item);
menu.addSeparator();
item = new JMenuItem(BROWSE_LABEL);
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File target = getTargetFile();
if (target == null)
return;
deploy(target);
}
});
menu.add(item);
return menu;
}
protected int mode() {
return MODE_ONE;
}
protected Class[] cookieClasses() {
return new Class[] { ParcelCookie.class };
}
protected void performAction(Node[] activatedNodes) {
// do nothing, should not happen
}
private void deploy(final File target) {
Node[] nodes = getActivatedNodes();
final ParcelCookie parcelCookie =
(ParcelCookie)nodes[0].getCookie(ParcelCookie.class);
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
boolean result = parcelCookie.deploy(target);
if (result && target.isDirectory()) {
showNagDialog();
}
}
});
}
private boolean askIfCreateDirectory(File directory) {
String message = directory.getAbsolutePath() + " does not exist. " +
"Do you want to create it now?";
NotifyDescriptor d = new NotifyDescriptor.Confirmation(
message, NotifyDescriptor.OK_CANCEL_OPTION);
TopManager.getDefault().notify(d);
if (d.getValue() == NotifyDescriptor.CANCEL_OPTION)
return false;
boolean result;
try {
result = directory.mkdirs();
} catch (SecurityException se) {
result = false;
}
if (!result) {
String tmp = "Error creating: " + directory.getAbsolutePath();
NotifyDescriptor d2 = new NotifyDescriptor.Message(
tmp, NotifyDescriptor.ERROR_MESSAGE);
TopManager.getDefault().notify(d2);
}
return result;
}
private void refreshOffice(String path) {
ClassLoader syscl = TopManager.getDefault().currentClassLoader();
LocalOffice office = LocalOffice.create(syscl, path, 8100);
office.refreshStorage("file://" + path + "/program/../user");
office.disconnect();
}
private void showNagDialog() {
String message = "If you currently have Office running you will " +
"need to click on the Tools/Scripting Add-on's/Refresh All Scripts " +
" menu item in Office so that the scripts in this parcel can be detected.";
OfficeSettings settings = OfficeSettings.getDefault();
if (settings.getWarnAfterDirDeploy()) {
NagDialog warning = NagDialog.createInformationDialog(
message, "Show this message in future", true);
warning.show();
if (!warning.getState())
settings.setWarnAfterDirDeploy(false);
}
}
private File getTargetFile() {
File target = null;
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Deploy Parcel To Office Document");
chooser.setApproveButtonText("Deploy");
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileFilter(new FileFilter() {
public boolean accept(File file) {
return file.isDirectory() ||
file.getName().endsWith(".sxw") ||
file.getName().endsWith(".sxc") ||
file.getName().endsWith(".sxd") ||
file.getName().endsWith(".sxi");
}
public String getDescription() {
return "Office Documents";
}
});
int result = chooser.showDialog(null, null);
if (result == JFileChooser.APPROVE_OPTION) {
target = chooser.getSelectedFile();
}
return target;
}
}

View File

@@ -1,62 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.RequestProcessor;
import org.openide.util.actions.CookieAction;
/**
* @version 1.0
*/
public class MountDocumentAction extends CookieAction {
public String getName() {
return "Mount Document"; //NOI18N
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
protected int mode() {
// enable duplication for as many qualifying nodes as are selected:
return CookieAction.MODE_ALL;
}
protected java.lang.Class[] cookieClasses() {
// just the DuplicateCookie:
return new Class[] {OfficeDocumentCookie.class};
}
protected void performAction(final Node[] activatedNodes) {
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
for (int i = 0; i < activatedNodes.length; i++) {
OfficeDocumentCookie cookie = (OfficeDocumentCookie)activatedNodes[i].getCookie(
OfficeDocumentCookie.class);
if (cookie != null) {
cookie.mount();
}
}
}
});
}
}

View File

@@ -1,61 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.RequestProcessor;
import org.openide.util.actions.CookieAction;
/**
* @version 1.0
*/
public class MountParcelAction extends CookieAction {
public String getName() {
return "Mount Parcel"; //NOI18N
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
protected int mode() {
// enable duplication for as many qualifying nodes as are selected:
return CookieAction.MODE_ALL;
}
protected java.lang.Class[] cookieClasses() {
return new Class[] {ParcelCookie.class};
}
protected void performAction(final Node[] activatedNodes) {
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
for (int i = 0; i < activatedNodes.length; i++) {
ParcelCookie mpc = (ParcelCookie)activatedNodes[i].getCookie(
ParcelCookie.class);
if (mpc != null) {
mpc.mount();
}
}
}
});
}
}

View File

@@ -1,32 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.util.Enumeration;
import javax.swing.event.ChangeListener;
import org.openide.nodes.Node;
public interface OfficeDocumentCookie extends Node.Cookie {
void mount();
Enumeration getParcels();
void removeParcel(String name);
void addChangeListener(ChangeListener cl);
void removeChangeListener(ChangeListener cl);
}

View File

@@ -1,133 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.IOException;
import java.io.File;
import java.beans.PropertyVetoException;
import java.util.Enumeration;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import org.openide.ErrorManager;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.FileChangeListener;
import org.openide.filesystems.FileEvent;
import org.openide.filesystems.FileAttributeEvent;
import org.openide.filesystems.FileRenameEvent;
import org.openide.cookies.OpenCookie;
import org.openoffice.idesupport.OfficeDocument;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
import org.openoffice.netbeans.modules.office.loader.OfficeDocumentDataObject;
import org.openoffice.netbeans.modules.office.utils.ZipMounter;
import org.openoffice.netbeans.modules.office.utils.ManifestParser;
public class OfficeDocumentSupport implements OfficeDocumentCookie, OpenCookie,
FileChangeListener {
protected OfficeDocumentDataObject dataObj;
private boolean isMounted = false;
private OfficeDocument document;
private Set listeners;
public OfficeDocumentSupport(OfficeDocumentDataObject dataObj) {
this.dataObj = dataObj;
FileObject fo = dataObj.getPrimaryFile();
try {
this.document = new OfficeDocument(FileUtil.toFile(fo));
} catch (Exception e) {
e.printStackTrace();
}
fo.addFileChangeListener(this);
}
public void mount() {
File file = FileUtil.toFile(dataObj.getPrimaryFile());
try {
ZipMounter.getZipMounter().mountZipFile(file);
isMounted = true;
} catch (IOException ioe) {
ErrorManager.getDefault().notify(ioe);
} catch (PropertyVetoException pve) {
ErrorManager.getDefault().notify(pve);
}
}
public void open() {
File file = FileUtil.toFile(dataObj.getPrimaryFile());
OfficeSettings settings = OfficeSettings.getDefault();
File soffice = new File(settings.getOfficeDirectory().getPath(
File.separator + "soffice"));
try {
Process p = Runtime.getRuntime().exec(new String[] {
soffice.getAbsolutePath(), file.getAbsolutePath()
});
} catch (IOException ioe) {
ErrorManager.getDefault().notify(ioe);
}
}
public Enumeration getParcels() {
return document.getParcels();
}
public void removeParcel(String name) {
document.removeParcel(name);
dataObj.getPrimaryFile().refresh(true);
}
public void addChangeListener(ChangeListener cl) {
if (listeners == null)
listeners = new HashSet();
listeners.add(cl);
}
public void removeChangeListener(ChangeListener cl) {
if (listeners == null)
return;
listeners.remove(cl);
}
public void fileChanged(FileEvent fe) {
if (listeners != null) {
Iterator iter = listeners.iterator();
while (iter.hasNext())
((ChangeListener)iter.next()).stateChanged(new ChangeEvent(this));
}
}
public void fileAttributeChanged(FileAttributeEvent fe) {}
public void fileDataCreated(FileEvent fe) {}
public void fileDeleted(FileEvent fe) {}
public void fileFolderCreated(FileEvent fe) {}
public void fileRenamed(FileRenameEvent fe) {}
}

View File

@@ -1,32 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.File;
import org.openide.nodes.Node;
public interface ParcelCookie extends Node.Cookie {
File getFile();
String getLanguage();
void mount();
boolean deploy(File target);
}

View File

@@ -1,136 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.IOException;
import org.openide.cookies.*;
import org.openide.filesystems.FileLock;
import org.openide.filesystems.FileObject;
import org.openide.loaders.DataObject;
import org.openide.text.DataEditorSupport;
import org.openide.windows.CloneableOpenSupport;
import org.openoffice.netbeans.modules.office.loader.ParcelDescriptorDataObject;
/** Support for editing a data object as text.
*/
// Replace OpenCookie with EditCookie or maybe ViewCookie as desired:
public class ParcelDescriptorEditorSupport extends DataEditorSupport implements
EditorCookie, OpenCookie, CloseCookie, PrintCookie {
/** Create a new editor support.
* @param obj the data object whose primary file will be edited as text
*/
public ParcelDescriptorEditorSupport(ParcelDescriptorDataObject obj) {
super(obj, new ParcelDescriptorEnv(obj));
// Set a MIME type as needed, e.g.:
setMIMEType("text/xml");
}
/** Called when the document is modified.
* Here, adding a save cookie to the object and marking it modified.
* @return true if the modification is acceptable
*/
protected boolean notifyModified() {
if (!super.notifyModified()) {
return false;
}
ParcelDescriptorDataObject obj = (ParcelDescriptorDataObject)getDataObject();
if (obj.getCookie(SaveCookie.class) == null) {
obj.setModified(true);
// You must implement this method on the object:
obj.addSaveCookie(new Save());
}
return true;
}
/** Called when the document becomes unmodified.
* Here, removing the save cookie from the object and marking it unmodified.
*/
protected void notifyUnmodified() {
ParcelDescriptorDataObject obj = (ParcelDescriptorDataObject)getDataObject();
SaveCookie save = (SaveCookie)obj.getCookie(SaveCookie.class);
if (save != null) {
// You must implement this method on the object:
obj.removeSaveCookie(save);
obj.setModified(false);
}
super.notifyUnmodified();
}
/** A save cookie to use for the editor support.
* When saved, saves the document to disk and marks the object unmodified.
*/
private class Save implements SaveCookie {
public void save() throws IOException {
saveDocument();
getDataObject().setModified(false);
}
}
/** A description of the binding between the editor support and the object.
* Note this may be serialized as part of the window system and so
* should be static, and use the transient modifier where needed.
*/
private static class ParcelDescriptorEnv extends DataEditorSupport.Env {
/** Create a new environment based on the data object.
* @param obj the data object to edit
*/
public ParcelDescriptorEnv(ParcelDescriptorDataObject obj) {
super(obj);
}
/** Get the file to edit.
* @return the primary file normally
*/
protected FileObject getFile() {
return getDataObject().getPrimaryFile();
}
/** Lock the file to edit.
* Should be taken from the file entry if possible, helpful during
* e.g. deletion of the file.
* @return a lock on the primary file normally
* @throws IOException if the lock could not be taken
*/
protected FileLock takeLock() throws IOException {
return ((ParcelDescriptorDataObject)
getDataObject()).getPrimaryEntry().takeLock();
}
/** Find the editor support this environment represents.
* Note that we have to look it up, as keeping a direct
* reference would not permit this environment to be serialized.
* @return the editor support
*/
public CloneableOpenSupport findCloneableOpenSupport() {
return (ParcelDescriptorEditorSupport)getDataObject().getCookie(
ParcelDescriptorEditorSupport.class);
}
}
}

View File

@@ -1,32 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.w3c.dom.NodeList;
import javax.swing.event.ChangeListener;
import org.openide.nodes.Node;
public interface ParcelDescriptorParserCookie extends Node.Cookie {
// should return a NodeList of org.w3c.dom.Element
NodeList getScriptElements();
void addChangeListener(ChangeListener cl);
void removeChangeListener(ChangeListener cl);
}

View File

@@ -1,107 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.*;
import java.util.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.openide.filesystems.*;
import org.openide.xml.XMLUtil;
public class ParcelDescriptorParserSupport
implements ParcelDescriptorParserCookie, FileChangeListener {
private FileObject fo;
private Document document;
private Set listeners;
public ParcelDescriptorParserSupport(FileObject fo) {
this.fo = fo;
fo.addFileChangeListener(this);
}
private synchronized void parseFile() {
File file = FileUtil.toFile(fo);
InputSource is;
try {
is = new InputSource(new FileInputStream(file));
} catch (FileNotFoundException fnfe) {
System.out.println("Couldn't find file: " + file.getName());
return;
}
document = null;
try {
document = XMLUtil.parse(is, false, false, null, null);
} catch (IOException ioe) {
System.out.println("IO Error parsing file: " + file.getName());
} catch (SAXException se) {
System.out.println("Sax Error parsing file: " + file.getName());
}
}
public synchronized NodeList getScriptElements() {
if (document == null)
parseFile();
if (document != null)
return document.getElementsByTagName("script");
return null;
}
public void addChangeListener(ChangeListener cl) {
if (listeners == null)
listeners = new HashSet();
listeners.add(cl);
}
public void removeChangeListener(ChangeListener cl) {
if (listeners == null)
return;
listeners.remove(cl);
}
public void fileChanged(FileEvent fe) {
parseFile();
if (listeners != null) {
Iterator iter = listeners.iterator();
while (iter.hasNext())
((ChangeListener)iter.next()).stateChanged(new ChangeEvent(this));
}
}
public void fileAttributeChanged(FileAttributeEvent fe) {}
public void fileDataCreated(FileEvent fe) {}
public void fileDeleted(FileEvent fe) {}
public void fileFolderCreated(FileEvent fe) {}
public void fileRenamed(FileRenameEvent fe) {}
}

View File

@@ -1,32 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import org.openide.nodes.Node;
public interface ParcelFolderCookie extends Node.Cookie {
void generate();
boolean configure();
void setClasspath(String value);
String getClasspath();
String getLanguage();
}

View File

@@ -1,242 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.util.Vector;
import java.util.StringTokenizer;
import java.io.*;
import java.beans.PropertyVetoException;
import java.awt.Dialog;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.openide.TopManager;
import org.openide.DialogDescriptor;
import org.openide.ErrorManager;
import org.openide.xml.XMLUtil;
import org.openide.execution.NbClassPath;
import org.openide.cookies.OpenCookie;
import org.openide.loaders.DataObject;
import org.openide.loaders.DataNode;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileSystem;
import org.openide.filesystems.JarFileSystem;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.Repository;
import org.openide.nodes.*;
import org.openide.windows.OutputWriter;
import org.openoffice.netbeans.modules.office.loader.ParcelFolder;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
import org.openoffice.netbeans.modules.office.utils.ManifestParser;
import com.sun.star.script.framework.container.ParcelDescriptor;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.idesupport.filter.FileFilter;
import org.openoffice.idesupport.ui.ConfigurePanel;
public class ParcelFolderSupport implements ParcelFolderCookie {
protected ParcelFolder parcelFolder;
private ConfigurePanel configuror = 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) {
return "";
} else {
return descriptor.getLanguageProperty("classpath");
}
}
public void setClasspath(String value) {
ParcelDescriptor descriptor = getParcelDescriptor();
if (descriptor != null) {
descriptor.setLanguageProperty("classpath", value);
try {
descriptor.write();
} catch (IOException ioe) {
ErrorManager.getDefault().notify(ioe);
}
}
}
private ParcelDescriptor getParcelDescriptor() {
FileObject primary = parcelFolder.getPrimaryFile();
File contents = FileUtil.toFile(
primary.getFileObject(ParcelZipper.CONTENTS_DIRNAME));
return ParcelDescriptor.getParcelDescriptor(contents);
}
public void generate() {
ParcelFolder.ParcelFolderNode node =
(ParcelFolder.ParcelFolderNode)parcelFolder.getNodeDelegate();
FileObject parcelBase = parcelFolder.getPrimaryFile();
FileObject contentsBase =
parcelBase.getFileObject(ParcelZipper.CONTENTS_DIRNAME);
File parcelDir = FileUtil.toFile(parcelBase);
File contentsDir = FileUtil.toFile(contentsBase);
// The Location property is not displayed so just
// use the Parcel Recipe directory as the target directory
File targetDir = FileUtil.toFile(parcelFolder.getPrimaryFile());
File targetfile = new File(targetDir, File.separator +
parcelBase.getName() + "." + ParcelZipper.PARCEL_EXTENSION);
boolean proceed = configure();
if (!proceed) {
return;
}
final OutputWriter out =
ParcelSupport.getOutputWindowWriter(parcelDir.getName() + " (generating)");
try {
out.println("Generating: " + parcelDir.getName(), null);
ParcelZipper.getParcelZipper().zipParcel(contentsDir, targetfile,
node.getFileFilter());
out.println("\nGENERATION SUCCESSFUL.");
out.println("\nRight click on the generated parcel to deploy it");
if (targetDir.equals(parcelDir)) {
parcelBase.refresh(true);
}
} catch (IOException ioe) {
out.println("GENERATION FAILED: reason: " + ioe.getClass().getName() + ": " +
ioe.getMessage());
} finally {
if (out != null) {
out.close();
}
}
}
public boolean configure() {
FileObject primary = parcelFolder.getPrimaryFile();
File contents = FileUtil.toFile(
primary.getFileObject(ParcelZipper.CONTENTS_DIRNAME));
ArrayList<String> classpath = getConfigureClasspath();
classpath.add(contents.getAbsolutePath());
try {
ParcelDescriptor descriptor = getParcelDescriptor();
if (descriptor == null) {
descriptor = ParcelDescriptor.createParcelDescriptor(contents);
}
if (configuror == null) {
configuror = new ConfigurePanel(contents.getAbsolutePath(),
classpath, descriptor);
} else {
configuror.reload(contents.getAbsolutePath(), classpath,
descriptor);
}
} catch (IOException ioe) {
ErrorManager.getDefault().notify(ioe);
return false;
}
DialogDescriptor dd = new DialogDescriptor(configuror,
ConfigurePanel.DIALOG_TITLE);
Dialog dialog = TopManager.getDefault().createDialog(dd);
dialog.show();
if (dd.getValue() == DialogDescriptor.OK_OPTION) {
try {
ParcelDescriptor descriptor = configuror.getConfiguration();
descriptor.write();
} catch (Exception e) {
ErrorManager.getDefault().notify(e);
}
} else {
return false;
}
return true;
}
private ArrayList<String> getConfigureClasspath() {
ArrayList<String> result = new ArrayList<String>();
String classpath = NbClassPath.createRepositoryPath().getClassPath();
if (System.getProperty("os.name").startsWith("Windows")) {
// under windows path is enclosed by quotes
// e.g. C:\path1;d:\path2 would appear as
// "C:\path1;d:\path2" therefore for us
// we need to remove 1 character at either end of the
// classpath returned from "createRepositoryPath().getClassPath()"
if (classpath.startsWith("\"") && classpath.endsWith("\"")) {
StringBuffer buff = new StringBuffer(classpath);
buff.delete(0, 1);
buff.delete(buff.length() - 1, buff.length());
classpath = buff.toString();
}
}
StringTokenizer tokens = new StringTokenizer(classpath, File.pathSeparator);
while (tokens.hasMoreTokens())
result.addElement(tokens.nextToken());
OfficeSettings settings = OfficeSettings.getDefault();
File classesDir = new File(settings.getOfficeDirectory().getPath(
File.separator + "program" + File.separator + "classes"));
File[] jarfiles = classesDir.listFiles();
for (int i = 0; i < jarfiles.length; i++)
result.addElement(jarfiles[i].getAbsolutePath());
return result;
}
}

View File

@@ -1,175 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.actions;
import java.io.File;
import java.io.IOException;
import java.beans.PropertyVetoException;
import java.util.Enumeration;
import java.util.Calendar;
import org.openide.TopManager;
import org.openide.NotifyDescriptor;
import org.openide.windows.OutputWriter;
import org.openide.windows.InputOutput;
import org.openide.ErrorManager;
import org.openide.nodes.Node;
import org.openide.filesystems.Repository;
import org.openide.filesystems.FileSystem;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.FileEvent;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
import org.openoffice.netbeans.modules.office.utils.NagDialog;
import org.openoffice.netbeans.modules.office.utils.ZipMounter;
import org.openoffice.netbeans.modules.office.utils.ManifestParser;
public class ParcelSupport implements ParcelCookie {
private FileObject fo;
private ParcelZipper zipper = ParcelZipper.getParcelZipper();
private String language = null;
public ParcelSupport(FileObject fo) {
this.fo = fo;
}
public File getFile() {
return FileUtil.toFile(fo);
}
public String getLanguage() {
if (language == null) {
try {
language = zipper.getParcelLanguage(getFile());
} catch (IOException ioe) {
return null;
}
}
return language;
}
public void mount() {
File parcel = FileUtil.toFile(fo);
if (parcel != null) {
try {
ZipMounter.getZipMounter().mountZipFile(parcel);
} catch (IOException ioe) {
ErrorManager.getDefault().notify(ioe);
} catch (PropertyVetoException pve) {
ErrorManager.getDefault().notify(pve);
}
}
}
public boolean deploy(File target) {
File source = FileUtil.toFile(fo);
if (!target.isDirectory()) {
OfficeSettings settings = OfficeSettings.getDefault();
String message = "If you already have this document open in " +
"Office, please close it before continuing. Click OK to " +
"continue deployment.";
if (settings.getWarnBeforeDocDeploy()) {
NagDialog warning = NagDialog.createConfirmationDialog(
message, "Show this message in future", true);
boolean result = warning.show();
if (!warning.getState())
settings.setWarnBeforeDocDeploy(false);
if (!result)
return false;
}
}
OutputWriter out =
getOutputWindowWriter(fo.getName() + " (deploying)");
try {
if (!zipper.isOverwriteNeeded(source, target))
if (!promptForOverwrite(source, target))
return false;
} catch (IOException ioe) {
out.println("DEPLOYMENT FAILED: reason: " +
ioe.getClass().getName() + ": " + ioe.getMessage());
return false;
}
try {
out.println("Deploying: " + fo.getName() +
"\nTo: " + target.getAbsolutePath(), null);
zipper.deployParcel(source, target);
out.println("\nDEPLOYMENT SUCCESSFUL.");
FileObject[] fileobjs = FileUtil.fromFile(target);
if (fileobjs != null) {
for (int i = 0; i < fileobjs.length; i++)
fileobjs[i].refresh(true);
}
} catch (IOException ioe) {
out.println("DEPLOYMENT FAILED: reason: " +
ioe.getClass().getName() + ": " + ioe.getMessage());
return false;
} finally {
if (out != null)
out.close();
}
return true;
}
public static OutputWriter getOutputWindowWriter(String title) {
InputOutput io = TopManager.getDefault().getIO(title, false);
io.setFocusTaken(true);
io.setOutputVisible(true);
OutputWriter out = io.getOut();
try {
out.reset();
} catch (IOException e) {
e.printStackTrace(System.err);
}
out.println(Calendar.getInstance().getTime() + ":\n");
return out;
}
private boolean promptForOverwrite(File source, File target) {
String message = source.getName() + " has already been deployed " +
"to this target. Do you wish to overwrite it?";
NotifyDescriptor d = new NotifyDescriptor.Confirmation(
message, NotifyDescriptor.OK_CANCEL_OPTION);
TopManager.getDefault().notify(d);
return (d.getValue() != NotifyDescriptor.CANCEL_OPTION);
}
}

View File

@@ -1,61 +0,0 @@
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# 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 .
#
# Filesystems API
# {0} - root path
# x-no-translate
LAB_invalid_file_system=invalid OpenOffice.org document {0}
# {0} - root path
LAB_valid_file_system={0}
# {0} - root path
EXC_root_dir_does_not_exist=Root directory {0} does not exist.
# {0} - original name before annotation
LBL_modified_files={0} <somehow annotated>
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_locked={2} could not be locked; it did not exist or was not writable.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_create_empty_name=Cannot create a file with an empty name.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_folder_already_exists=Folder {2} already exists.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_folder_could_not_be_created=Folder {2} could not be created.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_created=File {2} could not be created.
# {0} - old file name and extension
# {1} - new file name and extension
# {2} - display name of filesystem
# {3} - full path to old file
# {4} - full path to new file
EXC_file_could_not_be_renamed=File {3} could not be renamed to {4}.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_deleted=File {2} could not be deleted.
PROP_readOnly=Read Only
HINT_readOnly=Whether this filesystem should be writable, or read-only.
PROP_document=OpenOffice.org Document
HINT_document=OpenOffice.org Document (mount point) of this filesystem.

View File

@@ -1,110 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.filesystem;
import java.awt.Image;
import java.io.File;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.filesystems.FileSystem;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
/**
* Description of the OpenOffice.org Document filesystem.
*/
public class OpenOfficeDocFileSystemBeanInfo
extends SimpleBeanInfo {
private static String ICONLOCATION =
"org/openoffice/netbeans/modules/office/resources";
private static String COLORICON16NAME =
ICONLOCATION + File.separator + "OpenOfficeDocFileSystemIcon.png";
private static String COLORICON32NAME =
ICONLOCATION + File.separator + "OpenOfficeDocFileSystemIcon32.png";
/**
* Retrieves an additional bean information.
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
return new BeanInfo[] {
Introspector.getBeanInfo(FileSystem.class)
};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
/*
// If you have a visual dialog to customize configuration of the
// filesystem:
public BeanDescriptor getBeanDescriptor()
{
return new BeanDescriptor(OpenOfficeDocFileSystem.class,
OpenOfficeDocFileSystemCustomizer.class);
}
*/
/**
* Retrieves bean property descriptors.
*/
public PropertyDescriptor[] getPropertyDescriptors() {
try {
// Included only to make it a writable property (it is read-only
// in FileSystem):
PropertyDescriptor readOnly = new PropertyDescriptor(
"readOnly", OpenOfficeDocFileSystem.class);
readOnly.setDisplayName(NbBundle.getMessage(
OpenOfficeDocFileSystemBeanInfo.class, "PROP_readOnly"));
readOnly.setShortDescription(NbBundle.getMessage(
OpenOfficeDocFileSystemBeanInfo.class, "HINT_readOnly"));
// This could be whatever properties you use to configure the
// filesystem:
PropertyDescriptor document = new PropertyDescriptor(
"Document", OpenOfficeDocFileSystem.class);
document.setDisplayName(NbBundle.getMessage(
OpenOfficeDocFileSystemBeanInfo.class, "PROP_document"));
document.setShortDescription(NbBundle.getMessage(
OpenOfficeDocFileSystemBeanInfo.class, "HINT_document"));
// Request to the property editor that it be permitted only to
// choose directories:
document.setValue("directories", Boolean.FALSE); // NOI18N
document.setValue("files", Boolean.TRUE); // NOI18N
return new PropertyDescriptor[] {readOnly, document};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
/**
* Retrieves an icon by the icon type.
*/
public Image getIcon(int type) {
if ((type == BeanInfo.ICON_COLOR_16x16) ||
(type == BeanInfo.ICON_MONO_16x16)) {
return Utilities.loadImage(COLORICON16NAME);
} else {
return Utilities.loadImage(COLORICON32NAME);
}
}
}

View File

@@ -1,30 +0,0 @@
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# 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 .
#
# Datasystems API
#PROP_myProp=<name of my property>
#HINT_myProp=<description of my property>
#LBL_DataNode_exec_sheet=Execution
#HINT_DataNode_exec_sheet=Properties pertaining to compiling, running, and debugging.
# x-no-translate
LBL_loaderName=<display name of the data loader>
# Datasystems API
#PROP_myProp=<name of my property>
#HINT_myProp=<description of my property>
#LBL_DataNode_exec_sheet=Execution
#HINT_DataNode_exec_sheet=Properties pertaining to compiling, running, and debugging.
LBL_loaderName=<display name of the data loader>

View File

@@ -1,99 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.IOException;
import java.io.File;
import org.openide.actions.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openoffice.netbeans.modules.office.actions.MountDocumentAction;
/** Recognizes single files in the Repository as being of a certain type.
*/
public class OfficeDocumentDataLoader extends UniFileLoader {
public OfficeDocumentDataLoader() {
this("org.openoffice.netbeans.modules.office.loader.OfficeDocumentDataObject");
}
// Can be useful for subclasses:
protected OfficeDocumentDataLoader(String recognizedObjectClass) {
super(recognizedObjectClass);
}
protected String defaultDisplayName() {
return "Office Document";
}
protected void initialize() {
super.initialize();
ExtensionList extensions = new ExtensionList();
extensions.addExtension("sxw");
extensions.addExtension("sxc");
extensions.addExtension("sxd");
extensions.addExtension("sxi");
setExtensions(extensions);
}
protected FileObject findPrimaryFile(FileObject fo) {
ExtensionList extensions = getExtensions();
if (!extensions.isRegistered(fo))
return null;
File document = FileUtil.toFile(fo);
JarFileSystem jarFs = new JarFileSystem();
try {
jarFs.setJarFile(document);
} catch (IOException e) {
return null;
} catch (Exception e) {
return null;
}
return fo;
}
protected SystemAction[] defaultActions() {
return new SystemAction[] {
SystemAction.get(OpenAction.class),
null,
SystemAction.get(CutAction.class),
SystemAction.get(CopyAction.class),
SystemAction.get(PasteAction.class),
null,
SystemAction.get(DeleteAction.class),
SystemAction.get(RenameAction.class),
null,
SystemAction.get(PropertiesAction.class),
};
}
protected MultiDataObject createMultiObject(FileObject primaryFile) throws
DataObjectExistsException, IOException {
return new OfficeDocumentDataObject(primaryFile, this);
}
}

View File

@@ -1,63 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.Image;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
public class OfficeDocumentDataLoaderBeanInfo extends SimpleBeanInfo {
// If you have additional properties:
/*
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor myProp = new PropertyDescriptor("myProp", OfficeDocumentDataLoader.class);
myProp.setDisplayName(NbBundle.getMessage(OfficeDocumentDataLoaderBeanInfo.class, "PROP_myProp"));
myProp.setShortDescription(NbBundle.getMessage(OfficeDocumentDataLoaderBeanInfo.class, "HINT_myProp"));
return new PropertyDescriptor[] {myProp};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
// I.e. MultiFileLoader.class or UniFileLoader.class.
return new BeanInfo[] {Introspector.getBeanInfo(OfficeDocumentDataLoader.class.getSuperclass())};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/resources/OfficeIcon.gif");
} else {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/resources/OfficeIcon32.gif");
}
}
}

View File

@@ -1,113 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.datatransfer.Transferable;
import java.util.List;
import java.io.*;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.util.NbBundle;
import org.openide.filesystems.*;
import org.openoffice.netbeans.modules.office.actions.OfficeDocumentCookie;
import org.openoffice.netbeans.modules.office.nodes.OfficeDocumentChildren;
/** A node to represent this object.
*/
public class OfficeDocumentDataNode extends DataNode {
public OfficeDocumentDataNode(OfficeDocumentDataObject obj) {
this(obj, new OfficeDocumentChildren((OfficeDocumentCookie)
obj.getCookie(OfficeDocumentCookie.class)));
}
public OfficeDocumentDataNode(OfficeDocumentDataObject obj, Children ch) {
super(obj, ch);
setIconBase("/org/openoffice/netbeans/modules/office/resources/OfficeIcon");
}
protected OfficeDocumentDataObject getOfficeDocumentDataObject() {
return (OfficeDocumentDataObject)getDataObject();
}
// Allow for pasting of Script Parcels to Office Documents
protected void createPasteTypes(Transferable t, List ls) {
Node[] copies = NodeTransfer.nodes(t, NodeTransfer.COPY);
if (copies != null) {
for (int i = 0; i < copies.length; i++) {
if (copies[i] instanceof ParcelDataNode) {
File source = FileUtil.toFile(((ParcelDataNode)
copies[i]).getDataObject().getPrimaryFile());
File target = FileUtil.toFile(getDataObject().getPrimaryFile());
if (source.exists() && source.canRead() &&
target.exists() && target.canWrite()) {
ls.add(new ParcelDataNode.ParcelPasteType((ParcelDataNode)copies[i], target,
false));
}
}
}
}
Node[] moves = NodeTransfer.nodes(t, NodeTransfer.MOVE);
if (moves != null) {
for (int i = 0; i < moves.length; i++) {
if (moves[i] instanceof ParcelDataNode) {
File source = FileUtil.toFile(((ParcelDataNode)
moves[i]).getDataObject().getPrimaryFile());
File target = FileUtil.toFile(getDataObject().getPrimaryFile());
if (source.exists() && source.canRead() &&
target.exists() && target.canWrite()) {
ls.add(new ParcelDataNode.ParcelPasteType((ParcelDataNode)moves[i], target,
true));
}
}
}
}
// Also try superclass, but give it lower priority:
super.createPasteTypes(t, ls);
}
/* Example of adding Executor / Debugger / Arguments to node:
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set set = sheet.get(ExecSupport.PROP_EXECUTION);
if (set == null) {
set = new Sheet.Set();
set.setName(ExecSupport.PROP_EXECUTION);
set.setDisplayName(NbBundle.getMessage(OfficeDocumentDataNode.class, "LBL_DataNode_exec_sheet"));
set.setShortDescription(NbBundle.getMessage(OfficeDocumentDataNode.class, "HINT_DataNode_exec_sheet"));
}
((ExecSupport)getCookie(ExecSupport.class)).addProperties(set);
// Maybe:
((CompilerSupport)getCookie(CompilerSupport.class)).addProperties(set);
sheet.put(set);
return sheet;
}
*/
// Don't use getDefaultAction(); just make that first in the data loader's getActions list
}

View File

@@ -1,50 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import org.openide.actions.*;
import org.openide.cookies.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.util.HelpCtx;
import org.openoffice.netbeans.modules.office.actions.*;
public class OfficeDocumentDataObject extends MultiDataObject {
public OfficeDocumentDataObject(FileObject pf,
OfficeDocumentDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
init();
}
private void init() {
CookieSet cookies = getCookieSet();
cookies.add(new OfficeDocumentSupport(this));
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
protected Node createNodeDelegate() {
return new OfficeDocumentDataNode(this);
}
}

View File

@@ -1,129 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
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.equalsIgnoreCase("java")) {
sourceFile += ".java";
}
else if (language.equalsIgnoreCase("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();
}
}
}
}
}

View File

@@ -1,70 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import org.openide.loaders.*;
import org.openide.filesystems.FileObject;
import org.openide.actions.*;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openoffice.idesupport.zip.ParcelZipper;
public class ParcelContentsFolderDataLoader extends UniFileLoader {
public ParcelContentsFolderDataLoader() {
this("org.openide.loaders.DataFolder");
}
protected ParcelContentsFolderDataLoader(String recognizedObjectClass) {
super(recognizedObjectClass);
}
protected String defaultDisplayName() {
return "Office Script Parcel Contents";
}
protected FileObject findPrimaryFile(FileObject fo) {
if (!fo.isFolder() ||
!fo.getName().equals(ParcelZipper.CONTENTS_DIRNAME) ||
fo.getFileObject(ParcelZipper.PARCEL_DESCRIPTOR_XML) == null)
return null;
return fo;
}
protected SystemAction[] defaultActions() {
return new SystemAction[] {
SystemAction.get(PasteAction.class),
SystemAction.get(NewAction.class),
// null,
// SystemAction.get(PropertiesAction.class),
};
}
protected MultiDataObject createMultiObject(FileObject primaryFile)
throws DataObjectExistsException {
return new ParcelContentsFolder(primaryFile, this);
}
protected MultiDataObject.Entry createPrimaryEntry(MultiDataObject obj,
FileObject primaryFile) {
return new FileEntry.Folder(obj, primaryFile);
}
}

View File

@@ -1,65 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.Image;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
/** Description of {@link ParcelFolderDataLoader}.
*/
public class ParcelContentsFolderDataLoaderBeanInfo extends SimpleBeanInfo {
// If you have additional properties:
/*
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor myProp = new PropertyDescriptor("myProp", ParcelFolderDataLoader.class);
myProp.setDisplayName(NbBundle.getMessage(ParcelFolderDataLoaderBeanInfo.class, "PROP_myProp"));
myProp.setShortDescription(NbBundle.getMessage(ParcelFolderDataLoaderBeanInfo.class, "HINT_myProp"));
return new PropertyDescriptor[] {myProp};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
// I.e. MultiFileLoader.class or UniFileLoader.class.
return new BeanInfo[] {Introspector.getBeanInfo(ParcelContentsFolderDataLoader.class.getSuperclass())};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelFolderDataIcon.gif");
} else {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelFolderDataIcon32.gif");
}
}
}

View File

@@ -1,76 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.IOException;
import java.io.File;
import org.openide.actions.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openoffice.netbeans.modules.office.actions.*;
import org.openoffice.idesupport.zip.ParcelZipper;
/** Recognizes single files in the Repository as being of a certain type.
*/
public class ParcelDataLoader extends UniFileLoader {
public ParcelDataLoader() {
this("org.openoffice.netbeans.modules.office.loader.ParcelDataObject");
}
// Can be useful for subclasses:
protected ParcelDataLoader(String recognizedObjectClass) {
super(recognizedObjectClass);
}
protected String defaultDisplayName() {
return "Office Script Parcel";
}
protected void initialize() {
super.initialize();
ExtensionList extensions = new ExtensionList();
extensions.addExtension(ParcelZipper.PARCEL_EXTENSION);
setExtensions(extensions);
}
protected SystemAction[] defaultActions() {
return new SystemAction[] {
SystemAction.get(DeployParcelAction.class),
null,
SystemAction.get(CutAction.class),
SystemAction.get(CopyAction.class),
null,
SystemAction.get(DeleteAction.class),
SystemAction.get(RenameAction.class),
null,
SystemAction.get(PropertiesAction.class),
};
}
protected MultiDataObject createMultiObject(FileObject primaryFile) throws
DataObjectExistsException, IOException {
return new ParcelDataObject(primaryFile, this);
}
}

View File

@@ -1,65 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.Image;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
/** Description of {@link ParcelDataLoader}.
*/
public class ParcelDataLoaderBeanInfo extends SimpleBeanInfo {
// If you have additional properties:
/*
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor myProp = new PropertyDescriptor("myProp", ParcelDataLoader.class);
myProp.setDisplayName(NbBundle.getMessage(ParcelDataLoaderBeanInfo.class, "PROP_myProp"));
myProp.setShortDescription(NbBundle.getMessage(ParcelDataLoaderBeanInfo.class, "HINT_myProp"));
return new PropertyDescriptor[] {myProp};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
// I.e. MultiFileLoader.class or UniFileLoader.class.
return new BeanInfo[] {Introspector.getBeanInfo(ParcelDataLoader.class.getSuperclass())};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelDataIcon.gif");
} else {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelDataIcon32.gif");
}
}
}

View File

@@ -1,103 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.*;
import java.awt.datatransfer.Transferable;
import java.util.zip.*;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.filesystems.FileObject;
import org.openide.util.NbBundle;
import org.openide.util.datatransfer.*;
import org.openide.ErrorManager;
import org.openide.windows.OutputWriter;
import org.openoffice.netbeans.modules.office.actions.ParcelCookie;
/** A node to represent this object.
*/
public class ParcelDataNode extends DataNode {
public ParcelDataNode(ParcelDataObject obj) {
this(obj, Children.LEAF);
}
public ParcelDataNode(ParcelDataObject obj, Children ch) {
super(obj, ch);
setIconBase("/org/openoffice/netbeans/modules/office/resources/ParcelIcon");
}
protected ParcelDataObject getParcelDataObject() {
return (ParcelDataObject)getDataObject();
}
public static class ParcelPasteType extends PasteType {
ParcelDataNode sourceParcel = null;
File targetDocument = null;
boolean isCut = false;
public ParcelPasteType(ParcelDataNode sourceParcel,
File targetDocument, boolean isCut) {
this.sourceParcel = sourceParcel;
this.targetDocument = targetDocument;
this.isCut = isCut;
}
public Transferable paste() {
ParcelCookie parcelCookie =
(ParcelCookie)sourceParcel.getCookie(ParcelCookie.class);
parcelCookie.deploy(targetDocument);
if (isCut) {
FileObject fo = sourceParcel.getDataObject().getPrimaryFile();
try {
fo.delete();
} catch (IOException ioe) {}
return ExTransferable.EMPTY;
} else {
return null;
}
}
}
/* Example of adding Executor / Debugger / Arguments to node:
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set set = sheet.get(ExecSupport.PROP_EXECUTION);
if (set == null) {
set = new Sheet.Set();
set.setName(ExecSupport.PROP_EXECUTION);
set.setDisplayName(NbBundle.getMessage(ParcelDataNode.class, "LBL_DataNode_exec_sheet"));
set.setShortDescription(NbBundle.getMessage(ParcelDataNode.class, "HINT_DataNode_exec_sheet"));
}
((ExecSupport)getCookie(ExecSupport.class)).addProperties(set);
// Maybe:
((CompilerSupport)getCookie(CompilerSupport.class)).addProperties(set);
sheet.put(set);
return sheet;
}
*/
// Don't use getDefaultAction(); just make that first in the data loader's getActions list
}

View File

@@ -1,67 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import org.openide.actions.*;
import org.openide.cookies.*;
import org.openide.filesystems.FileObject;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.util.HelpCtx;
import org.openoffice.netbeans.modules.office.actions.*;
/** Represents a Parcel object in the Repository.
*/
public class ParcelDataObject extends MultiDataObject {
public ParcelDataObject(FileObject pf,
ParcelDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
init();
}
private void init() {
CookieSet cookies = getCookieSet();
cookies.add(new ParcelSupport(getPrimaryFile()));
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
// If you add context help, change to:
// return new HelpCtx(ParcelDataObject.class);
}
protected Node createNodeDelegate() {
return new ParcelDataNode(this);
}
/* If you made an Editor Support you will want to add these methods:
final void addSaveCookie(SaveCookie save) {
getCookieSet().add(save);
}
final void removeSaveCookie(SaveCookie save) {
getCookieSet().remove(save);
}
*/
}

View File

@@ -1,73 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.IOException;
import org.openide.actions.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openoffice.idesupport.OfficeDocument;
/** Recognizes single files in the Repository as being of a certain type.
*/
public class ParcelDescriptorDataLoader extends UniFileLoader {
public ParcelDescriptorDataLoader() {
this("org.openoffice.netbeans.modules.office.loader.ParcelDescriptorDataObject");
}
// Can be useful for subclasses:
protected ParcelDescriptorDataLoader(String recognizedObjectClass) {
super(recognizedObjectClass);
}
protected String defaultDisplayName() {
return OfficeDocument.OFFICE_PRODUCT_NAME + " Script Parcel Descriptor";
}
protected void initialize() {
super.initialize();
getExtensions().addMimeType("text/x-parcel+xml");
}
protected SystemAction[] defaultActions() {
return new SystemAction[] {
SystemAction.get(OpenAction.class),
null,
SystemAction.get(CutAction.class),
SystemAction.get(CopyAction.class),
SystemAction.get(PasteAction.class),
null,
SystemAction.get(DeleteAction.class),
SystemAction.get(RenameAction.class),
null,
SystemAction.get(PropertiesAction.class),
};
}
protected MultiDataObject createMultiObject(FileObject primaryFile) throws
DataObjectExistsException, IOException {
return new ParcelDescriptorDataObject(primaryFile, this);
}
}

View File

@@ -1,65 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.Image;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
/** Description of {@link ParcelDescriptorDataLoader}.
*/
public class ParcelDescriptorDataLoaderBeanInfo extends SimpleBeanInfo {
// If you have additional properties:
/*
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor myProp = new PropertyDescriptor("myProp", ParcelDescriptorDataLoader.class);
myProp.setDisplayName(NbBundle.getMessage(ParcelDescriptorDataLoaderBeanInfo.class, "PROP_myProp"));
myProp.setShortDescription(NbBundle.getMessage(ParcelDescriptorDataLoaderBeanInfo.class, "HINT_myProp"));
return new PropertyDescriptor[] {myProp};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
// I.e. MultiFileLoader.class or UniFileLoader.class.
return new BeanInfo[] {Introspector.getBeanInfo(ParcelDescriptorDataLoader.class.getSuperclass())};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelDescriptorDataIcon.gif");
} else {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelDescriptorDataIcon32.gif");
}
}
}

View File

@@ -1,70 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.util.NbBundle;
import org.openoffice.netbeans.modules.office.nodes.*;
import org.openoffice.netbeans.modules.office.actions.*;
/** A node to represent this object.
*/
public class ParcelDescriptorDataNode extends DataNode {
public ParcelDescriptorDataNode(ParcelDescriptorDataObject obj) {
this(obj, Children.LEAF);
}
public ParcelDescriptorDataNode(ParcelDescriptorDataObject obj, Children ch) {
super(obj, ch);
setHidden(true);
setIconBase("/org/openoffice/netbeans/modules/office/resources/OfficeIcon");
}
protected ParcelDescriptorDataObject getParcelDescriptorDataObject() {
return (ParcelDescriptorDataObject)getDataObject();
}
public boolean canRename() {
return false;
}
/* Example of adding Executor / Debugger / Arguments to node:
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set set = sheet.get(ExecSupport.PROP_EXECUTION);
if (set == null) {
set = new Sheet.Set();
set.setName(ExecSupport.PROP_EXECUTION);
set.setDisplayName(NbBundle.getMessage(ParcelDescriptorDataNode.class, "LBL_DataNode_exec_sheet"));
set.setShortDescription(NbBundle.getMessage(ParcelDescriptorDataNode.class, "HINT_DataNode_exec_sheet"));
}
((ExecSupport)getCookie(ExecSupport.class)).addProperties(set);
// Maybe:
((CompilerSupport)getCookie(CompilerSupport.class)).addProperties(set);
sheet.put(set);
return sheet;
}
*/
// Don't use getDefaultAction(); just make that first in the data loader's getActions list
}

View File

@@ -1,75 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import org.openide.actions.*;
import org.openide.cookies.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.nodes.*;
import org.openide.util.HelpCtx;
import org.openoffice.netbeans.modules.office.actions.ParcelDescriptorEditorSupport;
import org.openoffice.netbeans.modules.office.actions.ParcelDescriptorParserSupport;
/** Represents a ParcelDescriptor object in the Repository.
*/
public class ParcelDescriptorDataObject extends MultiDataObject {
private boolean canParse = false;
public ParcelDescriptorDataObject(FileObject pf,
ParcelDescriptorDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
init();
}
private void init() {
FileObject fo = getPrimaryFile();
if (FileUtil.toFile(fo) != null)
canParse = true;
CookieSet cookies = getCookieSet();
cookies.add(new ParcelDescriptorEditorSupport(this));
if (canParse)
cookies.add(new ParcelDescriptorParserSupport(getPrimaryFile()));
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
protected Node createNodeDelegate() {
if (canParse)
return new ParcelDescriptorDataNode(this);
else
return new ParcelDescriptorDataNode(this, Children.LEAF);
}
// If you made an Editor Support you will want to add these methods:
public final void addSaveCookie(SaveCookie save) {
getCookieSet().add(save);
}
public final void removeSaveCookie(SaveCookie save) {
getCookieSet().remove(save);
}
}

View File

@@ -1,290 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.File;
import java.io.IOException;
import java.beans.PropertyEditor;
import java.beans.PropertyEditorSupport;
import org.openide.loaders.DataFolder;
import org.openide.loaders.DataObject;
import org.openide.loaders.DataFilter;
import org.openide.loaders.DataObjectExistsException;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.nodes.CookieSet;
import org.openide.nodes.Node;
import org.openide.nodes.PropertySupport;
import org.openide.nodes.Sheet;
import org.openide.util.HelpCtx;
import org.openoffice.idesupport.filter.*;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.netbeans.modules.office.actions.ParcelFolderCookie;
import org.openoffice.netbeans.modules.office.actions.ParcelFolderSupport;
public class ParcelFolder extends DataFolder {
public static final String LANGUAGE_ATTRIBUTE = "language";
public ParcelFolder(FileObject pf, ParcelFolderDataLoader loader)
throws DataObjectExistsException {
super(pf, loader);
CookieSet cookies = getCookieSet();
cookies.add(new ParcelFolderSupport(this));
}
public Node createNodeDelegate() {
return new ParcelFolderNode(this, new ParcelFolderFilter());
}
public class ParcelFolderNode extends DataFolder.FolderNode {
private static final String LOCATION = "location";
private static final String FILTER = "filter";
private static final String LANGUAGE = LANGUAGE_ATTRIBUTE;
private static final String CLASSPATH = "classpath";
private File location;
private FileFilter filter;
private String language;
private String classpath;
private final FileFilter DEFAULT_FILTER = BinaryOnlyFilter.getInstance();
public ParcelFolderNode(ParcelFolder pf, DataFilter dataFilter) {
super(pf.createNodeChildren(dataFilter));
location = (File)pf.getPrimaryFile().getAttribute(LOCATION);
if (location == null)
location = FileUtil.toFile(pf.getPrimaryFile());
String name = (String)pf.getPrimaryFile().getAttribute(FILTER);
if (name == null)
filter = DEFAULT_FILTER;
else {
for (int i = 0; i < availableFilters.length; i++)
if (name.equals(availableFilters[i].toString()))
filter = availableFilters[i];
}
language = (String)pf.getPrimaryFile().getAttribute(LANGUAGE);
ParcelFolderCookie cookie =
(ParcelFolderCookie)pf.getCookie(ParcelFolderCookie.class);
String s = cookie.getClasspath();
if (s != null) {
classpath = s;
} else {
classpath = ".";
cookie.setClasspath(classpath);
}
}
public File getTargetDir() {
return location;
}
public FileFilter getFileFilter() {
return filter;
}
public String getLanguage() {
if (language == null)
language = (String)getPrimaryFile().getAttribute(LANGUAGE);
return language;
}
public Sheet createSheet() {
Sheet sheet;
Sheet.Set props;
Node.Property prop;
sheet = super.createSheet();
props = sheet.get(Sheet.PROPERTIES);
if (props == null) {
props = Sheet.createPropertiesSet();
sheet.put(props);
}
prop = createFilterProperty();
props.put(prop);
prop = createFilterProperty();
props.put(prop);
prop = createClasspathProperty();
props.put(prop);
return sheet;
}
private Node.Property createLocationProperty() {
Node.Property prop =
new PropertySupport.ReadWrite(LOCATION, File.class,
"Location", "Output location of Parcel Zip File") {
public void setValue(Object obj) {
if (obj instanceof File) {
location = (File)obj;
try {
getPrimaryFile().setAttribute(LOCATION, location);
} catch (IOException ioe) {
}
}
}
public Object getValue() {
return location;
}
};
prop.setValue("files", Boolean.FALSE);
return prop;
}
private String[] languages = {"Java", "BeanShell"};
private Node.Property createLanguageProperty() {
Node.Property prop =
new PropertySupport.ReadWrite(LANGUAGE, String.class,
"Parcel Language", "Language of scripts in this Parcel") {
public void setValue(Object obj) {
if (obj instanceof String) {
language = (String)obj;
try {
getPrimaryFile().setAttribute(LANGUAGE, language);
} catch (IOException ioe) {
}
}
}
public Object getValue() {
if (language == null)
language = (String)getPrimaryFile().getAttribute(LANGUAGE);
return language;
}
public PropertyEditor getPropertyEditor() {
return new PropertyEditorSupport() {
public String[] getTags() {
return languages;
}
public void setAsText(String text) {
for (int i = 0; i < languages.length; i++)
if (text.equals(languages[i]))
this.setValue(languages[i]);
}
public String getAsText() {
return (String)this.getValue();
}
};
}
};
return prop;
}
private FileFilter[] availableFilters = new FileFilter[] {
BinaryOnlyFilter.getInstance(), AllFilesFilter.getInstance()
};
private Node.Property createFilterProperty() {
Node.Property prop =
new PropertySupport.ReadWrite(FILTER, String.class,
"File Filter", "Files to be included in Parcel") {
public void setValue(Object obj) {
if (obj instanceof FileFilter) {
filter = (FileFilter)obj;
try {
getPrimaryFile().setAttribute(FILTER, filter.toString());
} catch (IOException ioe) {
}
}
}
public Object getValue() {
return filter;
}
public PropertyEditor getPropertyEditor() {
return new PropertyEditorSupport() {
public String[] getTags() {
String[] tags = new String[availableFilters.length];
for (int i = 0; i < availableFilters.length; i++)
tags[i] = availableFilters[i].toString();
return tags;
}
public void setAsText(String text) {
for (int i = 0; i < availableFilters.length; i++)
if (text.equals(availableFilters[i].toString()))
this.setValue(availableFilters[i]);
}
public String getAsText() {
return this.getValue().toString();
}
};
}
};
return prop;
}
private Node.Property createClasspathProperty() {
Node.Property prop =
new PropertySupport.ReadWrite(CLASSPATH, String.class,
"Classpath", "Classpath property for scripts in this parcel") {
public void setValue(Object obj) {
if (obj instanceof String) {
classpath = (String)obj;
ParcelFolderCookie cookie = (ParcelFolderCookie)
getDataObject().getCookie(ParcelFolderCookie.class);
cookie.setClasspath(classpath);
}
}
public Object getValue() {
return classpath;
}
};
return prop;
}
}
private class ParcelFolderFilter implements DataFilter {
public boolean acceptDataObject(DataObject dobj) {
String name = dobj.getPrimaryFile().getNameExt();
return !name.equals(ParcelZipper.PARCEL_DESCRIPTOR_XML);
}
}
}

View File

@@ -1,93 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.io.IOException;
import java.io.File;
import org.openide.actions.*;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.netbeans.modules.office.actions.*;
/** Recognizes single files in the Repository as being of a certain type.
*/
public class ParcelFolderDataLoader extends UniFileLoader {
public ParcelFolderDataLoader() {
this("org.openoffice.netbeans.modules.office.loader.ParcelFolder");
}
protected ParcelFolderDataLoader(String recognizedObjectClass) {
super(recognizedObjectClass);
}
protected String defaultDisplayName() {
return "Office Script Parcel Folder";
}
protected FileObject findPrimaryFile(FileObject fo) {
if (!fo.isFolder())
return null;
FileObject contents = fo.getFileObject(ParcelZipper.CONTENTS_DIRNAME);
if (contents == null)
return null;
FileObject descriptor = contents.getFileObject(
ParcelZipper.PARCEL_DESCRIPTOR_XML);
if (descriptor == null)
return null;
return fo;
}
protected SystemAction[] defaultActions() {
return new SystemAction[] {
SystemAction.get(CompileParcelAction.class),
SystemAction.get(BuildParcelAction.class),
SystemAction.get(ConfigureParcelAction.class),
null,
SystemAction.get(CutAction.class),
SystemAction.get(CopyAction.class),
null,
SystemAction.get(DeleteAction.class),
SystemAction.get(RenameAction.class),
null,
SystemAction.get(PropertiesAction.class),
};
}
protected MultiDataObject createMultiObject(FileObject primaryFile) throws
DataObjectExistsException, IOException {
return new ParcelFolder(primaryFile, this);
}
protected MultiDataObject.Entry createPrimaryEntry(MultiDataObject obj,
FileObject primaryFile) {
return new FileEntry.Folder(obj, primaryFile);
}
}

View File

@@ -1,65 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.loader;
import java.awt.Image;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
/** Description of {@link ParcelFolderDataLoader}.
*/
public class ParcelFolderDataLoaderBeanInfo extends SimpleBeanInfo {
// If you have additional properties:
/*
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor myProp = new PropertyDescriptor("myProp", ParcelFolderDataLoader.class);
myProp.setDisplayName(NbBundle.getMessage(ParcelFolderDataLoaderBeanInfo.class, "PROP_myProp"));
myProp.setShortDescription(NbBundle.getMessage(ParcelFolderDataLoaderBeanInfo.class, "HINT_myProp"));
return new PropertyDescriptor[] {myProp};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
*/
public BeanInfo[] getAdditionalBeanInfo() {
try {
// I.e. MultiFileLoader.class or UniFileLoader.class.
return new BeanInfo[] {Introspector.getBeanInfo(ParcelFolderDataLoader.class.getSuperclass())};
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelFolderDataIcon.gif");
} else {
return Utilities.loadImage("org/openoffice/netbeans/modules/office/loaders/ParcelFolderDataIcon32.gif");
}
}
}

View File

@@ -1,142 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.nodes;
import java.io.IOException;
import java.util.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.openide.nodes.*;
import org.openide.actions.*;
import org.openide.util.actions.SystemAction;
import org.openide.util.HelpCtx;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
import org.openoffice.netbeans.modules.office.utils.NagDialog;
import org.openoffice.netbeans.modules.office.actions.OfficeDocumentCookie;
public class OfficeDocumentChildren extends Children.Keys
implements ChangeListener {
private OfficeDocumentCookie document = null;
public OfficeDocumentChildren(OfficeDocumentCookie cookie) {
document = cookie;
}
private void refreshKeys() {
if (document == null) {
setKeys(Collections.EMPTY_SET);
return;
}
Enumeration parcels = document.getParcels();
if (!parcels.hasMoreElements()) {
setKeys(Collections.EMPTY_SET);
return;
}
ArrayList keys = new ArrayList();
while (parcels.hasMoreElements()) {
String parcel = (String)parcels.nextElement();
keys.add(parcel);
}
setKeys(keys);
}
protected void addNotify() {
super.addNotify();
document.addChangeListener(this);
refreshKeys();
}
protected void removeNotify() {
super.removeNotify();
document.removeChangeListener(this);
setKeys(Collections.EMPTY_SET);
}
protected Node[] createNodes(Object key) {
String name = (String)key;
return new Node[] {new ParcelNode(name)};
}
public void stateChanged(ChangeEvent e) {
refreshKeys();
}
private class ParcelNode extends AbstractNode {
private String name;
public ParcelNode(String name) {
super(Children.LEAF);
this.name = name;
init();
}
private void init() {
setIconBase("/org/openoffice/netbeans/modules/office/resources/ParcelIcon");
setName(name);
setDisplayName(name.substring(name.lastIndexOf('/') + 1));
setShortDescription(name);
}
protected SystemAction[] createActions() {
return new SystemAction[] {
SystemAction.get(DeleteAction.class),
};
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
public boolean canDestroy() {
return true;
}
public void destroy() throws IOException {
OfficeSettings settings = OfficeSettings.getDefault();
String message = "If you already have this document open in " +
"Office, please close it before continuing. Click OK to " +
"delete this parcel.";
if (settings.getWarnBeforeParcelDelete()) {
NagDialog warning = NagDialog.createConfirmationDialog(
message, "Show this message in future", true);
boolean result = warning.show();
if (!warning.getState())
settings.setWarnBeforeParcelDelete(false);
if (!result)
return;
}
super.destroy();
document.removeParcel(name);
}
}
}

View File

@@ -1,83 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.nodes;
import java.util.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import org.openide.nodes.*;
import org.openoffice.netbeans.modules.office.actions.ParcelDescriptorParserCookie;
/** List of children of a containing node.
* Remember to document what your permitted keys are!
*/
public class ParcelDescriptorChildren extends Children.Keys implements
ChangeListener {
private ParcelDescriptorParserCookie parserCookie = null;
public ParcelDescriptorChildren(ParcelDescriptorParserCookie cookie) {
parserCookie = cookie;
}
private void refreshKeys() {
NodeList nl;
int len;
if (parserCookie == null ||
(nl = parserCookie.getScriptElements()) == null ||
(len = nl.getLength()) == 0) {
setKeys(Collections.EMPTY_SET);
return;
}
ArrayList keys = new ArrayList(len);
for (int i = 0; i < len; i++)
keys.add(nl.item(i));
setKeys(keys);
}
protected void addNotify() {
super.addNotify();
parserCookie.addChangeListener(this);
refreshKeys();
}
protected void removeNotify() {
super.removeNotify();
parserCookie.removeChangeListener(this);
setKeys(Collections.EMPTY_SET);
}
protected Node[] createNodes(Object key) {
Element el = (Element)key;
System.out.println("element is: " + el);
return new Node[] {new ScriptNode(el)};
}
public void stateChanged(ChangeEvent e) {
refreshKeys();
}
}

View File

@@ -1,126 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.nodes;
import org.w3c.dom.*;
import org.openide.actions.*;
import org.openide.nodes.*;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
/** A simple node with no children.
*/
public class ScriptNode extends AbstractNode {
private Element element;
private static final String LOGICAL_NAME = "logicalname";
private static final String LANGUAGE_NAME = "languagename";
public ScriptNode(Element element) {
super(Children.LEAF);
this.element = element;
init();
}
private void init() {
setIconBase("/org/openoffice/netbeans/modules/office/resources/OfficeIcon");
setDefaultAction(SystemAction.get(PropertiesAction.class));
NodeList nl = element.getElementsByTagName(LOGICAL_NAME);
Element nameElement = (Element)nl.item(0);
String name = nameElement.getAttribute("value");
setName(name);
setDisplayName(name.substring(name.lastIndexOf('.') + 1));
setShortDescription(name);
}
protected SystemAction[] createActions() {
return new SystemAction[] {
SystemAction.get(ToolsAction.class),
null,
SystemAction.get(PropertiesAction.class),
};
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
// RECOMMENDED - handle cloning specially (so as not to invoke the overhead of FilterNode):
/*
public Node cloneNode() {
// Try to pass in similar constructor params to what you originally got:
return new ScriptNode();
}
*/
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set props = sheet.get(Sheet.PROPERTIES);
if (props == null) {
props = Sheet.createPropertiesSet();
sheet.put(props);
}
org.openide.nodes.Node.Property prop = null;
if ((prop = getStringProperty(LOGICAL_NAME)) != null)
props.put(prop);
if ((prop = getStringProperty(LANGUAGE_NAME)) != null)
props.put(prop);
return sheet;
}
private org.openide.nodes.Node.Property getStringProperty(String name) {
NodeList nl = element.getElementsByTagName(name);
if (nl.getLength() != 1)
return null;
Element nameElement = (Element)nl.item(0);
String value = nameElement.getAttribute("value");
return new StringProperty(this, name, value);
}
private class StringProperty extends PropertySupport.ReadOnly {
private String name, value;
private ScriptNode sn;
public StringProperty(ScriptNode sn, String name, String value) {
super(value, String.class, name,
"The name of the java language method for this script");
this.sn = sn;
this.name = name;
this.value = value;
}
public Object getValue() {
return value;
}
}
}

View File

@@ -1,31 +0,0 @@
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# 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 .
#
# Options API
# x-no-translate
LBL_settings=Office Settings
PROP_OfficeDirectory=Path to Office installation
HINT_OfficeDirectory=Path to the Office installation
HINT_WarnBeforeDocDeploy=Pop up a dialog before deploying to a document
PROP_WarnBeforeDocDeploy=Pop up a dialog before deploying to a document
HINT_WarnAfterDirDeploy=Pop up a dialog after deploying to a directory
PROP_WarnAfterDirDeploy=Pop up a dialog after deploying to a directory
HINT_WarnBeforeMount=Warn before mounting Office Scripting Framework support jar
PROP_WarnBeforeMount=Warn before mounting Office Scripting Framework support jar

View File

@@ -1,119 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.options;
import java.util.Hashtable;
import java.util.Enumeration;
import java.io.File;
import java.io.IOException;
import org.openide.options.SystemOption;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openoffice.idesupport.SVersionRCFile;
import org.openoffice.idesupport.OfficeInstallation;
/** Options for something or other.
*/
public class OfficeSettings extends SystemOption {
public static final String OFFICE_DIRECTORY = "OfficeDirectory";
public static final String WARN_BEFORE_DOC_DEPLOY = "WarnBeforeDocDeploy";
public static final String WARN_BEFORE_PARCEL_DELETE = "WarnBeforeParcelDelete";
public static final String WARN_AFTER_DIR_DEPLOY = "WarnAfterDirDeploy";
public static final String WARN_BEFORE_MOUNT = "WarnBeforeMount";
protected void initialize() {
super.initialize();
setWarnBeforeDocDeploy(true);
setWarnBeforeParcelDelete(true);
setWarnAfterDirDeploy(true);
setWarnBeforeMount(true);
if (getOfficeDirectory() == null) {
SVersionRCFile sversion = SVersionRCFile.createInstance();
try {
Enumeration enumeration = sversion.getVersions();
OfficeInstallation oi;
while (enumeration.hasMoreElements()) {
oi = (OfficeInstallation)enumeration.nextElement();
setOfficeDirectory(oi);
return;
}
} catch (IOException ioe) {
}
}
}
public String displayName() {
return "Office Settings";
}
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
public static OfficeSettings getDefault() {
return (OfficeSettings)findObject(OfficeSettings.class, true);
}
public OfficeInstallation getOfficeDirectory() {
return (OfficeInstallation)getProperty(OFFICE_DIRECTORY);
}
public void setOfficeDirectory(OfficeInstallation oi) {
putProperty(OFFICE_DIRECTORY, oi, true);
}
public boolean getWarnBeforeDocDeploy() {
return ((Boolean)getProperty(WARN_BEFORE_DOC_DEPLOY)).booleanValue();
}
public void setWarnBeforeDocDeploy(boolean value) {
putProperty(WARN_BEFORE_DOC_DEPLOY, Boolean.valueOf(value), true);
}
public boolean getWarnBeforeParcelDelete() {
return ((Boolean)getProperty(WARN_BEFORE_PARCEL_DELETE)).booleanValue();
}
public void setWarnBeforeParcelDelete(boolean value) {
putProperty(WARN_BEFORE_PARCEL_DELETE, Boolean.valueOf(value), true);
}
public boolean getWarnAfterDirDeploy() {
return ((Boolean)getProperty(WARN_AFTER_DIR_DEPLOY)).booleanValue();
}
public void setWarnAfterDirDeploy(boolean value) {
putProperty(WARN_AFTER_DIR_DEPLOY, Boolean.valueOf(value), true);
}
public boolean getWarnBeforeMount() {
return ((Boolean)getProperty(WARN_BEFORE_MOUNT)).booleanValue();
}
public void setWarnBeforeMount(boolean value) {
putProperty(WARN_BEFORE_MOUNT, Boolean.valueOf(value), true);
}
}

View File

@@ -1,135 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.options;
import java.awt.Image;
import java.awt.Component;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.beans.*;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
import org.openoffice.idesupport.OfficeInstallation;
import org.openoffice.netbeans.modules.office.wizard.SelectPathPanel;
/** Description of {@link OfficeSettings}.
*/
public class OfficeSettingsBeanInfo extends SimpleBeanInfo {
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor[] props = new PropertyDescriptor[] {
new PropertyDescriptor(OfficeSettings.OFFICE_DIRECTORY,
OfficeSettings.class,
"get" + OfficeSettings.OFFICE_DIRECTORY,
"set" + OfficeSettings.OFFICE_DIRECTORY),
new PropertyDescriptor(OfficeSettings.WARN_BEFORE_DOC_DEPLOY,
OfficeSettings.class,
"get" + OfficeSettings.WARN_BEFORE_DOC_DEPLOY,
"set" + OfficeSettings.WARN_BEFORE_DOC_DEPLOY),
new PropertyDescriptor(OfficeSettings.WARN_BEFORE_PARCEL_DELETE,
OfficeSettings.class,
"get" + OfficeSettings.WARN_BEFORE_PARCEL_DELETE,
"set" + OfficeSettings.WARN_BEFORE_PARCEL_DELETE),
new PropertyDescriptor(OfficeSettings.WARN_AFTER_DIR_DEPLOY,
OfficeSettings.class,
"get" + OfficeSettings.WARN_AFTER_DIR_DEPLOY,
"set" + OfficeSettings.WARN_AFTER_DIR_DEPLOY),
new PropertyDescriptor(OfficeSettings.WARN_BEFORE_MOUNT,
OfficeSettings.class,
"get" + OfficeSettings.WARN_BEFORE_MOUNT,
"set" + OfficeSettings.WARN_BEFORE_MOUNT)
};
props[0].setDisplayName(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "PROP_OfficeDirectory"));
props[0].setShortDescription(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "HINT_OfficeDirectory"));
props[0].setPropertyEditorClass(OfficeDirectoryEditor.class);
props[1].setDisplayName(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "PROP_WarnBeforeDocDeploy"));
props[1].setShortDescription(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "HINT_WarnBeforeDocDeploy"));
props[1].setHidden(true);
props[2].setDisplayName(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "PROP_WarnAfterDirDeploy"));
props[2].setShortDescription(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "HINT_WarnAfterDirDeploy"));
props[2].setHidden(true);
props[3].setDisplayName(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "PROP_WarnBeforeMount"));
props[3].setShortDescription(NbBundle.getMessage(
OfficeSettingsBeanInfo.class, "HINT_WarnBeforeMount"));
props[3].setHidden(true);
return props;
} catch (IntrospectionException ie) {
ErrorManager.getDefault().notify(ie);
return null;
}
}
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16 || type == BeanInfo.ICON_MONO_16x16) {
return Utilities.loadImage("/org/openoffice/netbeans/modules/office/options/OfficeSettingsIcon.gif");
} else {
return Utilities.loadImage("/org/openoffice/netbeans/modules/office/options/OfficeSettingsIcon32.gif");
}
}
public static class OfficeDirectoryEditor extends PropertyEditorSupport
implements ChangeListener {
private SelectPathPanel panel;
public String getAsText() {
return ((OfficeInstallation)getValue()).getPath();
}
public void setAsText(String path) {
OfficeInstallation oi = new OfficeInstallation(path);
if (!oi.supportsFramework())
throw new IllegalArgumentException(path +
" is not a valid Office install");
else
setValue(oi);
}
public Component getCustomEditor() {
panel = new SelectPathPanel();
panel.addChangeListener(this);
return panel.getComponent();
}
public boolean supportsCustomEditor() {
return true;
}
public void stateChanged(ChangeEvent evt) {
setValue(panel.getSelectedPath());
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

View File

@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
This wizard will let you mount the Office Application scripts directory
</BODY>
</HTML>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd">
<settings version="1.0">
<module name="org.openoffice.netbeans.modules.office/1"/>
<instanceof class="org.openide.filesystems.FileSystem"/>
<instance class="org.netbeans.core.ExLocalFileSystem"/>
</settings>

View File

@@ -1,41 +0,0 @@
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# 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 .
#
# x-no-translate
Templates/OfficeScripting=Office Scripting
Templates/OfficeScripting/parcel.xml=Script Parcel Descriptor
Services/MIMEResolver/org-netbeans-modules-office-mime-resolver.xml=Script Parcel Descriptor File
Templates=Templates
Templates/OfficeScripting/HelloWorld=Hello World Example Script
Templates/Mount/org-openoffice-netbeans-modules-office-resources-AppStorage.settings=Office Application Scripts
Templates/Mount/org-openoffice-netbeans-modules-office-resources-OpenOfficeDocFileSystem.settings=OpenOffice.org document
UI/Services/IDEConfiguration/ServerAndExternalToolSettings/org-openoffice-netbeans-modules-office-options-OfficeSettings.instance=Office Settings
Services/org-openoffice-netbeans-modules-office-resources-OfficeSettings.settings=Office Settings
PROP_OfficeDirectory=Office Installation Directory
HINT_OfficeDirectory=Path to directory where Office is installed
Templates/OfficeScripting/Parcel=Parcel Recipe
Templates/OfficeScripting/EmptyScript=Empty Script
Templates/OfficeScripting/EmptyScript/Empty.java=Java
Templates/OfficeScripting/EmptyScript/Empty.bsh=BeanShell
Menu/Help/office-scripting.url=&Office Scripting Framework Site

View File

@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
This allows you to create an Empty Office Script.
</BODY>
</HTML>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

View File

@@ -1,9 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd">
<settings version="1.0">
<module name="org.openoffice.netbeans.modules.office"/>
<instanceof class="org.openide.util.SharedClassObject"/>
<instanceof class="org.openide.util.SystemOption"/>
<instanceof class="org.openoffice.netbeans.modules.office.options.OfficeSettings"/>
<instance class="org.openoffice.netbeans.modules.office.options.OfficeSettings"/>
</settings>

View File

@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
This allows you to mount OpenOffice.org document.
</BODY>
</HTML>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd">
<settings version="1.0">
<module name="org.openoffice.netbeans.modules.office/1"/>
<instanceof class="org.openide.filesystems.FileSystem"/>
<instance class="org.openoffice.netbeans.modules.office.filesystem.OpenOfficeDocFileSystem"/>
</settings>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

View File

@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
This allows you to create a Hello World example Office Script.
</BODY>
</HTML>

View File

@@ -1,28 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
This allows you to create a Office Script Parcel Descriptor File.
</BODY>
</HTML>

View File

@@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<filesystem>
<folder name="Templates">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<folder name="OfficeScripting">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<folder name="Parcel">
<attr boolvalue="true" name="template"/>
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/OfficeIcon.gif"/>
<attr name="templateWizardURL" urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/EmptyParcel.html"/>
<attr name="templateWizardIterator" newvalue="org.openoffice.netbeans.modules.office.wizard.ParcelContentsIterator"/>
<folder name="Contents">
<file name="parcel-descriptor.xml" url="templates/EmptyParcelDescriptor.xml_"/>
<!-- file name="Empty.java" url="templates/Empty.java_"/ -->
</folder>
</folder>
<folder name="EmptyScript">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<file name="Empty.java" url="templates/Empty.java_">
<attr name="template" boolvalue="true"/>
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="templateWizardIterator" newvalue="org.openoffice.netbeans.modules.office.wizard.JavaScriptIterator"/>
</file>
<file name="Empty.bsh" url="templates/Empty.bsh_">
<attr name="template" boolvalue="true"/>
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
</file>
</folder>
</folder>
<attr boolvalue="true" name="Ant/OfficeScripting"/>
<attr boolvalue="true" name="OfficeScripting/Other"/>
<!-- OpenOfficeDoc FileSystem BEGIN: -->
<!-- Uncomment to enable writable mounting of Office Documents
<folder name="Mount">
<attr name="org-netbeans-core-ExLocalFileSystem.settings/org-openoffice-netbeans-modules-office-resources-OpenOfficeDocFileSystem.settings"
boolvalue="true"/>
<attr name="org-openoffice-netbeans-modules-office-resources-OpenOfficeDocFileSystem.settings/VCS"
boolvalue="true"/>
<file name="org-openoffice-netbeans-modules-office-resources-OpenOfficeDocFileSystem.settings"
url="OpenOfficeDocFileSystem.settings">
<attr name="template"
boolvalue="true"/>
<attr name="SystemFileSystem.localizingBundle"
stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="SystemFileSystem.icon"
urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/OpenOfficeDocFileSystemIcon.png"/>
<attr name="templateWizardIterator"
methodvalue="org.netbeans.core.ui.MountNode.iterator"/>
<attr name="templateWizardURL"
urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/OpenOfficeDocFileSystem.html"/>
</file>
</folder>
-->
<!-- OpenOfficeDoc FileSystem END: -->
</folder>
<folder name="Services">
<folder name="MIMEResolver">
<file name="org-netbeans-modules-office-mime-resolver.xml" url="mime-resolver.xml">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/OfficeIcon.gif"/>
</file>
</folder>
<file name="org-openoffice-netbeans-modules-office-resources-OfficeSettings.settings" url="OfficeSettings.settings">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/OfficeIcon.gif"/>
</file>
</folder>
<folder name="Menu">
<folder name="Help">
<attr name="submit-feedback-link.url/office-scripting.url" boolvalue="true"/>
<file name="office-scripting.url" url="office-scripting.url">
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.openoffice.netbeans.modules.office.resources.Bundle"/>
<attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/openoffice/netbeans/modules/office/resources/webLink.gif"/>
</file>
</folder>
</folder>
<folder name="UI">
<folder name="Services">
<folder name="IDEConfiguration">
<folder name="ServerAndExternalToolSettings">
<file name="org-openoffice-netbeans-modules-office-resources-OfficeSettings.shadow">
<attr name="originalFile" stringvalue="Services/org-openoffice-netbeans-modules-office-resources-OfficeSettings.settings"/>
</file>
</folder>
</folder>
</folder>
</folder>
<attr boolvalue="true" name="Templates/Services"/>
</filesystem>

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE MIME-resolver PUBLIC "-//NetBeans//DTD MIME Resolver 1.0//EN" "http://www.netbeans.org/dtds/mime-resolver-1_0.dtd">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
-->
<MIME-resolver>
<!-- Resolve according to root element: -->
<file>
<ext name="xml"/>
<resolver mime="text/x-parcel+xml">
<xml-rule>
<element name="parcel"/>
</xml-rule>
</resolver>
</file>
</MIME-resolver>

View File

@@ -1 +0,0 @@
http://framework.openoffice.org/scripting/netbeans-devguide.html

View File

@@ -1,42 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
// If using XComponentContext need to uncomment import directive below:
// import com.sun.star.uno.XComponentContext;
// If using XDesktop need to uncomment import directive below:
// import com.sun.star.frame.XDesktop;
// If using XComponent need to uncomment import directive below:
// import com.sun.star.frame.XModel;
import drafts.com.sun.star.script.framework.runtime.XScriptContext;
/* Use the XScriptContext variable "context" to access the document for
which this script was invoked. This variable will be initialised
automatically by the Scripting Framework when the script is invoked.
Methods available are:
context.getDocument() returns XModel
context.getDesktop() returns XDesktop
context.getComponentContext() returns XComponentContext
*/
// Uncomment to get the current document model
// xmodel = context.getDocument();

View File

@@ -1,45 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
// If using XComponentContext need to uncomment import directive below:
// import com.sun.star.uno.XComponentContext;
// If using XDesktop need to uncomment import directive below:
// import com.sun.star.frame.XDesktop;
// If using XComponent need to uncomment import directive below:
// import com.sun.star.frame.XModel;
import drafts.com.sun.star.script.framework.runtime.XScriptContext;
public class Empty {
public void doMethod(XScriptContext xSc) {
/* Methods available from XScriptContext:
xSc.getDocument() returns XModel
xSc.getDesktop() returns XDesktop
xSc.getComponentContext() returns XComponentContext
*/
// Uncomment to get the current document as a component
// XComponent xcomponent = xSc.getDocument();
}
}

View File

@@ -1,3 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<parcel language="Java" xmlns:parcel="scripting.dtd">
</parcel>

View File

@@ -1,59 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
// If using XMultiServiceFactory need to uncomment import directive below:
//import com.sun.star.lang.XMultiServiceFactory;
// If using XDesktop need to uncomment import directive below:
//import com.sun.star.frame.XDesktop;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.lang.*;
import com.sun.star.text.*;
import drafts.com.sun.star.script.framework.runtime.XScriptContext;
public class HelloWorld {
public void printHello(XScriptContext xSc) {
/* Methods available from XScriptContext:
xSc.getDocument() returns XModel
xSc.getDesktop() returns XDesktop
xSc.getMultiComponentFactory() returns XMultiComponentFactory
*/
// Getting the current document as a component
XComponent xcomponent = xSc.getDocument();
// Getting the text document object
XTextDocument xtextdocument = (XTextDocument) UnoRuntime.queryInterface(
XTextDocument.class, xcomponent);
//Getting the text object
XText oText = xtextdocument.getText();
//Create a cursor object
XTextCursor oCursor = oText.createTextCursor();
// Print out Hello World
oText.insertString( oCursor, "**** HELLO ****", false );
}
}

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<parcel>
<script language="Java" deploymentdir="java/HelloWorld">
<logicalname value="HelloWorld.printHello"/>
<languagename value="HelloWorld.printHello" location="HelloWorld.class"/>
</script>
</parcel>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 969 B

View File

@@ -1,128 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.utils;
import java.io.File;
import java.io.IOException;
import java.beans.PropertyVetoException;
import org.openide.filesystems.Repository;
import org.openide.filesystems.FileSystem;
import org.openide.filesystems.JarFileSystem;
import org.openoffice.idesupport.SVersionRCFile;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
public class FrameworkJarChecker {
public static void mountDependencies() {
String unoilPath = SVersionRCFile.getPathForUnoil(
OfficeSettings.getDefault().getOfficeDirectory().getPath());
if (unoilPath == null)
return;
File unoilFile = new File(unoilPath + File.separator + "unoil.jar");
JarFileSystem jfs = new JarFileSystem();
try {
jfs.setJarFile(unoilFile);
} catch (IOException ioe) {
return;
} catch (PropertyVetoException pve) {
return;
}
FileSystem result;
try {
result =
Repository.getDefault().findFileSystem(jfs.getSystemName());
} catch (Exception exp) {
result = null;
} finally {
jfs.removeNotify();
}
if (result == null) {
JarFileSystem newjfs = new JarFileSystem();
try {
newjfs.setJarFile(unoilFile);
} catch (IOException ioe) {
return;
} catch (PropertyVetoException pve) {
return;
}
Repository.getDefault().addFileSystem(newjfs);
newjfs.setHidden(true);
}
}
public static void unmountDependencies() {
String unoilPath = SVersionRCFile.getPathForUnoil(
OfficeSettings.getDefault().getOfficeDirectory().getPath());
if (unoilPath == null)
return;
File unoilFile = new File(unoilPath + File.separator + "unoil.jar");
JarFileSystem jfs = new JarFileSystem();
try {
jfs.setJarFile(unoilFile);
} catch (IOException ioe) {
return;
} catch (PropertyVetoException pve) {
return;
}
FileSystem result;
try {
result =
Repository.getDefault().findFileSystem(jfs.getSystemName());
if (result != null)
Repository.getDefault().removeFileSystem(result);
} catch (Exception exp) {
}
}
private static void warnBeforeMount() {
OfficeSettings settings = OfficeSettings.getDefault();
if (!settings.getWarnBeforeMount())
return;
String message = "The Office Scripting Framework support jar file " +
"is not mounted, so Office scripts will not compile. NetBeans " +
"is going to mount this jar file automatically.";
String prompt = "Show this message in future.";
NagDialog warning = NagDialog.createInformationDialog(
message, prompt, true);
if (!warning.getState()) {
settings.setWarnBeforeMount(false);
}
}
}

View File

@@ -1,83 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.utils;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.io.File;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.openide.xml.XMLUtil;
import com.sun.star.script.framework.container.XMLParser;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
import org.openoffice.idesupport.OfficeInstallation;
public class ManifestParser implements XMLParser {
private static ManifestParser parser = null;
private ManifestParser() {
}
public static synchronized ManifestParser getManifestParser() {
if (parser == null) {
parser = new ManifestParser();
}
return parser;
}
public Document parse(InputStream inputStream) {
InputSource is;
Document result = null;
try {
OfficeInstallation oi = OfficeSettings.getDefault().getOfficeDirectory();
String id = oi.getURL("share/dtd/officedocument/1_0/");
is = new InputSource(inputStream);
is.setSystemId(id);
result = XMLUtil.parse(is, false, false, null, null);
} catch (IOException ioe) {
System.out.println("IO Error parsing stream.");
return null;
} catch (SAXParseException spe) {
System.out.println("Sax Error parsing stream: " + spe.getMessage());
System.out.println("\tPublicId: " + spe.getPublicId());
System.out.println("\tSystemId: " + spe.getSystemId());
return null;
} catch (SAXException se) {
System.out.println("Sax Error parsing stream: " + se.getMessage());
return null;
}
return result;
}
public void write(Document doc, OutputStream out) throws IOException {
XMLUtil.write(doc, out, "");
}
}

View File

@@ -1,115 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.utils;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import javax.swing.JCheckBox;
import javax.swing.border.EmptyBorder;
import org.openide.TopManager;
import org.openide.NotifyDescriptor;
public class NagDialog {
private NotifyDescriptor descriptor;
private JPanel panel;
private JCheckBox checkbox;
private NagDialog(String message, String prompt, boolean initialState,
int type) {
initUI(message, prompt, initialState, type);
}
public static NagDialog createInformationDialog(
String message, String prompt, boolean initialState) {
NagDialog result = new NagDialog(
message, prompt, initialState, JOptionPane.INFORMATION_MESSAGE);
result.setDescriptor(new NotifyDescriptor.Message(result.getPanel(),
NotifyDescriptor.PLAIN_MESSAGE));
return result;
}
public static NagDialog createConfirmationDialog(
String message, String prompt, boolean initialState) {
NagDialog result = new NagDialog(
message, prompt, initialState, JOptionPane.QUESTION_MESSAGE);
result.setDescriptor(new NotifyDescriptor.Confirmation(
result.getPanel(), NotifyDescriptor.OK_CANCEL_OPTION,
NotifyDescriptor.PLAIN_MESSAGE));
return result;
}
public boolean show() {
TopManager.getDefault().notify(descriptor);
return (descriptor.getValue() == NotifyDescriptor.OK_OPTION);
}
public boolean getState() {
return checkbox.isSelected();
}
private JPanel getPanel() {
return this.panel;
}
private void setDescriptor(NotifyDescriptor descriptor) {
this.descriptor = descriptor;
}
private void initUI(String message, String prompt, boolean initialState,
int type) {
this.panel = new JPanel();
JOptionPane optionPane = new JOptionPane(message, type, 0, null,
new Object[0], null) {
public int getMaxCharactersPerLineCount() {
return 100;
}
};
optionPane.setUI(new javax.swing.plaf.basic.BasicOptionPaneUI() {
public Dimension getMinimumOptionPaneSize() {
if (minimumSize == null) {
return new Dimension(MinimumWidth, 50);
}
return new Dimension(minimumSize.width, 50);
}
});
optionPane.setWantsInput(false);
JPanel checkPanel = new JPanel();
checkbox = new JCheckBox(prompt, initialState);
checkPanel.setLayout(new BorderLayout());
checkPanel.setBorder(new EmptyBorder(0, 20, 0, 0));
checkPanel.add(checkbox, BorderLayout.WEST);
this.panel.setLayout(new BorderLayout());
this.panel.add(optionPane, BorderLayout.CENTER);
this.panel.add(checkPanel, BorderLayout.SOUTH);
}
}

View File

@@ -1,60 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.utils;
import org.openide.TopManager;
import org.openide.WizardDescriptor;
import org.openide.NotifyDescriptor;
import org.openide.modules.ModuleInstall;
import com.sun.star.script.framework.container.XMLParserFactory;
import org.openoffice.idesupport.OfficeInstallation;
import org.openoffice.netbeans.modules.office.wizard.InstallationPathDescriptor;
import org.openoffice.netbeans.modules.office.options.OfficeSettings;
public class OfficeModule extends ModuleInstall {
private static final long serialVersionUID = -8499324854301243852L;
public void installed() {
WizardDescriptor wiz = new InstallationPathDescriptor();
TopManager.getDefault().createDialog(wiz).show();
if (wiz.getValue() == NotifyDescriptor.OK_OPTION) {
OfficeInstallation oi = (OfficeInstallation)
wiz.getProperty(InstallationPathDescriptor.PROP_INSTALLPATH);
OfficeSettings settings = OfficeSettings.getDefault();
settings.setOfficeDirectory(oi);
}
FrameworkJarChecker.mountDependencies();
XMLParserFactory.setParser(ManifestParser.getManifestParser());
}
public void restored() {
FrameworkJarChecker.mountDependencies();
XMLParserFactory.setParser(ManifestParser.getManifestParser());
}
public boolean closing() {
FrameworkJarChecker.unmountDependencies();
return true;
}
}

View File

@@ -1,98 +0,0 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.openoffice.netbeans.modules.office.utils;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import org.openoffice.idesupport.zip.ParcelZipper;
public class PackageRemover {
private PackageRemover() {
}
public static void removeDeclaration(File source) throws IOException {
File tmp = new File(source.getAbsolutePath() + ".tmp");
BufferedReader in = new BufferedReader(new FileReader(source));
BufferedWriter out = new BufferedWriter(new FileWriter(tmp));
try {
String line;
while ((line = in.readLine()) != null) {
if (line.startsWith("package")) {
String newDeclaration = evaluate(line);
if (newDeclaration != null) {
out.write(newDeclaration, 0, newDeclaration.length());
out.newLine();
}
} else {
out.write(line, 0, line.length());
out.newLine();
}
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
if (!source.delete()) {
tmp.delete();
throw new IOException("Could not overwrite " + source);
} else {
tmp.renameTo(source);
}
}
public static String evaluate(String line) {
int idx = line.indexOf(ParcelZipper.CONTENTS_DIRNAME);
if (idx == -1)
return line;
idx = idx + ParcelZipper.CONTENTS_DIRNAME.length();
if (line.charAt(idx) == '.')
return "package " + line.substring(idx + 1);;
return null;
}
public static void main(String[] args) {
File source = new File(args[0]);
try {
removeDeclaration(source);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}

Some files were not shown because too many files have changed in this diff Show More