Zotero support
git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@73 f0f2a975-2e09-46c8-9428-3b39399b9f3c
This commit is contained in:
parent
4949e6a995
commit
e2f5e3ed59
23 changed files with 634 additions and 151 deletions
|
@ -1,6 +1,6 @@
|
|||
/************************************************************************
|
||||
*
|
||||
* ConfigurationDialog.java
|
||||
* ApplicationsDialog.java
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,7 +20,7 @@
|
|||
*
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Version 1.2 (2010-05-13)
|
||||
* Version 1.2 (2010-10-10)
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -52,9 +52,9 @@ import org.openoffice.da.comp.w2lcommon.helper.DialogAccess;
|
|||
import org.openoffice.da.comp.w2lcommon.helper.FilePicker;
|
||||
|
||||
/** This class provides a uno component which implements the configuration
|
||||
* of Writer4LaTeX
|
||||
* of applications in Writer4LaTeX.
|
||||
*/
|
||||
public final class ConfigurationDialog
|
||||
public final class ApplicationsDialog
|
||||
extends WeakBase
|
||||
implements XServiceInfo, XContainerWindowEventHandler {
|
||||
|
||||
|
@ -65,14 +65,14 @@ public final class ConfigurationDialog
|
|||
|
||||
/** The component will be registered under this name.
|
||||
*/
|
||||
public static String __serviceName = "org.openoffice.da.writer4latex.ConfigurationDialog";
|
||||
public static String __serviceName = "org.openoffice.da.writer4latex.ApplicationsDialog";
|
||||
|
||||
/** The component should also have an implementation name.
|
||||
*/
|
||||
public static String __implementationName = "org.openoffice.da.comp.writer4latex.ConfigurationDialog";
|
||||
public static String __implementationName = "org.openoffice.da.comp.writer4latex.ApplicationsDialog";
|
||||
|
||||
/** Create a new ConfigurationDialog */
|
||||
public ConfigurationDialog(XComponentContext xContext) {
|
||||
/** Create a new ApplicationsDialog */
|
||||
public ApplicationsDialog(XComponentContext xContext) {
|
||||
this.xContext = xContext;
|
||||
externalApps = new ExternalApps(xContext);
|
||||
filePicker = new FilePicker(xContext);
|
||||
|
@ -183,8 +183,8 @@ public final class ConfigurationDialog
|
|||
return true;
|
||||
}
|
||||
|
||||
// Unix: Test to determine wether a certain application is available in the OS
|
||||
// Requires "which", hence unix only
|
||||
// Unix: Test to determine whether a certain application is available in the OS
|
||||
// Requires "which", hence Unix only
|
||||
private boolean hasApp(String sAppName) {
|
||||
try {
|
||||
Vector<String> command = new Vector<String>();
|
||||
|
@ -198,7 +198,7 @@ public final class ConfigurationDialog
|
|||
StreamGobbler errorGobbler = new
|
||||
StreamGobbler(proc.getErrorStream(), "ERROR");
|
||||
|
||||
// Gooble the output stream of the application
|
||||
// Gobble the output stream of the application
|
||||
StreamGobbler outputGobbler = new
|
||||
StreamGobbler(proc.getInputStream(), "OUTPUT");
|
||||
|
||||
|
@ -357,7 +357,7 @@ public final class ConfigurationDialog
|
|||
externalApps.setApplication(ExternalApps.POSTSCRIPTVIEWER, sGsview, "-e \"%s\"");
|
||||
|
||||
}
|
||||
else { // Assume a unix-like system supporting the "which" command
|
||||
else { // Assume a Unix-like system supporting the "which" command
|
||||
configureApp(ExternalApps.LATEX, "latex", "--interaction=batchmode %s",info);
|
||||
configureApp(ExternalApps.PDFLATEX, "pdflatex", "--interaction=batchmode %s",info);
|
||||
configureApp(ExternalApps.XELATEX, "xelatex", "--interaction=batchmode %s",info);
|
|
@ -0,0 +1,257 @@
|
|||
/************************************************************************
|
||||
*
|
||||
* BibliographyDialog.java
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License version 2.1, as published by the Free Software Foundation.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*
|
||||
* Copyright: 2002-2010 by Henrik Just
|
||||
*
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Version 1.2 (2010-10-10)
|
||||
*
|
||||
*/
|
||||
|
||||
package org.openoffice.da.comp.writer4latex;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import com.sun.star.awt.XContainerWindowEventHandler;
|
||||
import com.sun.star.awt.XDialog;
|
||||
import com.sun.star.awt.XWindow;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.lang.XServiceInfo;
|
||||
import com.sun.star.uno.AnyConverter;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.uno.XComponentContext;
|
||||
import com.sun.star.util.XChangesBatch;
|
||||
|
||||
import com.sun.star.lib.uno.helper.WeakBase;
|
||||
|
||||
import org.openoffice.da.comp.w2lcommon.helper.DialogAccess;
|
||||
import org.openoffice.da.comp.w2lcommon.helper.FolderPicker;
|
||||
import org.openoffice.da.comp.w2lcommon.helper.RegistryHelper;
|
||||
import org.openoffice.da.comp.w2lcommon.helper.XPropertySetHelper;
|
||||
|
||||
/** This class provides a uno component which implements the configuration
|
||||
* of the bibliography in Writer4LaTeX.
|
||||
*/
|
||||
public final class BibliographyDialog
|
||||
extends WeakBase
|
||||
implements XServiceInfo, XContainerWindowEventHandler {
|
||||
|
||||
public static final String REGISTRY_PATH = "/org.openoffice.da.Writer4LaTeX.Options/BibliographyOptions";
|
||||
|
||||
private XComponentContext xContext;
|
||||
private FolderPicker folderPicker;
|
||||
|
||||
/** The component will be registered under this name.
|
||||
*/
|
||||
public static String __serviceName = "org.openoffice.da.writer4latex.BibliographyDialog";
|
||||
|
||||
/** The component should also have an implementation name.
|
||||
*/
|
||||
public static String __implementationName = "org.openoffice.da.comp.writer4latex.BibliographyDialog";
|
||||
|
||||
/** Create a new ConfigurationDialog */
|
||||
public BibliographyDialog(XComponentContext xContext) {
|
||||
this.xContext = xContext;
|
||||
folderPicker = new FolderPicker(xContext);
|
||||
}
|
||||
|
||||
|
||||
// Implement XContainerWindowEventHandler
|
||||
public boolean callHandlerMethod(XWindow xWindow, Object event, String sMethod)
|
||||
throws com.sun.star.lang.WrappedTargetException {
|
||||
XDialog xDialog = (XDialog)UnoRuntime.queryInterface(XDialog.class, xWindow);
|
||||
DialogAccess dlg = new DialogAccess(xDialog);
|
||||
|
||||
try {
|
||||
if (sMethod.equals("external_event") ){
|
||||
return handleExternalEvent(dlg, event);
|
||||
}
|
||||
else if (sMethod.equals("ConvertZoteroCitationsChange")) {
|
||||
return convertZoteroCitationsChange(dlg);
|
||||
}
|
||||
else if (sMethod.equals("ZoteroBibTeXDirClick")) {
|
||||
return zoteroBibTeXDirClick(dlg);
|
||||
}
|
||||
else if (sMethod.equals("UseExternalBibTeXFilesChange")) {
|
||||
return useExternalBibTeXFilesChange(dlg);
|
||||
}
|
||||
else if (sMethod.equals("ExternalBibTeXDirClick")) {
|
||||
return externalBibTeXDirClick(dlg);
|
||||
}
|
||||
}
|
||||
catch (com.sun.star.uno.RuntimeException e) {
|
||||
throw e;
|
||||
}
|
||||
catch (com.sun.star.uno.Exception e) {
|
||||
throw new com.sun.star.lang.WrappedTargetException(sMethod, this, e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String[] getSupportedMethodNames() {
|
||||
String[] sNames = { "external_event", "ConvertZoteroCitationsChange", "ZoteroBibTeXDirClick", "UseExternalBibTeXFilesChange", "ExternalBibTeXDirClick" };
|
||||
return sNames;
|
||||
}
|
||||
|
||||
// Implement the interface XServiceInfo
|
||||
public boolean supportsService(String sServiceName) {
|
||||
return sServiceName.equals(__serviceName);
|
||||
}
|
||||
|
||||
public String getImplementationName() {
|
||||
return __implementationName;
|
||||
}
|
||||
|
||||
public String[] getSupportedServiceNames() {
|
||||
String[] sSupportedServiceNames = { __serviceName };
|
||||
return sSupportedServiceNames;
|
||||
}
|
||||
|
||||
// Private stuff
|
||||
|
||||
private boolean handleExternalEvent(DialogAccess dlg, Object aEventObject)
|
||||
throws com.sun.star.uno.Exception {
|
||||
try {
|
||||
String sMethod = AnyConverter.toString(aEventObject);
|
||||
if (sMethod.equals("ok")) {
|
||||
saveConfiguration(dlg);
|
||||
return true;
|
||||
} else if (sMethod.equals("back") || sMethod.equals("initialize")) {
|
||||
loadConfiguration(dlg);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (com.sun.star.lang.IllegalArgumentException e) {
|
||||
throw new com.sun.star.lang.IllegalArgumentException(
|
||||
"Method external_event requires a string in the event object argument.", this,(short) -1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Load settings from the registry into the dialog
|
||||
private void loadConfiguration(DialogAccess dlg) {
|
||||
RegistryHelper registry = new RegistryHelper(xContext);
|
||||
try {
|
||||
Object view = registry.getRegistryView(REGISTRY_PATH, false);
|
||||
XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view);
|
||||
dlg.setCheckBoxStateAsBoolean("ConvertZoteroCitations",
|
||||
XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations"));
|
||||
dlg.setTextFieldText("ZoteroBibTeXDir",
|
||||
XPropertySetHelper.getPropertyValueAsString(xProps, "ZoteroBibTeXDir"));
|
||||
dlg.setTextFieldText("NatbibOptions",
|
||||
XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions"));
|
||||
dlg.setCheckBoxStateAsBoolean("UseExternalBibTeXFiles",
|
||||
XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles"));
|
||||
dlg.setTextFieldText("ExternalBibTeXDir",
|
||||
XPropertySetHelper.getPropertyValueAsString(xProps, "ExternalBibTeXDir"));
|
||||
registry.disposeRegistryView(view);
|
||||
}
|
||||
catch (Exception e) {
|
||||
// Failed to get registry view
|
||||
}
|
||||
|
||||
// Update dialog according to the settings
|
||||
convertZoteroCitationsChange(dlg);
|
||||
useExternalBibTeXFilesChange(dlg);
|
||||
}
|
||||
|
||||
// Save settings from the dialog to the registry
|
||||
private void saveConfiguration(DialogAccess dlg) {
|
||||
RegistryHelper registry = new RegistryHelper(xContext);
|
||||
try {
|
||||
Object view = registry.getRegistryView(REGISTRY_PATH, true);
|
||||
XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view);
|
||||
XPropertySetHelper.setPropertyValue(xProps, "ConvertZoteroCitations", dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations"));
|
||||
XPropertySetHelper.setPropertyValue(xProps, "ZoteroBibTeXDir", dlg.getTextFieldText("ZoteroBibTeXDir"));
|
||||
XPropertySetHelper.setPropertyValue(xProps, "NatbibOptions", dlg.getTextFieldText("NatbibOptions"));
|
||||
XPropertySetHelper.setPropertyValue(xProps, "UseExternalBibTeXFiles", dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles"));
|
||||
XPropertySetHelper.setPropertyValue(xProps, "ExternalBibTeXDir", dlg.getTextFieldText("ExternalBibTeXDir"));
|
||||
|
||||
// Commit registry changes
|
||||
XChangesBatch xUpdateContext = (XChangesBatch)
|
||||
UnoRuntime.queryInterface(XChangesBatch.class,view);
|
||||
try {
|
||||
xUpdateContext.commitChanges();
|
||||
}
|
||||
catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
registry.disposeRegistryView(view);
|
||||
}
|
||||
catch (Exception e) {
|
||||
// Failed to get registry view
|
||||
}
|
||||
}
|
||||
|
||||
private boolean convertZoteroCitationsChange(DialogAccess dlg) {
|
||||
// Update dialog according to the current setting of the checkbox
|
||||
boolean bConvert = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations");
|
||||
dlg.setControlEnabled("ZoteroBibTeXDirLabel", bConvert);
|
||||
dlg.setControlEnabled("ZoteroBibTeXDir", bConvert);
|
||||
dlg.setControlEnabled("ZoteroBibTeXDirButton", bConvert);
|
||||
dlg.setControlEnabled("NatbibOptionsLabel", bConvert);
|
||||
dlg.setControlEnabled("NatbibOptions", bConvert);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean zoteroBibTeXDirClick(DialogAccess dlg) {
|
||||
String sPath = folderPicker.getPath();
|
||||
if (sPath!=null) {
|
||||
try {
|
||||
dlg.setTextFieldText("ZoteroBibTeXDir", new File(new URI(sPath)).getCanonicalPath());
|
||||
}
|
||||
catch (IOException e) {
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean useExternalBibTeXFilesChange(DialogAccess dlg) {
|
||||
// Update dialog according to the current setting of the checkbox
|
||||
boolean bExternal = dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles");
|
||||
dlg.setControlEnabled("ExternalBibTeXDirLabel", bExternal);
|
||||
dlg.setControlEnabled("ExternalBibTeXDir", bExternal);
|
||||
dlg.setControlEnabled("ExternalBibTeXDirButton", bExternal);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean externalBibTeXDirClick(DialogAccess dlg) {
|
||||
String sPath = folderPicker.getPath();
|
||||
if (sPath!=null) {
|
||||
try {
|
||||
dlg.setTextFieldText("ExternalBibTeXDir", new File(new URI(sPath)).getCanonicalPath());
|
||||
}
|
||||
catch (IOException e) {
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -16,11 +16,11 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*
|
||||
* Copyright: 2002-2009 by Henrik Just
|
||||
* Copyright: 2002-2010 by Henrik Just
|
||||
*
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Version 1.2 (2009-11-19)
|
||||
* Version 1.2 (2010-10-11)
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -32,12 +32,11 @@ import java.lang.Process;
|
|||
import java.lang.ProcessBuilder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.openoffice.da.comp.w2lcommon.helper.RegistryHelper;
|
||||
//import java.util.Map;
|
||||
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.XMultiHierarchicalPropertySet;
|
||||
import com.sun.star.lang.XComponent;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.uno.XComponentContext;
|
||||
import com.sun.star.util.XChangesBatch;
|
||||
|
@ -158,10 +157,12 @@ public class ExternalApps {
|
|||
/** Load the external applications from the registry
|
||||
*/
|
||||
public void load() {
|
||||
Object view;
|
||||
try {
|
||||
view = getRegistryView(false);
|
||||
}
|
||||
RegistryHelper registry = new RegistryHelper(xContext);
|
||||
Object view;
|
||||
try {
|
||||
// Prepare registry view
|
||||
view = registry.getRegistryView("/org.openoffice.da.Writer4LaTeX.Options/Applications",false);
|
||||
}
|
||||
catch (com.sun.star.uno.Exception e) {
|
||||
// Give up...
|
||||
//setApplication(LATEX,"Error!",e.getMessage());
|
||||
|
@ -183,15 +184,16 @@ public class ExternalApps {
|
|||
}
|
||||
}
|
||||
|
||||
disposeRegistryView(view);
|
||||
registry.disposeRegistryView(view);
|
||||
}
|
||||
|
||||
/** Save the external applications to the registry
|
||||
*/
|
||||
public void save() {
|
||||
RegistryHelper registry = new RegistryHelper(xContext);
|
||||
Object view;
|
||||
try {
|
||||
view = getRegistryView(true);
|
||||
view = registry.getRegistryView("/org.openoffice.da.Writer4LaTeX.Options/Applications",true);
|
||||
}
|
||||
catch (com.sun.star.uno.Exception e) {
|
||||
// Give up...
|
||||
|
@ -223,34 +225,7 @@ public class ExternalApps {
|
|||
// ignore
|
||||
}
|
||||
|
||||
disposeRegistryView(view);
|
||||
registry.disposeRegistryView(view);
|
||||
}
|
||||
|
||||
// Get a view of the options root in the registry
|
||||
private Object getRegistryView(boolean bUpdate)
|
||||
throws com.sun.star.uno.Exception {
|
||||
//Object provider = xMSF.createInstance(
|
||||
Object provider = xContext.getServiceManager().createInstanceWithContext(
|
||||
"com.sun.star.configuration.ConfigurationProvider", xContext);
|
||||
XMultiServiceFactory xProvider = (XMultiServiceFactory)
|
||||
UnoRuntime.queryInterface(XMultiServiceFactory.class,provider);
|
||||
PropertyValue[] args = new PropertyValue[1];
|
||||
args[0] = new PropertyValue();
|
||||
args[0].Name = "nodepath";
|
||||
args[0].Value = "/org.openoffice.da.Writer4LaTeX.Options/Applications";
|
||||
String sServiceName = bUpdate ?
|
||||
"com.sun.star.configuration.ConfigurationUpdateAccess" :
|
||||
"com.sun.star.configuration.ConfigurationAccess";
|
||||
Object view = xProvider.createInstanceWithArguments(sServiceName,args);
|
||||
return view;
|
||||
}
|
||||
|
||||
// Dispose a previously obtained registry view
|
||||
private void disposeRegistryView(Object view) {
|
||||
XComponent xComponent = (XComponent)
|
||||
UnoRuntime.queryInterface(XComponent.class,view);
|
||||
xComponent.dispose();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -107,7 +107,7 @@ public class TeXImportFilter extends WeakBase implements XInitialization, XNamed
|
|||
return m_serviceNames;
|
||||
}
|
||||
|
||||
// The following methods may be called from multiple threads (eg. if someone wants to cancel the filtering),
|
||||
// The following methods may be called from multiple threads (e.g. if someone wants to cancel the filtering),
|
||||
// thus all access to class members must be synchronized
|
||||
|
||||
// Implement XInitialization:
|
||||
|
@ -236,7 +236,7 @@ public class TeXImportFilter extends WeakBase implements XInitialization, XNamed
|
|||
// Private helper methods
|
||||
/** Import a TeX document with TeX4ht
|
||||
* @param xText into this document
|
||||
* @param sURL from the TeX documetn given by this URL
|
||||
* @param sURL from the TeX document given by this URL
|
||||
*/
|
||||
public boolean importTeX(XTextDocument xText, String sURL, XStatusIndicator xStatus) {
|
||||
int nStep = 0;
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*
|
||||
* Copyright: 2002-2009 by Henrik Just
|
||||
* Copyright: 2002-2010 by Henrik Just
|
||||
*
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Version 1.2 (2009-05-20)
|
||||
* Version 1.2 (2010-10-10)
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -78,9 +78,15 @@ public class W4LRegistration {
|
|||
multiFactory,
|
||||
regKey);
|
||||
}
|
||||
else if (implName.equals(ConfigurationDialog.__implementationName) ) {
|
||||
xSingleServiceFactory = FactoryHelper.getServiceFactory(ConfigurationDialog.class,
|
||||
ConfigurationDialog.__serviceName,
|
||||
else if (implName.equals(ApplicationsDialog.__implementationName) ) {
|
||||
xSingleServiceFactory = FactoryHelper.getServiceFactory(ApplicationsDialog.class,
|
||||
ApplicationsDialog.__serviceName,
|
||||
multiFactory,
|
||||
regKey);
|
||||
}
|
||||
else if (implName.equals(BibliographyDialog.__implementationName) ) {
|
||||
xSingleServiceFactory = FactoryHelper.getServiceFactory(BibliographyDialog.class,
|
||||
BibliographyDialog.__serviceName,
|
||||
multiFactory,
|
||||
regKey);
|
||||
}
|
||||
|
@ -110,8 +116,10 @@ public class W4LRegistration {
|
|||
TeXImportFilter.__serviceName, regKey) &
|
||||
FactoryHelper.writeRegistryServiceInfo(TeXDetectService.__implementationName,
|
||||
TeXDetectService.__serviceName, regKey) &
|
||||
FactoryHelper.writeRegistryServiceInfo(ConfigurationDialog.__implementationName,
|
||||
ConfigurationDialog.__serviceName, regKey) &
|
||||
FactoryHelper.writeRegistryServiceInfo(ApplicationsDialog.__implementationName,
|
||||
ApplicationsDialog.__serviceName, regKey) &
|
||||
FactoryHelper.writeRegistryServiceInfo(BibliographyDialog.__implementationName,
|
||||
BibliographyDialog.__serviceName, regKey) &
|
||||
FactoryHelper.writeRegistryServiceInfo(LogViewerDialog.__implementationName,
|
||||
LogViewerDialog.__serviceName, regKey);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
*
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Version 1.2 (2010-03-12)
|
||||
* Version 1.2 (2010-10-13)
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -52,6 +52,8 @@ import org.openoffice.da.comp.w2lcommon.helper.MessageBox;
|
|||
import org.openoffice.da.comp.w2lcommon.helper.PropertyHelper;
|
||||
import org.openoffice.da.comp.w2lcommon.helper.RegistryHelper;
|
||||
import org.openoffice.da.comp.w2lcommon.helper.XPropertySetHelper;
|
||||
|
||||
import writer2latex.util.CSVList;
|
||||
|
||||
/** This class implements the ui (dispatch) commands provided by Writer4LaTeX.
|
||||
* The actual processing is done by the three core classes <code>TeXify</code>,
|
||||
|
@ -198,6 +200,39 @@ public final class Writer4LaTeX extends WeakBase
|
|||
xStatus.start("Writer4LaTeX",10);
|
||||
xStatus.setValue(1); // At least we have started, that's 10% :-)
|
||||
|
||||
// First work a bit on the FilterData (get the backend and set bibliography options)
|
||||
String sBackend = "generic";
|
||||
PropertyHelper mediaHelper = new PropertyHelper(mediaProps);
|
||||
Object filterData = mediaHelper.get("FilterData");
|
||||
if (filterData instanceof PropertyValue[]) {
|
||||
PropertyHelper filterHelper = new PropertyHelper((PropertyValue[])filterData);
|
||||
// Get the backend
|
||||
Object backend = filterHelper.get("backend");
|
||||
if (backend instanceof String) {
|
||||
sBackend = (String) backend;
|
||||
}
|
||||
|
||||
// Set the bibliography options according to the settings
|
||||
RegistryHelper registry = new RegistryHelper(m_xContext);
|
||||
try {
|
||||
Object view = registry.getRegistryView(BibliographyDialog.REGISTRY_PATH, false);
|
||||
XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view);
|
||||
if (XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")) {
|
||||
filterHelper.put("zotero_bibtex_files", getFileList(XPropertySetHelper.getPropertyValueAsString(xProps, "ZoteroBibTeXDir")));
|
||||
filterHelper.put("natbib_options", XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions"));
|
||||
}
|
||||
if (XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles")) {
|
||||
filterHelper.put("external_bibtex_files", getFileList(XPropertySetHelper.getPropertyValueAsString(xProps, "ExternalBibTeXDir")));
|
||||
}
|
||||
mediaHelper.put("FilterData",filterHelper.toArray());
|
||||
mediaProps = mediaHelper.toArray();
|
||||
registry.disposeRegistryView(view);
|
||||
}
|
||||
catch (Exception e) {
|
||||
// Failed to get registry view
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
// Convert to LaTeX
|
||||
String sTargetUrl = sBasePath+sBaseFileName+".tex";
|
||||
|
@ -213,16 +248,6 @@ public final class Writer4LaTeX extends WeakBase
|
|||
|
||||
xStatus.setValue(6); // Export is finished, that's more than half :-)
|
||||
|
||||
// Get the backend from the media properties
|
||||
String sBackend = "generic";
|
||||
Object filterData = (new PropertyHelper(mediaProps)).get("FilterData");
|
||||
if (filterData instanceof PropertyValue[]) {
|
||||
Object backend = (new PropertyHelper((PropertyValue[])filterData)).get("backend");
|
||||
if (backend instanceof String) {
|
||||
sBackend = (String) backend;
|
||||
}
|
||||
}
|
||||
|
||||
if (texify==null) { texify = new TeXify(m_xContext); }
|
||||
File file = new File(urlToFile(sBasePath),sBaseFileName);
|
||||
|
||||
|
@ -257,7 +282,21 @@ public final class Writer4LaTeX extends WeakBase
|
|||
xStatus.end();
|
||||
}
|
||||
|
||||
private void viewLog() {
|
||||
private String getFileList(String sDirectory) {
|
||||
File dir = new File(sDirectory);
|
||||
CSVList filelist = new CSVList(",");
|
||||
if (dir.isDirectory()) {
|
||||
File[] files = dir.listFiles();
|
||||
for (File file : files) {
|
||||
if (file.isFile() && file.getName().endsWith(".bib")) {
|
||||
filelist.addValue(file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
return filelist.toString();
|
||||
}
|
||||
|
||||
private void viewLog() {
|
||||
if (updateLocation()) {
|
||||
// Execute the log viewer dialog
|
||||
try {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue