Scripting: Remove org package
Change-Id: If0b6ac87b5d53da43557dee5824e9413a260ba7c Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
@@ -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
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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()]);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
@@ -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>";
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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 + ">";
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 103 B |
@@ -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);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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) {}
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
@@ -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) {}
|
||||
}
|
@@ -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();
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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.
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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>
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -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
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 253 B |
@@ -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>
|
@@ -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>
|
@@ -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
|
@@ -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>
|
Before Width: | Height: | Size: 588 B |
Before Width: | Height: | Size: 759 B |
@@ -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>
|
@@ -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>
|
@@ -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>
|
Before Width: | Height: | Size: 702 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 576 B |
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -1 +0,0 @@
|
||||
http://framework.openoffice.org/scripting/netbeans-devguide.html
|
@@ -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();
|
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<parcel language="Java" xmlns:parcel="scripting.dtd">
|
||||
</parcel>
|
@@ -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 );
|
||||
}
|
||||
|
||||
}
|
@@ -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>
|
Before Width: | Height: | Size: 969 B |
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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, "");
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|