[brailleblaster] push by francois...@xxxxxxxxx - Fixed numerous issues about multiple-documents and the New, Open, Clos... on 2012-07-30 06:00 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Mon, 30 Jul 2012 06:00:15 +0000

Revision: edec0a9ebc87
Author:   francois.ouellette01@xxxxxxxxx
Date:     Sun Jul 29 22:59:08 2012
Log: Fixed numerous issues about multiple-documents and the New, Open, Close and and Exit menu items
http://code.google.com/p/brailleblaster/source/detail?r=edec0a9ebc87

Modified:
 /src/main/org/brailleblaster/wordprocessor/AbstractView.java
 /src/main/org/brailleblaster/wordprocessor/BBMenu.java
 /src/main/org/brailleblaster/wordprocessor/BBToolBar.java
 /src/main/org/brailleblaster/wordprocessor/DocumentManager.java
 /src/main/org/brailleblaster/wordprocessor/SaveOptionsDialog.java
 /src/main/org/brailleblaster/wordprocessor/WPManager.java

=======================================
--- /src/main/org/brailleblaster/wordprocessor/AbstractView.java Wed Jul 18 15:52:42 2012 +++ /src/main/org/brailleblaster/wordprocessor/AbstractView.java Sun Jul 29 22:59:08 2012
@@ -34,7 +34,8 @@
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.custom.VerifyKeyListener;
-import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.events.*;

 abstract class AbstractView {
 StyledText view;
@@ -55,19 +56,24 @@
 location.bottom = new FormAttachment(bottom);
 view.setLayoutData (location);

-
-view.addVerifyKeyListener (new VerifyKeyListener() {
-public void verifyKey (VerifyEvent event) {
-handleKeystrokes (event);
-}
-});
-
-
-}
+//view.addVerifyKeyListener (new VerifyKeyListener() {
+//public void verifyKey (VerifyEvent event) {
+//handleKeystrokes (event);
+//}
+//});
+
+view.addModifyListener(viewMod);
+}
+
+// Better use a ModifyListener to set the change flag.
+ModifyListener viewMod = new ModifyListener () {
+    public void modifyText(ModifyEvent e) {
+         hasChanged = true;
+    }
+};

 void handleKeystrokes (VerifyEvent event) {
-hasChanged = true;
-event.doit = true;
-}
-
-}
+  hasChanged = true;
+  event.doit = true;
+  }
+}
=======================================
--- /src/main/org/brailleblaster/wordprocessor/BBMenu.java Thu Jul 26 20:35:21 2012 +++ /src/main/org/brailleblaster/wordprocessor/BBMenu.java Sun Jul 29 22:59:08 2012
@@ -283,7 +283,8 @@
                closeItem.setText(lh.localValue("&Close"));
                closeItem.addSelectionListener(new SelectionAdapter() {
                        public void widgetSelected(SelectionEvent e) {
-                               dm.setReturn(WP.DocumentClosed);
+//                             dm.setReturn(WP.DocumentClosed);  //FO 29
+                               dm.fileClose();
                        }
                });
                if (!BBIni.getPlatformName().equals("cocoa")) {
@@ -291,7 +292,8 @@
                        exitItem.setText(lh.localValue("e&xit"));
                        exitItem.addSelectionListener(new SelectionAdapter() {
                                public void widgetSelected(SelectionEvent e) {
-                                       dm.setReturn(WP.BBClosed);
+//                                     dm.setReturn(WP.BBClosed);
+                                       dm.setReturn(WP.DocumentClosed);
                                }
                        });
                }
@@ -709,7 +711,7 @@
                 {
                        dm.setReturn(WP.DocumentClosed);
                 }
-            }
+          }
         });

                // Activate menus when documentWindow shell is opened
=======================================
--- /src/main/org/brailleblaster/wordprocessor/BBToolBar.java Wed Jul 18 15:52:42 2012 +++ /src/main/org/brailleblaster/wordprocessor/BBToolBar.java Sun Jul 29 22:59:08 2012
@@ -32,6 +32,7 @@
 import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 // FO
@@ -45,6 +46,7 @@
 public class BBToolBar {

 private ToolBar toolBar;
+private ToolBar toolBar2;

 // FO
 public BBToolBar (final DocumentManager dm) {
@@ -114,6 +116,17 @@
 });

 toolBar.pack();
