diff --git a/src/com/webcodepro/applecommander/storage/filters/GutenbergFileFilter.java b/src/com/webcodepro/applecommander/storage/filters/GutenbergFileFilter.java index 430733d..9a4601c 100644 --- a/src/com/webcodepro/applecommander/storage/filters/GutenbergFileFilter.java +++ b/src/com/webcodepro/applecommander/storage/filters/GutenbergFileFilter.java @@ -21,14 +21,11 @@ package com.webcodepro.applecommander.storage.filters; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.StringTokenizer; import com.webcodepro.applecommander.storage.FileEntry; import com.webcodepro.applecommander.storage.FileFilter; import com.webcodepro.applecommander.ui.AppleCommander; -import com.webcodepro.applecommander.util.AppleUtil; /** * Extract the contents of an ancient word processor file (might be Word @@ -52,7 +49,7 @@ public class GutenbergFileFilter implements FileFilter { private static final int RENDER_AS_TEXT = 0; private static final int RENDER_AS_HTML = 1; private static final int RENDER_AS_RTF = 2; - private int rendering = RENDER_AS_HTML; + private int rendering = RENDER_AS_RTF; /** * Constructor for GutenbergFileFilter. */ @@ -108,8 +105,8 @@ public class GutenbergFileFilter implements FileFilter { cooked=cooked.replaceAll("<[n|N]2>(.*)", "

$1

"); //$NON-NLS-1$ $NON-NLS-2$ Another kind of heading? Give it boundaries cooked=cooked.replaceAll("<[n|N]3>(.*)", "

$1

"); //$NON-NLS-1$ $NON-NLS-2$ Another kind of heading? Give it boundaries cooked=cooked.replaceAll("<[t|T]1>", "

"); //$NON-NLS-1$ $NON-NLS-2$ Tab level 1 - cooked=cooked.replaceAll("<[t|T]2>(.*)", "

$1
"); //$NON-NLS-1$ $NON-NLS-2$ Tab level 2 - cooked=cooked.replaceAll("<[t|T]3>(.*)", "
$1
"); //$NON-NLS-1$ $NON-NLS-2$ Tab level 3 + cooked=cooked.replaceAll("<[t|T]2>(.*)", "

$1"); //$NON-NLS-1$ $NON-NLS-2$ Tab level 2 + cooked=cooked.replaceAll("<[t|T]3>(.*)", "

$1"); //$NON-NLS-1$ $NON-NLS-2$ Tab level 3 cooked=cooked.replaceAll("\\x0f", ""); //$NON-NLS-1$ $NON-NLS-2$ Italics off cooked=cooked.replaceAll("\\x01(.*)", " $1"); //$NON-NLS-1$ $NON-NLS-2$ Italics on cooked=cooked.replaceAll("\\x02(.*)", " $1"); //$NON-NLS-1$ $NON-NLS-2$ Italics on @@ -158,7 +155,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\i "); //$NON-NLS-1$ + output.print("\\i "); //$NON-NLS-1$ break; default: break; @@ -174,7 +171,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\i0 "); //$NON-NLS-1$ + output.print("\\i0 "); //$NON-NLS-1$ break; default: break; @@ -189,7 +186,7 @@ public class GutenbergFileFilter implements FileFilter { output.print("

"); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\par "); //$NON-NLS-1$ + output.print("\\par \\par \\li0 "); //$NON-NLS-1$ break; default: break; @@ -205,7 +202,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\ul "); //$NON-NLS-1$ + output.print("\\ul "); //$NON-NLS-1$ break; default: break; @@ -221,7 +218,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\ulnone "); //$NON-NLS-1$ + output.print("\\ulnone "); //$NON-NLS-1$ break; default: break; @@ -237,7 +234,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\b "); //$NON-NLS-1$ + output.print("\\b "); //$NON-NLS-1$ break; default: break; @@ -253,7 +250,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\b0 "); //$NON-NLS-1$ + output.print("\\b0 "); //$NON-NLS-1$ break; default: break; @@ -269,7 +266,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\super "); //$NON-NLS-1$ + output.print("\\super "); //$NON-NLS-1$ break; default: break; @@ -285,7 +282,7 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\nosupersub"); //$NON-NLS-1$ + output.print("\\nosupersub "); //$NON-NLS-1$ break; default: break; @@ -300,7 +297,7 @@ public class GutenbergFileFilter implements FileFilter { output.print("

"); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\pard\\qc "); //$NON-NLS-1$ + output.print("\\pard\\qc "); //$NON-NLS-1$ break; default: break; @@ -317,7 +314,7 @@ public class GutenbergFileFilter implements FileFilter { output.print("
"); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println("\\par \\pard "); //$NON-NLS-1$ + output.print("\\par \\pard "); //$NON-NLS-1$ break; default: break; @@ -343,13 +340,13 @@ public class GutenbergFileFilter implements FileFilter { break; case RENDER_AS_RTF: if (t.equalsIgnoreCase("h1")) //$NON-NLS-1$ - output.print("\\pard\\s1\\b\\fs48 "); //$NON-NLS-1$ + output.print("\\par\\par\\pard\\s1\\b\\fs48 "); //$NON-NLS-1$ else if (t.equalsIgnoreCase("h2")) //$NON-NLS-1$ - output.print("\\pard\\s2\\b\\fs36 "); //$NON-NLS-1$ + output.print("\\par\\par\\pard\\s2\\b\\fs36 "); //$NON-NLS-1$ else if (t.equalsIgnoreCase("h3")) //$NON-NLS-1$ - output.print("\\pard\\s3\\b\\fs27 "); //$NON-NLS-1$ + output.print("\\par\\par\\pard\\s3\\b\\fs27 "); //$NON-NLS-1$ else if (t.equalsIgnoreCase("h4")) //$NON-NLS-1$ - output.print("\\pard\\s4\\b\\fs24 "); //$NON-NLS-1$ + output.print("\\par\\par\\pard\\s4\\b\\fs24 "); //$NON-NLS-1$ break; default: output.println(); @@ -380,15 +377,21 @@ public class GutenbergFileFilter implements FileFilter { break; } } - else if (t.startsWith("blockquote")) // Indent $NON-NLS-1$ + else if (t.startsWith("bq")) // Indent $NON-NLS-1$ { switch (rendering) { case RENDER_AS_HTML: - output.print("
"); //$NON-NLS-1$ + if (t.equals("bq1")) //$NON-NLS-1$ + output.print("
"); //$NON-NLS-1$ + else if (t.equals("bq2")) //$NON-NLS-1$ + output.print("
"); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println(""); //$NON-NLS-1$ + if (t.equals("bq1")) //$NON-NLS-1$ + output.print("\\pard\\li720 "); //$NON-NLS-1$ + else if (t.equals("bq2")) //$NON-NLS-1$ + output.print("\\pard\\li1440 "); //$NON-NLS-1$ break; default: output.print(" "); //$NON-NLS-1$ @@ -396,15 +399,18 @@ public class GutenbergFileFilter implements FileFilter { } ignoreBr = true; } - else if (t.startsWith("/blockquote")) // Outdent $NON-NLS-1$ + else if (t.startsWith("/bq")) // Outdent $NON-NLS-1$ { switch (rendering) { case RENDER_AS_HTML: - output.print("
"); //$NON-NLS-1$ + if (t.equals("/bq1")) //$NON-NLS-1$ + output.print("
"); //$NON-NLS-1$ + else if (t.equals("/bq2")) //$NON-NLS-1$ + output.print("
"); //$NON-NLS-1$ break; case RENDER_AS_RTF: - output.println(""); //$NON-NLS-1$ + //output.println("\\par\\li0 "); //$NON-NLS-1$ break; default: break; @@ -436,15 +442,16 @@ public class GutenbergFileFilter implements FileFilter { output.print(""); //$NON-NLS-1$ if (inSuperscript) output.print(""); //$NON-NLS-1$ + break; case RENDER_AS_RTF: if (inItalics) output.print("\\i0 "); //$NON-NLS-1$ if (inBold) output.print("\\b0 "); //$NON-NLS-1$ if (inUnderline) - output.print("\\ulnone"); //$NON-NLS-1$ + output.print("\\ulnone "); //$NON-NLS-1$ if (inSuperscript) - output.print("\\nosupersub"); //$NON-NLS-1$ + output.print("\\nosupersub "); //$NON-NLS-1$ break; default: break; diff --git a/src/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java b/src/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java index dfa929c..89ba1fa 100644 --- a/src/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java +++ b/src/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java @@ -34,10 +34,10 @@ import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; /** - * Represents a DOS file entry on disk. + * Represents a Gutenberg word processing file entry on disk. *

