From 0906487d398d03c856192b9eaf41b4d0241ee721 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Fri, 29 May 2015 09:14:04 +0000 Subject: [PATCH] w2l: Externalize UI strings git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@248 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- build.xml | 4 +- source/distro/changelog.txt | 2 + source/distro/doc/user-manual.odt | Bin 60665 -> 60894 bytes .../da/comp/w2lcommon/filter/Messages.java | 47 +++ .../comp/w2lcommon/filter/UNOPublisher.java | 74 ++--- .../comp/w2lcommon/filter/messages.properties | 5 + .../w2lcommon/filter/messages_da.properties | 5 + .../comp/writer2latex/ApplicationsDialog.java | 190 ++++++------ .../da/comp/writer2latex/BibTeXDialog.java | 274 +++++++++--------- .../comp/writer2latex/BibliographyDialog.java | 132 ++++----- .../da/comp/writer2latex/ExternalApps.java | 74 +++-- .../comp/writer2latex/LaTeXUNOPublisher.java | 60 ++-- .../da/comp/writer2latex/Messages.java | 47 +++ .../da/comp/writer2latex/TeXify.java | 24 +- .../da/comp/writer2latex/Writer2LaTeX.java | 28 +- .../da/comp/writer2latex/messages.properties | 34 +++ .../comp/writer2latex/messages_da.properties | 34 +++ .../writer2latex/api/ConverterFactory.java | 4 +- 18 files changed, 616 insertions(+), 422 deletions(-) create mode 100644 source/java/org/openoffice/da/comp/w2lcommon/filter/Messages.java create mode 100644 source/java/org/openoffice/da/comp/w2lcommon/filter/messages.properties create mode 100644 source/java/org/openoffice/da/comp/w2lcommon/filter/messages_da.properties create mode 100644 source/java/org/openoffice/da/comp/writer2latex/Messages.java create mode 100644 source/java/org/openoffice/da/comp/writer2latex/messages.properties create mode 100644 source/java/org/openoffice/da/comp/writer2latex/messages_da.properties diff --git a/build.xml b/build.xml index 9b53cf6..1069d70 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ ############################################################################ # This is the Ant build file for writer2latex # Original: Sep 2004 (mgn) - # version 1.6 (2015-05-12) + # version 1.6 (2015-05-28) ############################################################################ --> @@ -137,6 +137,7 @@ + @@ -176,6 +177,7 @@ + diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index ed8164e..605f785 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,8 @@ Changelog for Writer2LaTeX version 1.4 -> 1.6 ---------- version 1.5.3 ---------- +[w2l] UI strings in the code are now externalized for localization + [w2l] Color support in StarMath have changed with LO 4.4 and will with (probably) AOO 4.2 (https://bz.apache.org/ooo/show_bug.cgi?id=118191). Now the 16 basic HTML colors are used. This is an incompatible change because StarMath used to apply dark versions of red, blue, cyan and magenta. diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 8ad4e1942e525a7aaa4e51f4b349bed3e1203dbc..b93eac1bcf1cab79344fe2918369c03c5ecb449f 100644 GIT binary patch delta 49020 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%0AeiUv{ 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 F{|77TL3RKD delta 48802 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 && containsExecutable(s,"latex.exe")) { + if (s.toLowerCase().indexOf("miktex")>-1 && containsExecutable(s,"latex.exe")) { //$NON-NLS-1$ //$NON-NLS-2$ return s; } } for (String s : sPaths) { - if (containsExecutable(s,"latex.exe")) { + if (containsExecutable(s,"latex.exe")) { //$NON-NLS-1$ return s; } } @@ -350,10 +350,10 @@ public final class ApplicationsDialog // Windows: Get the path to the gsview executable private String getGsviewPath() { - String sProgramFiles = System.getenv("ProgramFiles"); + String sProgramFiles = System.getenv("ProgramFiles"); //$NON-NLS-1$ if (sProgramFiles!=null) { - if (containsExecutable(sProgramFiles+"\\ghostgum\\gsview","gsview32.exe")) { - return sProgramFiles+"\\ghostgum\\gsview\\gsview32.exe"; + if (containsExecutable(sProgramFiles+"\\ghostgum\\gsview","gsview32.exe")) { //$NON-NLS-1$ //$NON-NLS-2$ + return sProgramFiles+"\\ghostgum\\gsview\\gsview32.exe"; //$NON-NLS-1$ } } return null; @@ -371,15 +371,15 @@ public final class ApplicationsDialog // Windows: Configure a certain MikTeX application private boolean configureMikTeX(String sPath, String sName, String sAppName, String sArguments, StringBuilder info, boolean bRequired) { - File app = new File(new File(sPath),sAppName+".exe"); + File app = new File(new File(sPath),sAppName+".exe"); //$NON-NLS-1$ if (app.exists()) { externalApps.setApplication(sName, sAppName, sArguments); - info.append(" Found "+sName+": "+sAppName+" - OK\n"); + info.append(" "+Messages.getString("ApplicationsDialog.found")+" "+sName+": "+sAppName+" - "+Messages.getString("ApplicationsDialog.ok")+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ return true; } else if (bRequired) { - externalApps.setApplication(sName, "???", "???"); - info.append(" Failed to find "+sName+"\n"); + externalApps.setApplication(sName, "???", "???"); //$NON-NLS-1$ //$NON-NLS-2$ + info.append(" "+Messages.getString("ApplicationsDialog.failedtofind")+" "+sName+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } return false; } @@ -388,20 +388,20 @@ public final class ApplicationsDialog private void autoConfigureUnix(DialogAccess dlg, StringBuilder info) { // Assume that the "which" command is supported - configureApp(ExternalApps.LATEX, "latex", "--interaction=batchmode %s",info); - configureApp(ExternalApps.PDFLATEX, "pdflatex", "--interaction=batchmode %s",info); - configureApp(ExternalApps.XELATEX, "xelatex", "--interaction=batchmode %s",info); - configureApp(ExternalApps.DVIPS, "dvips", "%s",info); - configureApp(ExternalApps.BIBTEX, "bibtex", "%s",info); - configureApp(ExternalApps.MAKEINDEX, "makeindex", "%s",info); + configureApp(ExternalApps.LATEX, "latex", "--interaction=batchmode %s",info); //$NON-NLS-1$ //$NON-NLS-2$ + configureApp(ExternalApps.PDFLATEX, "pdflatex", "--interaction=batchmode %s",info); //$NON-NLS-1$ //$NON-NLS-2$ + configureApp(ExternalApps.XELATEX, "xelatex", "--interaction=batchmode %s",info); //$NON-NLS-1$ //$NON-NLS-2$ + configureApp(ExternalApps.DVIPS, "dvips", "%s",info); //$NON-NLS-1$ //$NON-NLS-2$ + configureApp(ExternalApps.BIBTEX, "bibtex", "%s",info); //$NON-NLS-1$ //$NON-NLS-2$ + configureApp(ExternalApps.MAKEINDEX, "makeindex", "%s",info); //$NON-NLS-1$ //$NON-NLS-2$ //configureApp(ExternalApps.MK4HT, "mk4ht", "%c %s",info); // We have several possible viewers - String[] sDviViewers = {"evince", "okular", "xdvi"}; - configureViewer(ExternalApps.DVIVIEWER, sDviViewers, "%s",info); - String[] sPdfViewers = {"evince", "okular", "xpdf"}; - configureViewer(ExternalApps.PDFVIEWER, sPdfViewers, "%s",info); - String[] sPsViewers = {"evince", "okular", "ghostview"}; - configureViewer(ExternalApps.POSTSCRIPTVIEWER, sPsViewers, "%s",info); + String[] sDviViewers = {"evince", "okular", "xdvi"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + configureViewer(ExternalApps.DVIVIEWER, sDviViewers, "%s",info); //$NON-NLS-1$ + String[] sPdfViewers = {"evince", "okular", "xpdf"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + configureViewer(ExternalApps.PDFVIEWER, sPdfViewers, "%s",info); //$NON-NLS-1$ + String[] sPsViewers = {"evince", "okular", "ghostview"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + configureViewer(ExternalApps.POSTSCRIPTVIEWER, sPsViewers, "%s",info); //$NON-NLS-1$ // Maybe add some info for Debian/Ubuntu users, e.g. // sudo apt-get install texlive @@ -415,7 +415,7 @@ public final class ApplicationsDialog private boolean hasApp(String sAppName) { try { Vector command = new Vector(); - command.add("which"); + command.add("which"); //$NON-NLS-1$ command.add(sAppName); ProcessBuilder pb = new ProcessBuilder(command); @@ -423,11 +423,11 @@ public final class ApplicationsDialog // Gobble the error stream of the application StreamGobbler errorGobbler = new - StreamGobbler(proc.getErrorStream(), "ERROR"); + StreamGobbler(proc.getErrorStream(), "ERROR"); //$NON-NLS-1$ // Gobble the output stream of the application StreamGobbler outputGobbler = new - StreamGobbler(proc.getInputStream(), "OUTPUT"); + StreamGobbler(proc.getInputStream(), "OUTPUT"); //$NON-NLS-1$ errorGobbler.start(); outputGobbler.start(); @@ -449,15 +449,15 @@ public final class ApplicationsDialog externalApps.setApplication(sName, sAppName, sArguments); externalApps.setUseDefaultApplication(sName, false); if (info!=null) { - info.append("Found "+sAppName+" - OK\n"); + info.append(Messages.getString("ApplicationsDialog.found")+" "+sAppName+" - "+Messages.getString("ApplicationsDialog.ok")+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ } return true; } else { - externalApps.setApplication(sName, "???", "???"); + externalApps.setApplication(sName, "???", "???"); //$NON-NLS-1$ //$NON-NLS-2$ externalApps.setUseDefaultApplication(sName, false); if (info!=null) { - info.append("Failed to find "+sAppName+"\n"); + info.append(Messages.getString("ApplicationsDialog.failedtofind")+" "+sAppName+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ } return false; } @@ -468,12 +468,12 @@ public final class ApplicationsDialog private boolean configureViewer(String sName, String[] sAppNames, String sArguments, StringBuilder info) { for (String sAppName : sAppNames) { if (configureApp(sName, sAppName, sArguments, null)) { - info.append("Found "+sName+": "+sAppName+" - OK\n"); + info.append(Messages.getString("ApplicationsDialog.found")+" "+ExternalApps.getUIAppName(sName)+": "+sAppName+" - "+Messages.getString("ApplicationsDialog.ok")+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ return true; } } externalApps.setUseDefaultApplication(sName, true); - info.append("Using default application as "+sName+"\n"); + info.append(Messages.getString("ApplicationsDialog.usingdefaultapp")+" "+ExternalApps.getUIAppName(sName)+"\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return true; } diff --git a/source/java/org/openoffice/da/comp/writer2latex/BibTeXDialog.java b/source/java/org/openoffice/da/comp/writer2latex/BibTeXDialog.java index 9e9ddc2..b8991f7 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/BibTeXDialog.java +++ b/source/java/org/openoffice/da/comp/writer2latex/BibTeXDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-04-01) + * Version 1.6 (2015-05-29) * */ @@ -81,11 +81,11 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti /** The component will be registered under this service name */ - public static String __serviceName = "org.openoffice.da.writer2latex.BibTeXDialog"; + public static String __serviceName = "org.openoffice.da.writer2latex.BibTeXDialog"; //$NON-NLS-1$ /** The implementation name of the component */ - public static String __implementationName = "org.openoffice.da.comp.writer2latex.BibTeXDialog"; + public static String __implementationName = "org.openoffice.da.comp.writer2latex.BibTeXDialog"; //$NON-NLS-1$ // **** Member variables @@ -126,13 +126,13 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti /** Return the name of the library containing the dialog */ @Override public String getDialogLibraryName() { - return "W2LDialogs2"; + return "W2LDialogs2"; //$NON-NLS-1$ } /** Return the name of the dialog within the library */ @Override public String getDialogName() { - return "BibTeXEntry"; + return "BibTeXEntry"; //$NON-NLS-1$ } @Override public void initialize() { @@ -145,31 +145,31 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // **** Implement XDialogEventHandler @Override public boolean callHandlerMethod(XDialog xDialog, Object event, String sMethod) { - if (sMethod.equals("FileChange")) { + if (sMethod.equals("FileChange")) { //$NON-NLS-1$ // The user has selected another BibTeX file fileChange(); } - else if (sMethod.equals("EntryChange")) { + else if (sMethod.equals("EntryChange")) { //$NON-NLS-1$ // The user has selected another BibTeX entry entryChange(); } - else if (sMethod.equals("New")) { + else if (sMethod.equals("New")) { //$NON-NLS-1$ // Create a new BibTeX file newFile(); } - else if (sMethod.equals("Edit")) { + else if (sMethod.equals("Edit")) { //$NON-NLS-1$ // Edit the current BibTeX file edit(); } - else if (sMethod.equals("Reload")) { + else if (sMethod.equals("Reload")) { //$NON-NLS-1$ // Reload the BibTeX files in the dialog reload(null); } - else if (sMethod.equals("InsertReference")) { + else if (sMethod.equals("InsertReference")) { //$NON-NLS-1$ // Insert a reference to the current BibTeX entry insertReference(); } - else if (sMethod.equals("Update")) { + else if (sMethod.equals("Update")) { //$NON-NLS-1$ // Update all reference in the document update(); } @@ -177,7 +177,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } @Override public String[] getSupportedMethodNames() { - String[] sNames = { "FileChange", "EntryChange", "New", "Edit", "Reload", "InsertReference", "Update" }; + String[] sNames = { "FileChange", "EntryChange", "New", "Edit", "Reload", "InsertReference", "Update" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ return sNames; } @@ -192,9 +192,9 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } else { // Remember the previous selection, if any - short nSelectedFile = getListBoxSelectedItem("File"); + short nSelectedFile = getListBoxSelectedItem("File"); //$NON-NLS-1$ if (nSelectedFile>=0 && files[nSelectedFile]!=null) { - sFile = getListBoxStringItemList("File")[nSelectedFile]; + sFile = getListBoxStringItemList("File")[nSelectedFile]; //$NON-NLS-1$ } } @@ -202,7 +202,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Populate the file list based on the BibTeX directory files = bibTeXDirectory.listFiles( new FilenameFilter() { - public boolean accept(File file, String sName) { return sName!=null && sName.endsWith(".bib"); } + public boolean accept(File file, String sName) { return sName!=null && sName.endsWith(".bib"); } //$NON-NLS-1$ } ); int nFileCount = files.length; @@ -215,17 +215,17 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti if (sFileNames[i].equals(sFile)) { nFile = i; } } - setListBoxStringItemList("File", sFileNames); - setListBoxSelectedItem("File",(short)nFile); + setListBoxStringItemList("File", sFileNames); //$NON-NLS-1$ + setListBoxSelectedItem("File",(short)nFile); //$NON-NLS-1$ if (nFileCount>0) { - setControlEnabled("FileLabel",true); - setControlEnabled("File",true); - setControlEnabled("EntryLabel",true); - setControlEnabled("Entry",true); - setControlEnabled("Edit",true); - setControlEnabled("Insert",true); - setControlEnabled("Update",true); + setControlEnabled("FileLabel",true); //$NON-NLS-1$ + setControlEnabled("File",true); //$NON-NLS-1$ + setControlEnabled("EntryLabel",true); //$NON-NLS-1$ + setControlEnabled("Entry",true); //$NON-NLS-1$ + setControlEnabled("Edit",true); //$NON-NLS-1$ + setControlEnabled("Insert",true); //$NON-NLS-1$ + setControlEnabled("Update",true); //$NON-NLS-1$ fileChange(); @@ -234,27 +234,27 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } // The directory did not contain any BibTeX files - setControlEnabled("FileLabel",false); - setControlEnabled("File",false); - setControlEnabled("EntryLabel",false); - setControlEnabled("Entry",false); - setControlEnabled("Edit",false); - setControlEnabled("Insert",false); - setControlEnabled("Update",false); - setLabelText("EntryInformation","No BibTeX files were found"); + setControlEnabled("FileLabel",false); //$NON-NLS-1$ + setControlEnabled("File",false); //$NON-NLS-1$ + setControlEnabled("EntryLabel",false); //$NON-NLS-1$ + setControlEnabled("Entry",false); //$NON-NLS-1$ + setControlEnabled("Edit",false); //$NON-NLS-1$ + setControlEnabled("Insert",false); //$NON-NLS-1$ + setControlEnabled("Update",false); //$NON-NLS-1$ + setLabelText("EntryInformation",Messages.getString("BibTeXDialog.nobibtexfiles")); //$NON-NLS-1$ //$NON-NLS-2$ } // Update the list of entries based on the current selection in the file list private void fileChange() { // Remember current entry selection, if any String sEntry = null; - short nEntry = getListBoxSelectedItem("Entry"); + short nEntry = getListBoxSelectedItem("Entry"); //$NON-NLS-1$ if (nEntry>=0) { - sEntry = getListBoxStringItemList("Entry")[nEntry]; + sEntry = getListBoxStringItemList("Entry")[nEntry]; //$NON-NLS-1$ } // Parse the selected file - int nFile = getListBoxSelectedItem("File"); + int nFile = getListBoxSelectedItem("File"); //$NON-NLS-1$ if (nFile>=0) { try { currentFile = new BibTeXReader(files[nFile]); @@ -268,7 +268,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti if (currentFile!=null) { // Populate the entry list with the keys from the current file, if any String[] sCurrentKeys = currentFile.getEntries().keySet().toArray(new String[0]); - setListBoxStringItemList("Entry", sCurrentKeys); + setListBoxStringItemList("Entry", sCurrentKeys); //$NON-NLS-1$ if (sCurrentKeys.length>0) { // Select either the first or the previous entry nEntry = 0; @@ -280,27 +280,27 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } } } - setListBoxSelectedItem("Entry",nEntry); - setControlEnabled("EntryLabel",true); - setControlEnabled("Entry",true); - setControlEnabled("Insert",true); + setListBoxSelectedItem("Entry",nEntry); //$NON-NLS-1$ + setControlEnabled("EntryLabel",true); //$NON-NLS-1$ + setControlEnabled("Entry",true); //$NON-NLS-1$ + setControlEnabled("Insert",true); //$NON-NLS-1$ entryChange(); } else { // No entries, disable controls - setControlEnabled("EntryLabel",false); - setControlEnabled("Entry",false); - setControlEnabled("Insert",false); - setLabelText("EntryInformation","This file does not contain any entries"); + setControlEnabled("EntryLabel",false); //$NON-NLS-1$ + setControlEnabled("Entry",false); //$NON-NLS-1$ + setControlEnabled("Insert",false); //$NON-NLS-1$ + setLabelText("EntryInformation",Messages.getString("BibTeXDialog.noentries")); //$NON-NLS-1$ //$NON-NLS-2$ } - setControlEnabled("Edit",true); + setControlEnabled("Edit",true); //$NON-NLS-1$ } else { // Failed to parse, disable controls - setListBoxStringItemList("Entry", new String[0]); - setControlEnabled("EntryLabel",false); - setControlEnabled("Entry",false); - setControlEnabled("Edit",false); - setControlEnabled("Insert",false); - setLabelText("EntryInformation","There was an error reading this file"); + setListBoxStringItemList("Entry", new String[0]); //$NON-NLS-1$ + setControlEnabled("EntryLabel",false); //$NON-NLS-1$ + setControlEnabled("Entry",false); //$NON-NLS-1$ + setControlEnabled("Edit",false); //$NON-NLS-1$ + setControlEnabled("Insert",false); //$NON-NLS-1$ + setLabelText("EntryInformation",Messages.getString("BibTeXDialog.errorreadingfile")); //$NON-NLS-1$ //$NON-NLS-2$ } } } @@ -310,17 +310,17 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti BibMark bibMark = getCurrentEntry(); if (bibMark!=null) { String sAuthor = bibMark.getField(EntryType.author); - if (sAuthor==null) { sAuthor = ""; } + if (sAuthor==null) { sAuthor = ""; } //$NON-NLS-1$ String sTitle = bibMark.getField(EntryType.title); - if (sTitle==null) { sTitle = ""; } + if (sTitle==null) { sTitle = ""; } //$NON-NLS-1$ String sPublisher = bibMark.getField(EntryType.publisher); - if (sPublisher==null) { sPublisher = ""; } + if (sPublisher==null) { sPublisher = ""; } //$NON-NLS-1$ String sYear = bibMark.getField(EntryType.year); - if (sYear==null) { sYear = ""; } - setLabelText("EntryInformation", sAuthor+"\n"+sTitle+"\n"+sPublisher+"\n"+sYear); + if (sYear==null) { sYear = ""; } //$NON-NLS-1$ + setLabelText("EntryInformation", sAuthor+"\n"+sTitle+"\n"+sPublisher+"\n"+sYear); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } else { - setLabelText("EntryInformation", "No information"); + setLabelText("EntryInformation", Messages.getString("BibTeXDialog.noinformation")); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -333,12 +333,12 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti private void newFile() { String sFileName = getFileName(); if (sFileName!=null) { - if (!sFileName.equals(".bib")) { + if (!sFileName.equals(".bib")) { //$NON-NLS-1$ File file = new File(bibTeXDirectory,sFileName); try { if (!file.createNewFile() && xFrame!=null) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","The file "+sFileName+" already exists"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.thefile")+" "+sFileName+" "+Messages.getString("BibTeXDialog.alreadyexists")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } reload(sFileName); } catch (IOException e) { @@ -346,7 +346,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } else if (xFrame!=null) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","The file name is empty"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.filenameempty")); //$NON-NLS-1$ //$NON-NLS-2$ } } } @@ -356,17 +356,17 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti XDialog xDialog=getNewDialog(); if (xDialog!=null) { DialogAccess ndlg = new DialogAccess(xDialog); - ndlg.setListBoxStringItemList("Name", new String[0]); + ndlg.setListBoxStringItemList("Name", new String[0]); //$NON-NLS-1$ String sResult = null; if (xDialog.execute()==ExecutableDialogResults.OK) { DialogAccess dlg = new DialogAccess(xDialog); - sResult = dlg.getTextFieldText("Name"); + sResult = dlg.getTextFieldText("Name"); //$NON-NLS-1$ } xDialog.endExecute(); - if (sResult!=null && !sResult.toLowerCase().endsWith(".bib")) { - sResult = sResult+".bib"; + if (sResult!=null && !sResult.toLowerCase().endsWith(".bib")) { //$NON-NLS-1$ + sResult = sResult+".bib"; //$NON-NLS-1$ } - return Misc.makeTeXFriendly(sResult,"bibliography"); + return Misc.makeTeXFriendly(sResult,"bibliography"); //$NON-NLS-1$ } return null; } @@ -375,10 +375,10 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti protected XDialog getNewDialog() { XMultiComponentFactory xMCF = xContext.getServiceManager(); try { - Object provider = xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider2", xContext); + Object provider = xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider2", xContext); //$NON-NLS-1$ XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime.queryInterface(XDialogProvider2.class, provider); - String sDialogUrl = "vnd.sun.star.script:"+getDialogLibraryName()+".NewDialog?location=application"; + String sDialogUrl = "vnd.sun.star.script:"+getDialogLibraryName()+".NewDialog?location=application"; //$NON-NLS-1$ //$NON-NLS-2$ return xDialogProvider.createDialog(sDialogUrl); } catch (Exception e) { @@ -388,7 +388,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Edit the currently selected BibTeX file, if any private void edit() { - int nFile = getListBoxSelectedItem("File"); + int nFile = getListBoxSelectedItem("File"); //$NON-NLS-1$ if (nFile>=0) { if (files[nFile].exists()) { edit(files[nFile]); @@ -399,9 +399,9 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Helper function: Get the currently selected entry, or null if none is selected private BibMark getCurrentEntry() { BibMark bibMark = null; - int nEntry = getListBoxSelectedItem("Entry"); + int nEntry = getListBoxSelectedItem("Entry"); //$NON-NLS-1$ if (nEntry>=0) { - String[] sCurrentKeys = getListBoxStringItemList("Entry"); + String[] sCurrentKeys = getListBoxStringItemList("Entry"); //$NON-NLS-1$ String sKey = sCurrentKeys[nEntry]; bibMark = currentFile.getEntries().get(sKey); } @@ -419,13 +419,13 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti } catch (IOException e) { if (xFrame!=null) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","Error: Failed to open file with BibTeX editor"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.failedbibtexeditor")); //$NON-NLS-1$ //$NON-NLS-2$ } } } else if (xFrame!=null) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","Error: No BibTeX editor was found"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.nobibtexeditor")); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -449,7 +449,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti XTextField xTextField = (XTextField) AnyConverter.toObject(XTextField.class, elm); if (xTextField!=null) { XServiceInfo xInfo = UnoRuntime.queryInterface(XServiceInfo.class, xTextField); - if (xInfo.supportsService("com.sun.star.text.TextField.Bibliography")) { + if (xInfo.supportsService("com.sun.star.text.TextField.Bibliography")) { //$NON-NLS-1$ String sId = updateBibField(xTextField, readers); if (sId!=null) { notUpdated.add(sId); @@ -474,7 +474,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti if (AnyConverter.isObject(indexElm)) { XDocumentIndex xDocumentIndex = (XDocumentIndex) AnyConverter.toObject(XDocumentIndex.class, indexElm); if (xDocumentIndex!=null) { - if ("com.sun.star.text.Bibliography".equals(xDocumentIndex.getServiceName())) { + if ("com.sun.star.text.Bibliography".equals(xDocumentIndex.getServiceName())) { //$NON-NLS-1$ xDocumentIndex.update(); } } @@ -488,10 +488,10 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti if (xFrame!=null) { MessageBox msgBox = new MessageBox(xContext, xFrame); if (notUpdated.isEmpty()) { - msgBox.showMessage("Writer2LaTeX","All bibliography fields were updated"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.allbibfieldsupdated")); //$NON-NLS-1$ //$NON-NLS-2$ } else { - msgBox.showMessage("Writer2LaTeX","The following bibliography fields were not updated:\n"+notUpdated.toString()); + msgBox.showMessage("Writer2LaTeX",Messages.getString("BibTeXDialog.bibfieldsnotupdated")+":\n"+notUpdated.toString()); //$NON-NLS-1$ //$NON-NLS-2$ } } } @@ -517,18 +517,18 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextField); if (xPropSet!=null) { try { - Object fieldsObj = xPropSet.getPropertyValue("Fields"); + Object fieldsObj = xPropSet.getPropertyValue("Fields"); if (fieldsObj!=null && fieldsObj instanceof PropertyValue[]) { PropertyValue[] props = (PropertyValue[]) fieldsObj; for (PropertyValue prop : props) { - if ("Identifier".equals(prop.Name)) { + if ("Identifier".equals(prop.Name)) { if (prop.Value instanceof String) { String sIdentifier = (String)prop.Value; for (BibTeXReader reader : readers) { if (reader.getEntries().keySet().contains(sIdentifier)) { BibMark bibMark = reader.getEntries().get(sIdentifier); try { - xPropSet.setPropertyValue("Fields", createBibliographyFields(bibMark)); + xPropSet.setPropertyValue("Fields", createBibliographyFields(bibMark)); return null; } catch (IllegalArgumentException e) { } catch (PropertyVetoException e) { @@ -569,17 +569,17 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Use the service factory to create a bibliography field XDependentTextField xBibField = UnoRuntime.queryInterface ( - XDependentTextField.class, xDocFactory.createInstance("com.sun.star.text.textfield.Bibliography")); + XDependentTextField.class, xDocFactory.createInstance("com.sun.star.text.textfield.Bibliography")); // Create a field master for the field XPropertySet xMasterPropSet = UnoRuntime.queryInterface( - XPropertySet.class, xDocFactory.createInstance("com.sun.star.text.fieldmaster.Bibliography")); + XPropertySet.class, xDocFactory.createInstance("com.sun.star.text.fieldmaster.Bibliography")); // Populate the bibliography field XPropertySet xPropSet = UnoRuntime.queryInterface( XPropertySet.class, xBibField); PropertyValue[] fields = createBibliographyFields(bibMark); - xPropSet.setPropertyValue("Fields", fields); + xPropSet.setPropertyValue("Fields", fields); // Attach the field master to the bibliography field xBibField.attachTextFieldMaster(xMasterPropSet); @@ -597,10 +597,10 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti PropertyValue[] fields = new PropertyValue[entryTypes.length+2]; fields[0] = new PropertyValue(); - fields[0].Name="Identifier"; + fields[0].Name="Identifier"; fields[0].Value=bibMark.getIdentifier(); fields[1] = new PropertyValue(); - fields[1].Name="BibiliographicType"; // sic! (API typo) + fields[1].Name="BibiliographicType"; // sic! (API typo) fields[1].Value=new Short(getBibliographicType(bibMark.getEntryType())); int i=1; @@ -608,7 +608,7 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti fields[++i] = new PropertyValue(); fields[i].Name = getFieldName(entryType); String sValue = bibMark.getField(entryType); - fields[i].Value = sValue!=null ? bibMark.getField(entryType) : ""; + fields[i].Value = sValue!=null ? bibMark.getField(entryType) : ""; } return fields; @@ -617,35 +617,35 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Translate entry type to field name private String getFieldName(EntryType entryType) { switch(entryType) { - case address: return "Address"; - case annote: return "Annote"; - case author: return "Author"; - case booktitle: return "Booktitle"; - case chapter : return "Chapter"; - case edition: return "Edition"; - case editor: return "Editor"; - case howpublished: return "Howpublished"; - case institution: return "Institution"; - case journal: return "Journal"; - case month: return "Month"; - case note: return "Note"; - case number: return "Number"; - case organizations: return "Organizations"; - case pages: return "Pages"; - case publisher: return "Publisher"; - case school: return "School"; - case series: return "Series"; - case title: return "Title"; - case report_type: return "Report_Type"; - case volume: return "Volume"; - case year: return "Year"; - case url: return "URL"; - case custom1: return "Custom1"; - case custom2: return "Custom2"; - case custom3: return "Custom3"; - case custom4: return "Custom4"; - case custom5: return "Custom5"; - case isbn: return "ISBN"; + case address: return "Address"; + case annote: return "Annote"; + case author: return "Author"; + case booktitle: return "Booktitle"; + case chapter : return "Chapter"; + case edition: return "Edition"; + case editor: return "Editor"; + case howpublished: return "Howpublished"; + case institution: return "Institution"; + case journal: return "Journal"; + case month: return "Month"; + case note: return "Note"; + case number: return "Number"; + case organizations: return "Organizations"; + case pages: return "Pages"; + case publisher: return "Publisher"; + case school: return "School"; + case series: return "Series"; + case title: return "Title"; + case report_type: return "Report_Type"; + case volume: return "Volume"; + case year: return "Year"; + case url: return "URL"; + case custom1: return "Custom1"; + case custom2: return "Custom2"; + case custom3: return "Custom3"; + case custom4: return "Custom4"; + case custom5: return "Custom5"; + case isbn: return "ISBN"; default: return null; } } @@ -653,70 +653,70 @@ public class BibTeXDialog extends DialogBase implements com.sun.star.lang.XIniti // Translate bibliographic type to internal code private short getBibliographicType(String sBibType) { String s = sBibType.toUpperCase(); - if ("ARTICLE".equals(s)) { + if ("ARTICLE".equals(s)) { return (short)0; } - else if ("BOOK".equals(s)) { + else if ("BOOK".equals(s)) { return (short)1; } - else if ("BOOKLET".equals(s)) { + else if ("BOOKLET".equals(s)) { return (short)2; } - else if ("CONFERENCE".equals(s)) { + else if ("CONFERENCE".equals(s)) { return (short)3; } - else if ("INBOOK".equals(s)) { + else if ("INBOOK".equals(s)) { return (short)4; } - else if ("INCOLLECTION".equals(s)) { + else if ("INCOLLECTION".equals(s)) { return (short)5; } - else if ("INPROCEEDINGS".equals(s)) { + else if ("INPROCEEDINGS".equals(s)) { return (short)6; } - else if ("JOURNAL".equals(s)) { + else if ("JOURNAL".equals(s)) { return (short)7; } - else if ("MANUAL".equals(s)) { + else if ("MANUAL".equals(s)) { return (short)8; } - else if ("MASTERSTHESIS".equals(s)) { + else if ("MASTERSTHESIS".equals(s)) { return (short)9; } - else if ("MISC".equals(s)) { + else if ("MISC".equals(s)) { return (short)10; } - else if ("PHDTHESIS".equals(s)) { + else if ("PHDTHESIS".equals(s)) { return (short)11; } - else if ("PROCEEDINGS".equals(s)) { + else if ("PROCEEDINGS".equals(s)) { return (short)12; } - else if ("TECHREPORT".equals(s)) { + else if ("TECHREPORT".equals(s)) { return (short)13; } - else if ("UNPUBLISHED".equals(s)) { + else if ("UNPUBLISHED".equals(s)) { return (short)14; } - else if ("EMAIL".equals(s)) { + else if ("EMAIL".equals(s)) { return (short)15; } - else if ("WWW".equals(s)) { + else if ("WWW".equals(s)) { return (short)16; } - else if ("CUSTOM1".equals(s)) { + else if ("CUSTOM1".equals(s)) { return (short)17; } - else if ("CUSTOM2".equals(s)) { + else if ("CUSTOM2".equals(s)) { return (short)18; } - else if ("CUSTOM3".equals(s)) { + else if ("CUSTOM3".equals(s)) { return (short)19; } - else if ("CUSTOM4".equals(s)) { + else if ("CUSTOM4".equals(s)) { return (short)20; } - else if ("CUSTOM5".equals(s)) { + else if ("CUSTOM5".equals(s)) { return (short)21; } else { diff --git a/source/java/org/openoffice/da/comp/writer2latex/BibliographyDialog.java b/source/java/org/openoffice/da/comp/writer2latex/BibliographyDialog.java index 05f9148..e0579d1 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/BibliographyDialog.java +++ b/source/java/org/openoffice/da/comp/writer2latex/BibliographyDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-02-18) + * Version 1.6 (2015-05-29) * */ @@ -60,18 +60,18 @@ public final class BibliographyDialog extends WeakBase implements XServiceInfo, XContainerWindowEventHandler { - public static final String REGISTRY_PATH = "/org.openoffice.da.Writer2LaTeX.toolbar.ToolbarOptions/BibliographyOptions"; + public static final String REGISTRY_PATH = "/org.openoffice.da.Writer2LaTeX.toolbar.ToolbarOptions/BibliographyOptions"; //$NON-NLS-1$ private XComponentContext xContext; private FolderPicker folderPicker; /** The component will be registered under this name. */ - public static String __serviceName = "org.openoffice.da.writer2latex.BibliographyDialog"; + public static String __serviceName = "org.openoffice.da.writer2latex.BibliographyDialog"; //$NON-NLS-1$ /** The component should also have an implementation name. */ - public static String __implementationName = "org.openoffice.da.comp.writer2latex.BibliographyDialog"; + public static String __implementationName = "org.openoffice.da.comp.writer2latex.BibliographyDialog"; //$NON-NLS-1$ /** Create a new ConfigurationDialog */ public BibliographyDialog(XComponentContext xContext) { @@ -87,25 +87,25 @@ public final class BibliographyDialog DialogAccess dlg = new DialogAccess(xDialog); try { - if (sMethod.equals("external_event") ){ + if (sMethod.equals("external_event") ){ //$NON-NLS-1$ return handleExternalEvent(dlg, event); } - else if (sMethod.equals("ConvertZoteroCitationsChange")) { + else if (sMethod.equals("ConvertZoteroCitationsChange")) { //$NON-NLS-1$ return convertZoteroCitationsChange(dlg); } - else if (sMethod.equals("ConvertJabRefCitationsChange")) { + else if (sMethod.equals("ConvertJabRefCitationsChange")) { //$NON-NLS-1$ return convertJabRefCitationsChange(dlg); } - else if (sMethod.equals("UseExternalBibTeXFilesChange")) { + else if (sMethod.equals("UseExternalBibTeXFilesChange")) { //$NON-NLS-1$ return useExternalBibTeXFilesChange(dlg); } - else if (sMethod.equals("UseNatbibChange")) { + else if (sMethod.equals("UseNatbibChange")) { //$NON-NLS-1$ return useNatbibChange(dlg); } - else if (sMethod.equals("BibTeXLocationChange")) { + else if (sMethod.equals("BibTeXLocationChange")) { //$NON-NLS-1$ return bibTeXLocationChange(dlg); } - else if (sMethod.equals("BibTeXDirClick")) { + else if (sMethod.equals("BibTeXDirClick")) { //$NON-NLS-1$ return bibTeXDirClick(dlg); } } @@ -119,8 +119,8 @@ public final class BibliographyDialog } public String[] getSupportedMethodNames() { - String[] sNames = { "external_event", "UseExternalBibTeXFilesChange", "ConvertZoteroCitationsChange", - "ConvertJabRefCitationsChange", "UseNatbibChange", "BibTeXLocationChange", "ExternalBibTeXDirClick" }; + String[] sNames = { "external_event", "UseExternalBibTeXFilesChange", "ConvertZoteroCitationsChange", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + "ConvertJabRefCitationsChange", "UseNatbibChange", "BibTeXLocationChange", "ExternalBibTeXDirClick" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ return sNames; } @@ -144,10 +144,10 @@ public final class BibliographyDialog throws com.sun.star.uno.Exception { try { String sMethod = AnyConverter.toString(aEventObject); - if (sMethod.equals("ok")) { + if (sMethod.equals("ok")) { //$NON-NLS-1$ saveConfiguration(dlg); return true; - } else if (sMethod.equals("back") || sMethod.equals("initialize")) { + } else if (sMethod.equals("back") || sMethod.equals("initialize")) { //$NON-NLS-1$ //$NON-NLS-2$ loadConfiguration(dlg); enableBibTeXSettings(dlg); useNatbibChange(dlg); @@ -156,7 +156,7 @@ public final class BibliographyDialog } 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); + "Method external_event requires a string in the event object argument.", this,(short) -1); //$NON-NLS-1$ } return false; } @@ -167,22 +167,22 @@ public final class BibliographyDialog try { Object view = registry.getRegistryView(REGISTRY_PATH, false); XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - dlg.setCheckBoxStateAsBoolean("UseExternalBibTeXFiles", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles")); - dlg.setCheckBoxStateAsBoolean("ConvertZoteroCitations", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")); - dlg.setCheckBoxStateAsBoolean("ConvertJabRefCitations", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertJabRefCitations")); - dlg.setCheckBoxStateAsBoolean("IncludeOriginalCitations", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "IncludeOriginalCitations")); - dlg.setListBoxSelectedItem("BibTeXLocation", - XPropertySetHelper.getPropertyValueAsShort(xProps, "BibTeXLocation")); - dlg.setTextFieldText("BibTeXDir", - XPropertySetHelper.getPropertyValueAsString(xProps, "BibTeXDir")); - dlg.setCheckBoxStateAsBoolean("UseNatbib", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseNatbib")); - dlg.setTextFieldText("NatbibOptions", - XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); + dlg.setCheckBoxStateAsBoolean("UseExternalBibTeXFiles", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles")); //$NON-NLS-1$ + dlg.setCheckBoxStateAsBoolean("ConvertZoteroCitations", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")); //$NON-NLS-1$ + dlg.setCheckBoxStateAsBoolean("ConvertJabRefCitations", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertJabRefCitations")); //$NON-NLS-1$ + dlg.setCheckBoxStateAsBoolean("IncludeOriginalCitations", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "IncludeOriginalCitations")); //$NON-NLS-1$ + dlg.setListBoxSelectedItem("BibTeXLocation", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsShort(xProps, "BibTeXLocation")); //$NON-NLS-1$ + dlg.setTextFieldText("BibTeXDir", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsString(xProps, "BibTeXDir")); //$NON-NLS-1$ + dlg.setCheckBoxStateAsBoolean("UseNatbib", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseNatbib")); //$NON-NLS-1$ + dlg.setTextFieldText("NatbibOptions", //$NON-NLS-1$ + XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); //$NON-NLS-1$ registry.disposeRegistryView(view); } catch (Exception e) { @@ -200,14 +200,14 @@ public final class BibliographyDialog try { Object view = registry.getRegistryView(REGISTRY_PATH, true); XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - XPropertySetHelper.setPropertyValue(xProps, "UseExternalBibTeXFiles", dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles")); - XPropertySetHelper.setPropertyValue(xProps, "ConvertZoteroCitations", dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations")); - XPropertySetHelper.setPropertyValue(xProps, "ConvertJabRefCitations", dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations")); - XPropertySetHelper.setPropertyValue(xProps, "IncludeOriginalCitations", dlg.getCheckBoxStateAsBoolean("IncludeOriginalCitations")); - XPropertySetHelper.setPropertyValue(xProps, "BibTeXLocation", dlg.getListBoxSelectedItem("BibTeXLocation")); - XPropertySetHelper.setPropertyValue(xProps, "BibTeXDir", dlg.getTextFieldText("BibTeXDir")); - XPropertySetHelper.setPropertyValue(xProps, "UseNatbib", dlg.getCheckBoxStateAsBoolean("UseNatbib")); - XPropertySetHelper.setPropertyValue(xProps, "NatbibOptions", dlg.getTextFieldText("NatbibOptions")); + XPropertySetHelper.setPropertyValue(xProps, "UseExternalBibTeXFiles", dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "ConvertZoteroCitations", dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "ConvertJabRefCitations", dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "IncludeOriginalCitations", dlg.getCheckBoxStateAsBoolean("IncludeOriginalCitations")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "BibTeXLocation", dlg.getListBoxSelectedItem("BibTeXLocation")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "BibTeXDir", dlg.getTextFieldText("BibTeXDir")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "UseNatbib", dlg.getCheckBoxStateAsBoolean("UseNatbib")); //$NON-NLS-1$ //$NON-NLS-2$ + XPropertySetHelper.setPropertyValue(xProps, "NatbibOptions", dlg.getTextFieldText("NatbibOptions")); //$NON-NLS-1$ //$NON-NLS-2$ // Commit registry changes XChangesBatch xUpdateContext = (XChangesBatch) @@ -242,9 +242,9 @@ public final class BibliographyDialog } private boolean useNatbibChange(DialogAccess dlg) { - boolean bUseNatbib = dlg.getCheckBoxStateAsBoolean("UseNatbib"); - dlg.setControlEnabled("NatbibOptionsLabel", bUseNatbib); - dlg.setControlEnabled("NatbibOptions", bUseNatbib); + boolean bUseNatbib = dlg.getCheckBoxStateAsBoolean("UseNatbib"); //$NON-NLS-1$ + dlg.setControlEnabled("NatbibOptionsLabel", bUseNatbib); //$NON-NLS-1$ + dlg.setControlEnabled("NatbibOptions", bUseNatbib); //$NON-NLS-1$ return true; } @@ -254,28 +254,28 @@ public final class BibliographyDialog } private void enableBibTeXSettings(DialogAccess dlg) { - boolean bEnableSettings = dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles"); - boolean bEnableOriginalCitations = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations") - || dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations"); - boolean bEnableDir = dlg.getListBoxSelectedItem("BibTeXLocation")<2; - dlg.setControlEnabled("BibTeXLocationLabel", bEnableSettings); - dlg.setControlEnabled("BibTeXLocation", bEnableSettings); - dlg.setControlEnabled("BibTeXDirLabel", bEnableSettings && bEnableDir); - dlg.setControlEnabled("BibTeXDir", bEnableSettings && bEnableDir); - dlg.setControlEnabled("BibTeXDirButton", bEnableSettings && bEnableDir); - dlg.setControlEnabled("ConvertZoteroCitations", bEnableSettings); - dlg.setControlEnabled("ConvertJabRefCitations", bEnableSettings); - dlg.setControlEnabled("IncludeOriginalCitations", bEnableSettings && bEnableOriginalCitations); + boolean bEnableSettings = dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles"); //$NON-NLS-1$ + boolean bEnableOriginalCitations = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations") //$NON-NLS-1$ + || dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations"); //$NON-NLS-1$ + boolean bEnableDir = dlg.getListBoxSelectedItem("BibTeXLocation")<2; //$NON-NLS-1$ + dlg.setControlEnabled("BibTeXLocationLabel", bEnableSettings); //$NON-NLS-1$ + dlg.setControlEnabled("BibTeXLocation", bEnableSettings); //$NON-NLS-1$ + dlg.setControlEnabled("BibTeXDirLabel", bEnableSettings && bEnableDir); //$NON-NLS-1$ + dlg.setControlEnabled("BibTeXDir", bEnableSettings && bEnableDir); //$NON-NLS-1$ + dlg.setControlEnabled("BibTeXDirButton", bEnableSettings && bEnableDir); //$NON-NLS-1$ + dlg.setControlEnabled("ConvertZoteroCitations", bEnableSettings); //$NON-NLS-1$ + dlg.setControlEnabled("ConvertJabRefCitations", bEnableSettings); //$NON-NLS-1$ + dlg.setControlEnabled("IncludeOriginalCitations", bEnableSettings && bEnableOriginalCitations); //$NON-NLS-1$ } private String getDocumentDirURL() { // Get the desktop from the service manager Object desktop=null; try { - desktop = xContext.getServiceManager().createInstanceWithContext("com.sun.star.frame.Desktop", xContext); + desktop = xContext.getServiceManager().createInstanceWithContext("com.sun.star.frame.Desktop", xContext); //$NON-NLS-1$ } catch (Exception e) { // Failed to get the desktop service - return ""; + return ""; //$NON-NLS-1$ } XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, desktop); @@ -283,25 +283,25 @@ public final class BibliographyDialog if (xDesktop!=null) { XComponent xComponent = xDesktop.getCurrentComponent(); XServiceInfo xInfo = (XServiceInfo)UnoRuntime.queryInterface(XServiceInfo.class, xComponent); - if (xInfo!=null && xInfo.supportsService("com.sun.star.text.TextDocument")) { + if (xInfo!=null && xInfo.supportsService("com.sun.star.text.TextDocument")) { //$NON-NLS-1$ // Get the model, which provides the URL XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xComponent); if (xModel!=null) { String sURL = xModel.getURL(); int nSlash = sURL.lastIndexOf('/'); - return nSlash>-1 ? sURL.substring(0, nSlash) : ""; + return nSlash>-1 ? sURL.substring(0, nSlash) : ""; //$NON-NLS-1$ } } } - return ""; + return ""; //$NON-NLS-1$ } private boolean hasBibTeXFiles(File dir) { if (dir.isDirectory()) { File[] files = dir.listFiles(); for (File file : files) { - if (file.isFile() && file.getName().endsWith(".bib")) { + if (file.isFile() && file.getName().endsWith(".bib")) { //$NON-NLS-1$ return true; } } @@ -315,7 +315,7 @@ public final class BibliographyDialog try { File bibDir = new File(new URI(sPath)); String sBibPath = bibDir.getCanonicalPath(); - if (dlg.getListBoxSelectedItem("BibTeXLocation")==1) { + if (dlg.getListBoxSelectedItem("BibTeXLocation")==1) { //$NON-NLS-1$ // Path relative to document directory, remove the document directory part String sDocumentDirURL = getDocumentDirURL(); if (sDocumentDirURL.length()>0) { @@ -325,18 +325,18 @@ public final class BibliographyDialog sBibPath = sBibPath.substring(sDocumentDirPath.length()+1); } else { // Same as document directory - sBibPath = ""; + sBibPath = ""; //$NON-NLS-1$ } } else { // not a subdirectory - sBibPath = ""; + sBibPath = ""; //$NON-NLS-1$ } } } - dlg.setTextFieldText("BibTeXDir", sBibPath); + dlg.setTextFieldText("BibTeXDir", sBibPath); //$NON-NLS-1$ if (!hasBibTeXFiles(bibDir)) { MessageBox msgBox = new MessageBox(xContext); - msgBox.showMessage("Writer2LaTeX", "Warning: The selected directory does not contain any BibTeX files"); + msgBox.showMessage("Writer2LaTeX", Messages.getString("BibliographyDialog.nobibtexfiles")); //$NON-NLS-1$ //$NON-NLS-2$ } } catch (IOException e) { diff --git a/source/java/org/openoffice/da/comp/writer2latex/ExternalApps.java b/source/java/org/openoffice/da/comp/writer2latex/ExternalApps.java index 17e9a3f..b8a328c 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/ExternalApps.java +++ b/source/java/org/openoffice/da/comp/writer2latex/ExternalApps.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-05-19) + * Version 1.6 (2015-05-29) * */ @@ -58,16 +58,16 @@ public class ExternalApps { public final static short BUILD = (short)1; public final static short PREVIEW = (short)2; - public final static String LATEX = "LaTeX"; - public final static String PDFLATEX = "PdfLaTeX"; - public final static String XELATEX = "XeLaTeX"; - public final static String BIBTEX = "BibTeX"; - public final static String MAKEINDEX = "Makeindex"; - public final static String MK4HT = "Mk4ht"; - public final static String DVIPS = "Dvips"; - public final static String DVIVIEWER = "DVIViewer"; - public final static String POSTSCRIPTVIEWER = "PostscriptViewer"; - public final static String PDFVIEWER = "PdfViewer"; + public final static String LATEX = "LaTeX"; //$NON-NLS-1$ + public final static String PDFLATEX = "PdfLaTeX"; //$NON-NLS-1$ + public final static String XELATEX = "XeLaTeX"; //$NON-NLS-1$ + public final static String BIBTEX = "BibTeX"; //$NON-NLS-1$ + public final static String MAKEINDEX = "Makeindex"; //$NON-NLS-1$ + public final static String MK4HT = "Mk4ht"; //$NON-NLS-1$ + public final static String DVIPS = "Dvips"; //$NON-NLS-1$ + public final static String DVIVIEWER = "DVIViewer"; //$NON-NLS-1$ + public final static String POSTSCRIPTVIEWER = "PostscriptViewer"; //$NON-NLS-1$ + public final static String PDFVIEWER = "PdfViewer"; //$NON-NLS-1$ private final static String[] sApps = { LATEX, PDFLATEX, XELATEX, BIBTEX, MAKEINDEX, MK4HT, DVIPS, DVIVIEWER, POSTSCRIPTVIEWER, PDFVIEWER }; @@ -84,11 +84,29 @@ public class ExternalApps { apps = new HashMap(); defaultApps = new HashSet(); for (int i=0; i command = new Vector(); command.add(sApp[0]); - String[] sArguments = sApp[1].split(" "); + String[] sArguments = sApp[1].split(" "); //$NON-NLS-1$ for (String s : sArguments) { - command.add(s.replace("%c",sCommand).replace("%s",sFileName)); + command.add(s.replace("%c",sCommand).replace("%s",sFileName)); //$NON-NLS-1$ //$NON-NLS-2$ } ProcessBuilder pb = new ProcessBuilder(command); @@ -216,11 +234,11 @@ public class ExternalApps { // Gobble the error stream of the application StreamGobbler errorGobbler = new - StreamGobbler(proc.getErrorStream(), "ERROR"); + StreamGobbler(proc.getErrorStream(), "ERROR"); //$NON-NLS-1$ // Gobble the output stream of the application StreamGobbler outputGobbler = new - StreamGobbler(proc.getInputStream(), "OUTPUT"); + StreamGobbler(proc.getInputStream(), "OUTPUT"); //$NON-NLS-1$ // Kick them off errorGobbler.start(); @@ -244,7 +262,7 @@ public class ExternalApps { Object view; try { // Prepare registry view - view = registry.getRegistryView("/org.openoffice.da.Writer2LaTeX.toolbar.ToolbarOptions/Applications",false); + view = registry.getRegistryView("/org.openoffice.da.Writer2LaTeX.toolbar.ToolbarOptions/Applications",false); //$NON-NLS-1$ } catch (com.sun.star.uno.Exception e) { // Give up... @@ -252,15 +270,15 @@ public class ExternalApps { } XPropertySet xSimpleProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - nLevel = XPropertySetHelper.getPropertyValueAsShort(xSimpleProps,"AfterExport"); + nLevel = XPropertySetHelper.getPropertyValueAsShort(xSimpleProps,"AfterExport"); //$NON-NLS-1$ XMultiHierarchicalPropertySet xProps = (XMultiHierarchicalPropertySet) UnoRuntime.queryInterface(XMultiHierarchicalPropertySet.class, view); for (int i=0; i0) { // The separator character in BIBINPUTS is OS specific sBibinputs = sBibTeXDir+File.pathSeparatorChar; } - filterHelper.put("use_natbib", Boolean.toString(XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseNatbib"))); - filterHelper.put("natbib_options", XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); + filterHelper.put("use_natbib", Boolean.toString(XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseNatbib"))); //$NON-NLS-1$ //$NON-NLS-2$ + filterHelper.put("natbib_options", XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); //$NON-NLS-1$ //$NON-NLS-2$ - mediaHelper.put("FilterData",filterHelper.toArray()); + mediaHelper.put("FilterData",filterHelper.toArray()); //$NON-NLS-1$ PropertyValue[] newMediaProps = mediaHelper.toArray(); registry.disposeRegistryView(view); return newMediaProps; @@ -147,27 +147,27 @@ public class LaTeXUNOPublisher extends UNOPublisher { boolean bResult = true; try { - if (sBackend=="pdftex") { + if (sBackend=="pdftex") { //$NON-NLS-1$ bResult = texify.process(file, sBibinputs, TeXify.PDFTEX, true); } - else if (sBackend=="dvips") { + else if (sBackend=="dvips") { //$NON-NLS-1$ bResult = texify.process(file, sBibinputs, TeXify.DVIPS, true); } - else if (sBackend=="xetex") { + else if (sBackend=="xetex") { //$NON-NLS-1$ bResult = texify.process(file, sBibinputs, TeXify.XETEX, true); } - else if (sBackend=="generic") { + else if (sBackend=="generic") { //$NON-NLS-1$ bResult = texify.process(file, sBibinputs, TeXify.GENERIC, true); } } catch (IOException e) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","Error: "+e.getMessage()); + msgBox.showMessage("Writer2LaTeX",Messages.getString("LaTeXUNOPublisher.error")+": "+e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ } if (!bResult) { MessageBox msgBox = new MessageBox(xContext, xFrame); - msgBox.showMessage("Writer2LaTeX","Error: Failed to execute LaTeX - see log for details"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("LaTeXUNOPublisher.error")+": "+Messages.getString("LaTeXUNOPublisher.failedlatex")); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -191,10 +191,10 @@ public class LaTeXUNOPublisher extends UNOPublisher { else { return null; } - CSVList filelist = new CSVList(","); + CSVList filelist = new CSVList(","); //$NON-NLS-1$ if (files!=null) { for (File file : files) { - if (file.isFile() && file.getName().endsWith(".bib")) { + if (file.isFile() && file.getName().endsWith(".bib")) { //$NON-NLS-1$ filelist.addValue(Misc.removeExtension(file.getName())); } } diff --git a/source/java/org/openoffice/da/comp/writer2latex/Messages.java b/source/java/org/openoffice/da/comp/writer2latex/Messages.java new file mode 100644 index 0000000..36b6751 --- /dev/null +++ b/source/java/org/openoffice/da/comp/writer2latex/Messages.java @@ -0,0 +1,47 @@ +/************************************************************************ + * + * Messages.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-2015 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.6 (2015-05-29) + * + */ +package org.openoffice.da.comp.writer2latex; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class Messages { + private static final String BUNDLE_NAME = "org.openoffice.da.comp.writer2latex.messages"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle + .getBundle(BUNDLE_NAME); + + private Messages() { + } + + public static String getString(String key) { + try { + return RESOURCE_BUNDLE.getString(key); + } catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/source/java/org/openoffice/da/comp/writer2latex/TeXify.java b/source/java/org/openoffice/da/comp/writer2latex/TeXify.java index 24f7352..f843df8 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/TeXify.java +++ b/source/java/org/openoffice/da/comp/writer2latex/TeXify.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-05-14) + * Version 1.6 (2015-05-29) * */ @@ -85,7 +85,7 @@ public final class TeXify { */ public boolean process(File file, String sBibinputs, short nBackend, boolean bView) throws IOException { // Remove extension from file - if (file.getName().endsWith(".tex")) { + if (file.getName().endsWith(".tex")) { //$NON-NLS-1$ file = new File(file.getParentFile(), file.getName().substring(0,file.getName().length()-4)); } @@ -101,36 +101,36 @@ public final class TeXify { bResult = doTeXify(genericTexify, file, sBibinputs); if (!bResult) return false; if (bPreview && externalApps.execute(ExternalApps.DVIVIEWER, - new File(file.getParentFile(),file.getName()+".dvi").getPath(), + new File(file.getParentFile(),file.getName()+".dvi").getPath(), //$NON-NLS-1$ file.getParentFile(), null, false)>0) { - throw new IOException("Error executing dvi viewer"); + throw new IOException(Messages.getString("TeXify.dviviewerror")); //$NON-NLS-1$ } } else if (nBackend==PDFTEX) { bResult = doTeXify(pdfTexify, file, sBibinputs); if (!bResult) return false; if (bPreview && externalApps.execute(ExternalApps.PDFVIEWER, - new File(file.getParentFile(),file.getName()+".pdf").getPath(), + new File(file.getParentFile(),file.getName()+".pdf").getPath(), //$NON-NLS-1$ file.getParentFile(), null, false)>0) { - throw new IOException("Error executing pdf viewer"); + throw new IOException(Messages.getString("TeXify.pdfviewerror")); //$NON-NLS-1$ } } else if (nBackend==DVIPS) { bResult = doTeXify(dvipsTexify, file, sBibinputs); if (!bResult) return false; if (bPreview && externalApps.execute(ExternalApps.POSTSCRIPTVIEWER, - new File(file.getParentFile(),file.getName()+".ps").getPath(), + new File(file.getParentFile(),file.getName()+".ps").getPath(), //$NON-NLS-1$ file.getParentFile(), null, false)>0) { - throw new IOException("Error executing postscript viewer"); + throw new IOException(Messages.getString("TeXify.psviewerror")); //$NON-NLS-1$ } } else if (nBackend==XETEX) { bResult = doTeXify(xeTexify, file, sBibinputs); if (!bResult) return false; if (bPreview && externalApps.execute(ExternalApps.PDFVIEWER, - new File(file.getParentFile(),file.getName()+".pdf").getPath(), + new File(file.getParentFile(),file.getName()+".pdf").getPath(), //$NON-NLS-1$ file.getParentFile(), null, false)>0) { - throw new IOException("Error executing pdf viewer"); + throw new IOException(Messages.getString("TeXify.pdfviewerror")); //$NON-NLS-1$ } } return bResult; @@ -140,14 +140,14 @@ public final class TeXify { private boolean doTeXify(String[] sAppList, File file, String sBibinputs) throws IOException { // Remove the .aux file first (to avoid potential error messages) - File aux = new File(file.getParentFile(), file.getName()+".aux"); + File aux = new File(file.getParentFile(), file.getName()+".aux"); //$NON-NLS-1$ aux.delete(); for (int i=0; i env =null; if (ExternalApps.BIBTEX.equals(sAppList[i]) && sBibinputs!=null) { env = new HashMap(); - env.put("BIBINPUTS", sBibinputs); + env.put("BIBINPUTS", sBibinputs); //$NON-NLS-1$ } int nReturnCode = externalApps.execute( sAppList[i], file.getName(), file.getParentFile(), env, true); diff --git a/source/java/org/openoffice/da/comp/writer2latex/Writer2LaTeX.java b/source/java/org/openoffice/da/comp/writer2latex/Writer2LaTeX.java index 8634685..70e8ccc 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/Writer2LaTeX.java +++ b/source/java/org/openoffice/da/comp/writer2latex/Writer2LaTeX.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-02-18) + * Version 1.6 (2015-05-29) * */ @@ -50,7 +50,7 @@ public final class Writer2LaTeX extends WeakBase com.sun.star.lang.XInitialization, com.sun.star.frame.XDispatch { - private static final String PROTOCOL = "org.openoffice.da.writer2latex:"; + private static final String PROTOCOL = "org.openoffice.da.writer2latex:"; //$NON-NLS-1$ // From constructor+initialization private final XComponentContext m_xContext; @@ -58,7 +58,7 @@ public final class Writer2LaTeX extends WeakBase private LaTeXUNOPublisher unoPublisher = null; public static final String __implementationName = Writer2LaTeX.class.getName(); - public static final String __serviceName = "com.sun.star.frame.ProtocolHandler"; + public static final String __serviceName = "com.sun.star.frame.ProtocolHandler"; //$NON-NLS-1$ private static final String[] m_serviceNames = { __serviceName }; public Writer2LaTeX( XComponentContext xContext ) { @@ -99,11 +99,11 @@ public final class Writer2LaTeX extends WeakBase public com.sun.star.frame.XDispatch queryDispatch( com.sun.star.util.URL aURL, String sTargetFrameName, int iSearchFlags ) { if ( aURL.Protocol.compareTo(PROTOCOL) == 0 ) { - if ( aURL.Path.compareTo("ProcessDocument") == 0 ) + if ( aURL.Path.compareTo("ProcessDocument") == 0 ) //$NON-NLS-1$ return this; - else if ( aURL.Path.compareTo("ViewLog") == 0 ) + else if ( aURL.Path.compareTo("ViewLog") == 0 ) //$NON-NLS-1$ return this; - else if ( aURL.Path.compareTo("InsertBibTeX") == 0 ) + else if ( aURL.Path.compareTo("InsertBibTeX") == 0 ) //$NON-NLS-1$ return this; } return null; @@ -128,15 +128,15 @@ public final class Writer2LaTeX extends WeakBase public void dispatch( com.sun.star.util.URL aURL, com.sun.star.beans.PropertyValue[] aArguments ) { if ( aURL.Protocol.compareTo(PROTOCOL) == 0 ) { - if ( aURL.Path.compareTo("ProcessDocument") == 0 ) { + if ( aURL.Path.compareTo("ProcessDocument") == 0 ) { //$NON-NLS-1$ process(); return; } - else if ( aURL.Path.compareTo("ViewLog") == 0 ) { + else if ( aURL.Path.compareTo("ViewLog") == 0 ) { //$NON-NLS-1$ viewLog(); return; } - else if ( aURL.Path.compareTo("InsertBibTeX") == 0 ) { + else if ( aURL.Path.compareTo("InsertBibTeX") == 0 ) { //$NON-NLS-1$ insertBibTeX(); return; } @@ -167,7 +167,7 @@ public final class Writer2LaTeX extends WeakBase args[0] = unoPublisher.getTargetPath()+unoPublisher.getTargetFileName(); Object dialog = m_xContext.getServiceManager() .createInstanceWithArgumentsAndContext( - "org.openoffice.da.writer2latex.LogViewerDialog", args, m_xContext); + "org.openoffice.da.writer2latex.LogViewerDialog", args, m_xContext); //$NON-NLS-1$ XExecutableDialog xDialog = (XExecutableDialog) UnoRuntime.queryInterface(XExecutableDialog.class, dialog); if (xDialog.execute()==ExecutableDialogResults.OK) { @@ -191,7 +191,7 @@ public final class Writer2LaTeX extends WeakBase args[1] = unoPublisher.getBibTeXDirectory().getPath(); Object dialog = m_xContext.getServiceManager() .createInstanceWithArgumentsAndContext( - "org.openoffice.da.writer2latex.BibTeXDialog", args, m_xContext); + "org.openoffice.da.writer2latex.BibTeXDialog", args, m_xContext); //$NON-NLS-1$ XExecutableDialog xDialog = (XExecutableDialog) UnoRuntime.queryInterface(XExecutableDialog.class, dialog); if (xDialog.execute()==ExecutableDialogResults.OK) { @@ -204,7 +204,7 @@ public final class Writer2LaTeX extends WeakBase } else { MessageBox msgBox = new MessageBox(m_xContext, m_xFrame); - msgBox.showMessage("Writer2LaTeX","Writer2LaTeX is not configured to use external BibTeX files for citations"); + msgBox.showMessage("Writer2LaTeX",Messages.getString("Writer2LaTeX.bibtexnotenabled")); //$NON-NLS-1$ } } @@ -219,12 +219,12 @@ public final class Writer2LaTeX extends WeakBase return false; } XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - return XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles"); + return XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles"); //$NON-NLS-1$ } private void createUNOPublisher() { if (unoPublisher==null) { - unoPublisher = new LaTeXUNOPublisher(m_xContext,m_xFrame,"Writer2LaTeX"); + unoPublisher = new LaTeXUNOPublisher(m_xContext,m_xFrame,"Writer2LaTeX"); //$NON-NLS-1$ } } diff --git a/source/java/org/openoffice/da/comp/writer2latex/messages.properties b/source/java/org/openoffice/da/comp/writer2latex/messages.properties new file mode 100644 index 0000000..9d2bf78 --- /dev/null +++ b/source/java/org/openoffice/da/comp/writer2latex/messages.properties @@ -0,0 +1,34 @@ +ApplicationsDialog.configresults=Results of configuration +ApplicationsDialog.failedtofind=Failed to find +ApplicationsDialog.failedtofindmiktex=Failed to find MikTeX +ApplicationsDialog.found=Found +ApplicationsDialog.foundgsview=Found gsview +ApplicationsDialog.foundmiktex=Found MikTeX +ApplicationsDialog.miktexdefaultconfig=Writer2LaTeX has been configured to work if MikTeX is added to your path +ApplicationsDialog.ok=OK +ApplicationsDialog.pdfdefaultviewer=Using default application for PDF +ApplicationsDialog.psdefaultviewer=Using default application for PostScript +ApplicationsDialog.systemident=Your system identifies itself as +ApplicationsDialog.usingdefaultapp=Using default application as +ApplicationsDialog.version=version +BibliographyDialog.nobibtexfiles=Warning: The selected directory does not contain any BibTeX files +BibTeXDialog.allbibfieldsupdated=All bibliography fields were updated +BibTeXDialog.alreadyexists=already exists +BibTeXDialog.bibfieldsnotupdated=The following bibliography fields were not updated +BibTeXDialog.errorreadingfile=There was an error reading this file +BibTeXDialog.failedbibtexeditor=Error: Failed to open file with BibTeX editor +BibTeXDialog.filenameempty=The file name is empty +BibTeXDialog.nobibtexeditor=Error: No BibTeX editor was found +BibTeXDialog.nobibtexfiles=No BibTeX files were found +BibTeXDialog.noentries=This file does not contain any entries +BibTeXDialog.noinformation=No information +BibTeXDialog.thefile=The file +ExternalApps.dviviewer=DVI Viewer +ExternalApps.pdfviewer=PDF Viewer +ExternalApps.psviewer=PostScript Viewer +LaTeXUNOPublisher.error=Error +LaTeXUNOPublisher.failedlatex=Failed to execute LaTeX - see log for details +TeXify.dviviewerror=Error executing DVI viewer +TeXify.pdfviewerror=Error executing PDF viewer +TeXify.psviewerror=Error executing PostScript viewer +Writer2LaTeX.bibtexnotenabled=Writer2LaTeX is not configured to use external BibTeX files for citations diff --git a/source/java/org/openoffice/da/comp/writer2latex/messages_da.properties b/source/java/org/openoffice/da/comp/writer2latex/messages_da.properties new file mode 100644 index 0000000..aac8e96 --- /dev/null +++ b/source/java/org/openoffice/da/comp/writer2latex/messages_da.properties @@ -0,0 +1,34 @@ +ApplicationsDialog.configresults=Resultat af konfigurationen +ApplicationsDialog.failedtofind=Fandt ikke +ApplicationsDialog.failedtofindmiktex=Fandt ikke MikTeX +ApplicationsDialog.found=Fandt +ApplicationsDialog.foundgsview=Fandt gsview +ApplicationsDialog.foundmiktex=Fandt MikTeX +ApplicationsDialog.miktexdefaultconfig=Writer2LaTeX er blevet konfigureret så det virker hvis MikTeX tilføjes til din PATH +ApplicationsDialog.ok=o.k. +ApplicationsDialog.pdfdefaultviewer=Bruger standardprogram til PDF +ApplicationsDialog.psdefaultviewer=Bruger standardprogram til PostScript +ApplicationsDialog.systemident=Dit system identificerer sig som +ApplicationsDialog.usingdefaultapp=Bruger standardprogram som +ApplicationsDialog.version=version +BibliographyDialog.nobibtexfiles=Advarsel: Den valgte mappe indeholder ingen BibTeX filer +BibTeXDialog.allbibfieldsupdated=Alle litteraturlisteelementer blev opdateret +BibTeXDialog.alreadyexists=findes allerede +BibTeXDialog.bibfieldsnotupdated=Følgende litteraturlisteelementer blev ikke opdateret +BibTeXDialog.errorreadingfile=Der skete en fejl ved læsning af denne fil +BibTeXDialog.failedbibtexeditor=Fejl: Kunne ikke åbne filen med BibTeX-redigeringsprogrammet +BibTeXDialog.filenameempty=Filnavnet er tomt +BibTeXDialog.nobibtexeditor=Fejl: Kunne ikke finde et BibTeX-redigeringsprogram +BibTeXDialog.nobibtexfiles=Fandt ingen BibTeX filer +BibTeXDialog.noentries=Filen indeholder ingen elementer +BibTeXDialog.noinformation=Ingen information +BibTeXDialog.thefile=Filen +ExternalApps.dviviewer=DVI-fremviser +ExternalApps.pdfviewer=PDF-fremviser +ExternalApps.psviewer=PostScript-fremviser +LaTeXUNOPublisher.error=Fejl +LaTeXUNOPublisher.failedlatex=Kunne ikke køre LaTeX - se loggen for detaljer +TeXify.dviviewerror=Fejl ved åbning af DVI-fremviser +TeXify.pdfviewerror=Fejl ved åbning af PDF-fremviser +TeXify.psviewerror=Fejl ved åbning af PostScript-fremviser +Writer2LaTeX.bibtexnotenabled=Writer2LaTeX er ikke sat op til at bruge eksterne BibTeX-filer til litteraturhenvisninger diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index d900e1a..059ac45 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.6 (2015-05-19) + * Version 1.6 (2015-05-29) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.5.3"; - private static final String DATE = "2015-05-19"; + private static final String DATE = "2015-05-29"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)