+/**
+toolBar2 = new ToolBar (dm.documentWindow, SWT.HORIZONTAL);
+Color color2 = dm.display.getSystemColor(SWT.COLOR_GRAY);  // FO 29
+toolBar2.setBackground(color2);     // FO 29
+FormData location2 = new FormData();
+location2.left = new FormAttachment(0);
+location2.right = new FormAttachment(99);
+location2.top = new FormAttachment (8);
+location2.bottom = new FormAttachment (9);
+toolBar2.setLayoutData (location2);
+**/

 //FO
 FormData bloc = new FormData();
=======================================
--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Fri Jul 27 15:04:35 2012 +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Sun Jul 29 22:59:08 2012
@@ -58,7 +58,9 @@

 import org.daisy.printing.*;
 import javax.print.PrintException;
-import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.graphics.Color;
+
 import org.brailleblaster.localization.LocaleHandler;
 import org.brailleblaster.settings.Welcome;
 import org.brailleblaster.util.FileUtils;
@@ -77,8 +79,6 @@
 import org.apache.tika.parser.AutoDetectParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
-import org.apache.tika.sax.ToHTMLContentHandler;
-import org.apache.tika.sax.ToTextContentHandler;
 import org.apache.tika.sax.ToXMLContentHandler;
 import org.xml.sax.SAXException;

@@ -116,8 +116,6 @@
     String daisyWorkFile = null;       // FO
     String tikaWorkFile = null;        // FO
     String newDaisyFile = "utdml-doc"; // FO
-    static boolean daisyHasChanged = false; // FO
-    static boolean brailleHasChanged = false; // FO
     boolean textAndBraille = false;
        boolean saveUtdml = false;
        boolean metaContent = false;
@@ -171,18 +169,18 @@
         menu = new BBMenu (this);
         toolBar = new BBToolBar (this);
         /* text window is on the left */
-        daisy = new DaisyView (documentWindow);
-        braille = new BrailleView (documentWindow);
+           daisy = new DaisyView (documentWindow);
+           braille = new BrailleView (documentWindow);
+
         // activeView = (ProtoView)daisy;
         statusBar = new BBStatusBar (documentWindow);
         documentWindow.setSize (1000, 700);
         documentWindow.layout(true, true);

-        documentWindow.addListener(SWT.Close, new Listener(){
+        documentWindow.addListener (SWT.Close, new Listener (){
             public void handleEvent(Event event) {
-  //          setReturn(WP.DocumentClosed);
+              setReturn(WP.DocumentClosed);
//this way clicking close box is equivalent to the 'close' item on the menu
-              setReturn(WP.BBClosed);
             }
         });

@@ -192,7 +190,6 @@
             }
         });

-
         Monitor primary = display.getPrimaryMonitor ();
                Rectangle bounds = primary.getBounds ();
                Rectangle rect = documentWindow.getBounds ();
@@ -202,7 +199,7 @@
         documentWindow.open();
         setWindowTitle (" untitled");

-        daisy.view.addModifyListener(daisyMod);
+//      daisy.view.addModifyListener(daisyMod);
         /** for later use
         braille.view.addModifyListener(brailleMod);
         **/
@@ -263,7 +260,6 @@
         }

         boolean stop = false;
-
         daisy.view.setFocus();

while (!documentWindow.isDisposed() && (!stop)&&(returnReason == 0)) {
@@ -281,29 +277,17 @@
         //Then back to WPManager
     }