- * Date created: Oct 4, 2002 5:15:25 PM - * @author Rob Greene + * Date created: Dec 17, 2008 04:29:23 PM + * @author David Schmidt */ public class GutenbergFileEntry implements FileEntry { private TextBundle textBundle = StorageBundle.getInstance(); diff --git a/src/com/webcodepro/applecommander/ui/swt/DiskExplorerTab.java b/src/com/webcodepro/applecommander/ui/swt/DiskExplorerTab.java index d488fdb..ac85ae9 100644 --- a/src/com/webcodepro/applecommander/ui/swt/DiskExplorerTab.java +++ b/src/com/webcodepro/applecommander/ui/swt/DiskExplorerTab.java @@ -154,7 +154,7 @@ public class DiskExplorerTab { private FileFilter fileFilter; private GraphicsFileFilter graphicsFilter = new GraphicsFileFilter(); private AppleWorksWordProcessorFileFilter awpFilter = new AppleWorksWordProcessorFileFilter(); - private GutenbergFileFilter wpFilter = new GutenbergFileFilter(); + private GutenbergFileFilter gutenbergFilter = new GutenbergFileFilter(); private int currentFormat = FormattedDisk.FILE_DISPLAY_STANDARD; private boolean formatChanged; @@ -536,6 +536,47 @@ public class DiskExplorerTab { } }); + item = new MenuItem(menu, SWT.CASCADE); + item.setText(textBundle.get("GutenbergRenderingMenuItem")); //$NON-NLS-1$ + Menu subMenu2 = new Menu(shell, SWT.DROP_DOWN); + item.setMenu(subMenu2); + item = new MenuItem(subMenu2, SWT.NONE); + item.setText(textBundle.get("WordProcessorRenderAsTextMenuItem")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionAdapter() { + /** + * Set the appropriate rendering style. + */ + public void widgetSelected(SelectionEvent event) { + getGutenbergFilter().selectTextRendering(); + setFileFilter(getGutenbergFilter()); + exportFile(null); + } + }); + item = new MenuItem(subMenu2, SWT.NONE); + item.setText(textBundle.get("WordProcessorRenderAsHtmlMenuItem")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionAdapter() { + /** + * Set the appropriate rendering style. + */ + public void widgetSelected(SelectionEvent event) { + getGutenbergFilter().selectHtmlRendering(); + setFileFilter(getGutenbergFilter()); + exportFile(null); + } + }); + item = new MenuItem(subMenu2, SWT.NONE); + item.setText(textBundle.get("WordProcessorRenderAsRtfMenuItem")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionAdapter() { + /** + * Set the appropriate rendering style. + */ + public void widgetSelected(SelectionEvent event) { + getGutenbergFilter().selectRtfRendering(); + setFileFilter(getGutenbergFilter()); + exportFile(null); + } + }); + item = new MenuItem(menu, SWT.NONE); item.setText(textBundle.get("ExportAsAppleWorksSpreadsheetFileMenuItem")); //$NON-NLS-1$ item.addSelectionListener(new SelectionAdapter() { @@ -614,62 +655,6 @@ public class DiskExplorerTab { item = new MenuItem(menu, SWT.SEPARATOR); - item = new MenuItem(menu, SWT.CASCADE); - item.setText(textBundle.get("GutenbergRenderingMenuItem")); //$NON-NLS-1$ - Menu subMenu2 = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(subMenu2); - subMenu.addMenuListener(new MenuAdapter() { - /** - * Toggle all sub-menu MenuItems to the proper state to reflect - * the current file extension chosen. - */ - public void menuShown(MenuEvent event) { - Menu theMenu = (Menu) event.getSource(); - MenuItem[] subItems = theMenu.getItems(); - subItems[0].setSelection(getWPFilter().isTextRendering()); - subItems[1].setSelection(getWPFilter().isHtmlRendering()); - subItems[2].setSelection(getWPFilter().isRtfRendering()); - } - }); - item = new MenuItem(subMenu2, SWT.RADIO); - item.setText(textBundle.get("WordProcessorRenderAsTextMenuItem")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionAdapter() { - /** - * Set the appropriate rendering style. - */ - public void widgetSelected(SelectionEvent event) { - getWPFilter().selectTextRendering(); - setFileFilter(getWPFilter()); - exportFile(null); - } - }); - item = new MenuItem(subMenu2, SWT.RADIO); - item.setText(textBundle.get("WordProcessorRenderAsHtmlMenuItem")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionAdapter() { - /** - * Set the appropriate rendering style. - */ - public void widgetSelected(SelectionEvent event) { - getWPFilter().selectHtmlRendering(); - setFileFilter(getWPFilter()); - exportFile(null); - } - }); - item = new MenuItem(subMenu2, SWT.RADIO); - item.setText(textBundle.get("WordProcessorRenderAsRtfMenuItem")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionAdapter() { - /** - * Set the appropriate rendering style. - */ - public void widgetSelected(SelectionEvent event) { - getWPFilter().selectRtfRendering(); - setFileFilter(getWPFilter()); - exportFile(null); - } - }); - - item = new MenuItem(menu, SWT.SEPARATOR); - item = new MenuItem(menu, SWT.NONE); item.setText(textBundle.get("ExportAsGraphicsMenuItem")); //$NON-NLS-1$ item.setEnabled(GraphicsFileFilter.isCodecAvailable()); @@ -2000,8 +1985,8 @@ public class DiskExplorerTab { return awpFilter; } - protected GutenbergFileFilter getWPFilter() { - return wpFilter; + protected GutenbergFileFilter getGutenbergFilter() { + return gutenbergFilter; } protected GraphicsFileFilter getGraphicsFilter() {