-    // Listeners to set the change flag.
-    ModifyListener daisyMod = new ModifyListener () {
-       public void modifyText(ModifyEvent e) {
-                        daisyHasChanged = true;
-       }
-   };
-
-   ModifyListener brailleMod = new ModifyListener () {
-       public void modifyText(ModifyEvent e) {
-                        brailleHasChanged = true;
-       }
-  };
-
     /**
      * Handle application shutdown signal from OS;
      */
     void handleShutdown (Event event) {
-       if (daisyHasChanged) {
+       if (daisy.hasChanged) {
                        YesNoChoice ync = new 
YesNoChoice(lh.localValue("hasChanged") );
                if (ync.result == SWT.YES) {
                        fileSave();
                } else {
-                       daisyHasChanged = false;
+                       daisy.hasChanged = false;
+                       braille.hasChanged = false;
                }
        }
     event.doit = true;
@@ -322,6 +306,7 @@
      * processing.
      */
     boolean setReturn (int reason) {
+       System.out.println("reason " + reason);
         switch (reason) {
         case WP.SwitchDocuments:
             if (WPManager.haveOtherDocuments()) {
@@ -340,10 +325,6 @@
             break;
         case WP.DocumentClosed:
             returnReason = reason;
-               //FO
- if ((daisy.view.getCharCount() == 0) || (! daisyHasChanged) || (! brailleHasChanged)) {
-                       returnReason = WP.BBClosed;
-               }
             break;
         case WP.BBClosed:
             returnReason = reason;
@@ -392,27 +373,46 @@

     void fileNew() {
        // FO
-       if (daisyHasChanged || brailleHasChanged)  {
- YesNoChoice ync = new YesNoChoice("Warning: The current file has not been saved. Continue?");
-               if (ync.result == SWT.NO) return;
-       }
-
+       if (!daisy.view.isVisible()) {
+               activateViews(true);
+               daisy.hasChanged = false;
+               braille.hasChanged = false;
+               haveOpenedFile = false;
+               brailleFileName = null;
+               documentName = null;
+               daisy.hasChanged = false;
+               braille.hasChanged = false;
+               doc = null;
+               BBIni.setUtd(false);
+               setWindowTitle (" untitled");
+               daisy.view.setFocus();
+       } else {
+
+//      if (doc != null){
+        returnReason = WP.NewDocument;
+        flags[documentNumber] = true;
+//      return;
+//      }
+       }
+       /**
        daisy.view.replaceTextRange(0, daisy.view.getCharCount(), "");
            braille.view.replaceTextRange(0, braille.view.getCharCount(), "");
                haveOpenedFile = false;
                brailleFileName = null;
                documentName = null;
-               daisyHasChanged = false;
-               brailleHasChanged = false;
+               daisy.hasChanged = false;
+               braille.hasChanged = false;
                doc = null;
                BBIni.setUtd(false);
                stopRequested = false;
                statusBar.setText("");
-               documentWindow.setText ("BrailleBlaster");
+//             documentWindow.setText ("BrailleBlaster");
+               setWindowTitle (" untitled");
            daisy.view.setFocus();
+           **/
     }

-    /* UTD DOCUMENT */
+    /* UTD or XML DOCUMENT */
     void fileOpen () {
         if (doc != null){
             returnReason = WP.OpenDocumentGetFile;
@@ -438,7 +438,7 @@
        dialog.setFilterPath (filterPath);

        /* temporarily turn off tracking of changes */
-       daisy.view.removeModifyListener(daisyMod);
+//     daisy.view.removeModify(daisyMod);

        documentName = dialog.open();
         shell.dispose();
@@ -455,8 +455,8 @@
            utd.displayTranslatedFile(documentName, brailleFileName);
             }
            braille.view.setEditable(false);
-            daisyHasChanged = false;
-            daisy.view.addModifyListener(daisyMod);
+            daisy.hasChanged = false;
+//            daisy.view.addModifyListener(daisyMod);
             setWindowTitle (documentName);
             daisy.view.setFocus();
         }
@@ -490,7 +490,7 @@

     void openDocument (String fileName) {

-       daisy.view.removeModifyListener(daisyMod);
+//     daisy.view.removeModifyListener(daisyMod);

         Builder parser = new Builder();
         try {
@@ -520,13 +520,40 @@
 //          }
 //       }
 //        .start();
-         daisy.view.addModifyListener(daisyMod);
+//         daisy.view.addModifyListener(daisyMod);
     }

+
+    void fileClose() {
+       if (daisy.view == null) {
+               System.err.println("fileCLose() - something wrong!!!");
+               return;
+       }
+       activateMenus (false);
+       if (daisy.hasChanged || braille.hasChanged) {
+ YesNoChoice ync = new YesNoChoice(lh.localValue("hasChanged") );
+                       if (ync.result == SWT.YES) {
+                               fileSave();
+                       }
+       }
+       activateViews(false);
+               haveOpenedFile = false;
+               brailleFileName = null;
+               documentName = null;
+               doc = null;
+               BBIni.setUtd(false);
+               stopRequested = false;
+               statusBar.setText("");
+               daisy.view.setText("");
+               daisy.hasChanged = false;
+               braille.view.setText("");
+               braille.hasChanged = false;
+               setWindowTitle (" untitled");
+    }
+
     private void walkTree (Node node) {
+        String ext = getFileExt(documentName);
         Node newNode;
-        numLines = 0;
-               numChars = 0;

         for (int i = 0; i < node.getChildCount(); i++) {
             newNode = node.getChild(i);
@@ -538,8 +565,12 @@

                String nname = ((Element) node).getLocalName();
                if (! (nname.matches("span") || nname.matches("brl"))) {
-//                     final String value = newNode.getValue() + "\n";
-                       final String value = newNode.getValue();
+                       final String value;
+                    if (ext.contentEquals("utd")) {
+                        value = newNode.getValue() + "\n";
+                    } else {
+                        value = newNode.getValue();
+                    }
                        numLines++;
                        numChars += value.length();

@@ -550,7 +581,7 @@
                        display.syncExec(new Runnable() {
                         public void run() {
                             daisy.view.append (daisyLine.toString());
- statusBar.setText ("Read " + numLines + " lines, " + numChars
+                            statusBar.setText ("Read " + numChars
                                     + " characters.");
                         }
                     });
@@ -564,7 +595,7 @@

     void openTikaDocument (String fileName) {

-       daisy.view.removeModifyListener(daisyMod);
+//     daisy.view.removeModifyListener(daisyMod);
        stopRequested = false;

         Builder parser = new Builder();
@@ -587,7 +618,6 @@
         while (!stopRequested) {
            walkTikaTree (rootElement);
          }
-         daisy.view.addModifyListener(daisyMod);
     }

     private void walkTikaTree (Node node) {
@@ -624,7 +654,7 @@
                        display.syncExec(new Runnable() {
                         public void run() {
                             daisy.view.append (daisyLine.toString());
- statusBar.setText ("Read " + numLines + " lines, " + numChars + statusBar.setText ("Read " + daisy.view.getCharCount()
                                     + " characters.");
                         }
                     });
@@ -637,7 +667,7 @@


     void fileSave() {
-       if ( !(daisyHasChanged || brailleHasChanged)) {
+       if ( !(daisy.hasChanged || braille.hasChanged)) {
             new Notify (lh.localValue("noChange") );
             return;
        };
@@ -666,8 +696,8 @@
                                        new FileUtils().copyFile 
(translatedFileName, documentName);
                                        
statusBar.setText(lh.localValue("fileSaved")) ;
                                        new Notify (lh.localValue("fileSaved"));
-                               daisyHasChanged = false;
-                               brailleHasChanged = false;
+                               daisy.hasChanged = false;
+                               braille.hasChanged = false;
                        } else {
                                new Notify(lh.localValue("noChangeSaved"));
                        }
@@ -753,8 +783,8 @@
        statusBar.setText(lh.localValue("fileSaved") + " " + saveTo) ;
        documentWindow.setText ("BrailleBlaster " + fileName);

-        daisyHasChanged = false;
-        brailleHasChanged = false;
+        daisy.hasChanged = false;
+        braille.hasChanged = false;
     }

     void showBraille() {
@@ -884,7 +914,7 @@
         }

                metaContent = true;
-               brailleHasChanged = true;
+               braille.hasChanged = true;

         if (display) {
                if (BBIni.useUtd()) {
@@ -1034,7 +1064,7 @@
        dialog.setFilterPath (filterPath);

        /* turn off change tracking */
-       daisy.view.removeModifyListener(daisyMod);
+//     daisy.view.removeModifyListener(daisyMod);

        documentName = dialog.open();
         shell.dispose();
@@ -1052,9 +1082,9 @@

         braille.view.setEditable(false);

-        statusBar.setText (lh.localValue("importCompleted"));
-        daisy.view.addModifyListener(daisyMod);
-        daisyHasChanged = true;
+//      statusBar.setText (lh.localValue("importCompleted"));
+//      daisy.view.addModifyListener(daisyMod);
+        daisy.hasChanged = true;
         setWindowTitle (documentName);
         daisy.view.setFocus();
     }
@@ -1088,6 +1118,7 @@
         try {
ToXMLContentHandler handler = new ToXMLContentHandler(output, "ISO-8859-1"); // ToXMLContentHandler handler = new ToXMLContentHandler(output, "UTF-8"); +// ToXMLContentHandler handler = new ToXMLContentHandler(output, "us-ascii");
                 parser.parse(stream, handler, metadata, context);
         }  catch (IOException e) {
System.err.println("useHtmlParser IOException: " + e.getMessage());
@@ -1101,13 +1132,10 @@
                stream.close();
         }
     }
-

        void showDaisy(String content) {
-
- /* Make sure we replace the existing view with the content of the file */ + /* Make sure we replace the existing view with the content of the file */ daisy.view.replaceTextRange(0, daisy.view.getCharCount(), content + "\n");
-
     }

     void placeholder() {
@@ -1144,7 +1172,7 @@
     }

     boolean getDaisyHasChanged() {
-       return daisyHasChanged;
+       return daisy.hasChanged;
     }

     private String getFileExt(String fileName) {
@@ -1156,5 +1184,48 @@
         }
        return ext;
     }
+
+    void activateViews(boolean state) {
+       activateDaisyView(state);
+       activateBrailleView(state);
+    }
+    void activateDaisyView(boolean active) {
+        if (active) {
+               daisy.view.setVisible(true);
+        } else {
+               daisy.view.setVisible(false);
+        }
+    }
+    void activateBrailleView(boolean active) {
+        if (active) {
+               braille.view.setVisible(true);
+        } else {
+               braille.view.setVisible(false);
+        }
+    }
+
+    void activateMenus (boolean state) {
+       String itemToFind[] = {"Close", "Save", "Emboss Now", "Print"};
+       Menu mb = documentWindow.getMenuBar();
+       MenuItem mi[] = mb.getItems();
+       String t;
+       int i;
+       for (i=0; i < mi.length; i++) {
+               t = mi[i].getText().replace("&", "");
+               if (t.contains("File")) {
+                       break;
+               }
+       }
+       Menu f = mi[i].getMenu();
+       MenuItem ii[] = f.getItems();
+       for (i=0; i< ii.length; i++) {
+               t = ii[i].toString().replaceAll("&", "");
+               for (int j=0; j<itemToFind.length; j++) {
+                   if (t.contains(itemToFind[j])) {
+                         ii[i].setEnabled(state);
+                   }
+               }
+       }
+    }
 }

=======================================
--- /src/main/org/brailleblaster/wordprocessor/SaveOptionsDialog.java Thu Jul 26 17:43:13 2012 +++ /src/main/org/brailleblaster/wordprocessor/SaveOptionsDialog.java Sun Jul 29 22:59:08 2012
@@ -1,6 +1,8 @@
 package org.brailleblaster.wordprocessor;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridLayout;
=======================================
--- /src/main/org/brailleblaster/wordprocessor/WPManager.java Tue Jul 24 22:12:13 2012 +++ /src/main/org/brailleblaster/wordprocessor/WPManager.java Sun Jul 29 22:59:08 2012
@@ -81,16 +81,16 @@
             switch (curDoc.returnReason) {
             case WP.DocumentClosed://6
                documents[documentIndex].finish();
-// if (getNextAvailableDoc() == -1) return; //no more docs, exit
-                if (getNextAvailableDoc() == -1) {
+ if (getNextAvailableDoc() == -1) return; //no more docs, exit
+//FO                if (getNextAvailableDoc() == -1) {
                        // open new document
-                       documentIndex = 0;
-                       action = WP.NewDocument;
-                    curDoc = documents[0] = new DocumentManager(display,
-                            documentIndex, action, "") ;
-                } else {
+//                     documentIndex = 0;
+//                     action = WP.NewDocument;
+//                    curDoc = documents[0] = new DocumentManager(display,
+//                            documentIndex, action, "") ;
+//                } else {
                     WPManager.resumeAll(documentIndex);
-                }
+//                }
                 break;
             case WP.SwitchDocuments://4
                 if(DocumentManager.recentFileNameIndex != -1){
@@ -248,5 +248,4 @@
     static int getMaxNumDocs(){
         return MAX_NUM_DOCS;
     }
-
-}
+}

Other related posts:

  • » [brailleblaster] push by francois...@xxxxxxxxx - Fixed numerous issues about multiple-documents and the New, Open, Clos... on 2012-07-30 06:00 GMT - brailleblaster