[brailleblaster] 5 new revisions pushed by sahel.ma...@xxxxxxxxx on 2014-07-31 18:56 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Thu, 31 Jul 2014 18:57:09 +0000

5 new revisions:

Revision: 9b58e3b359cf
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 24 20:04:42 2014 UTC
Log:      Reverting some of files second time
http://code.google.com/p/brailleblaster/source/detail?r=9b58e3b359cf

Revision: d5bb11f3fb3b
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 15:34:17 2014 UTC
Log:      Adding multi select style
http://code.google.com/p/brailleblaster/source/detail?r=d5bb11f3fb3b

Revision: b1edff6fec3e
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 15:38:44 2014 UTC
Log:      commited before mereging
http://code.google.com/p/brailleblaster/source/detail?r=b1edff6fec3e

Revision: 30910e3d2f45
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 18:51:41 2014 UTC
Log:      Fixed merge conflicts
http://code.google.com/p/brailleblaster/source/detail?r=30910e3d2f45

Revision: 1e17b7a92010
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 18:54:23 2014 UTC
Log:      Fixed merge conflicts second
http://code.google.com/p/brailleblaster/source/detail?r=1e17b7a92010

==============================================================================
Revision: 9b58e3b359cf
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 24 20:04:42 2014 UTC
Log:      Reverting some of files second time
http://code.google.com/p/brailleblaster/source/detail?r=9b58e3b359cf

Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 24 19:01:54 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 24 20:04:42 2014 UTC
@@ -103,8 +103,6 @@
        private PaintObjectListener paintObjListener;
        private int originalStart, originalEnd;
        private TextMapElement currentElement;
-       int startSelection;
-       int endSelection;

public TextView (Manager manager, Group documentWindow, BBSemanticsTable table) { super (manager, documentWindow, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN, table);
@@ -119,16 +117,7 @@
                view.addSelectionListener(selectionListener = new 
SelectionAdapter(){
                        @Override
                        public void widgetSelected(SelectionEvent e) {
-
                                selectionArray = view.getSelectionRanges();
-                               //Added this part for start and end of text 
selection
-                               for (int i = 0; i < selectionArray.length-1; 
i++) {
-                                       startSelection=selectionArray[i];
-                                       
endSelection=selectionArray[i]+selectionArray[i+1];
-
-
-                            }
-                                System.out.println(startSelection+"   
"+endSelection);
                                if(selectionArray[1] > 0){
                                        setSelection(selectionArray[0], 
selectionArray[1]);
                                        currentChar = ' ';

==============================================================================
Revision: d5bb11f3fb3b
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 15:34:17 2014 UTC
Log:      Adding multi select style
http://code.google.com/p/brailleblaster/source/detail?r=d5bb11f3fb3b

Modified:
 /src/main/org/brailleblaster/perspectives/braille/Manager.java
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Jul 24 19:35:48 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Jul 31 15:34:17 2014 UTC
@@ -36,6 +36,11 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Set;

 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,6 +60,8 @@
import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
 import org.brailleblaster.perspectives.braille.document.BrailleDocument;
+import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement;
 import org.brailleblaster.perspectives.braille.mapping.elements.Range;
import org.brailleblaster.perspectives.braille.mapping.elements.SectionElement; import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
@@ -806,52 +813,126 @@
                else
                        braille.positionScrollbar(text.view.getTopIndex());
        }
+       /***
+     * Get parent style of the current TextMapElement
+     * @param current
+     * @param message
+     * @return
+     */
+       private Element parentStyle(TextMapElement current, Message message) {
+               Element parent = document.getParent(current.n, true);
+ message.put("previousStyle", styles.get(styles.getKeyFromAttribute(parent)));
+               document.changeSemanticAction(message, current.parentElement());
+               message.put("style", 
styles.get(styles.getKeyFromAttribute(parent)));
+               return parent;
+
+       }
+       /***
+        * Handle style for all cases
+        * @param message
+        */

-       private void handleUpdateStyle(Message message){
-               if(document.getDOM() != null && text.view.getText().length() > 
0){
+       private void handleUpdateStyle(Message message) {
+               if (document.getDOM() != null && text.view.getText().length() > 
0) {
                        group.setRedraw(false);
-                       Element parent = 
document.getParent(list.getCurrent().n, true);
+                       if (message.getValue("multiSelect").equals(false)) {
+                               handleStyleCursorSelected(message);

- message.put("previousStyle", styles.get(styles.getKeyFromAttribute(parent))); - document.changeSemanticAction(message, list.getCurrent().parentElement());
-                       message.put("style", 
styles.get(styles.getKeyFromAttribute(parent)));
- ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getCurrentIndex(), parent, true);
+                       } else {
+                               handleStyleMultiSelected(message);
+                       }
+
+               } else
+                       new Notify(lh.localValue("nothingToApply"));
+       }
+       /***
+        * Handle style if user just move cursor
+        * @param message
+        */
+       private void handleStyleCursorSelected(Message message) {
+               Element parent = parentStyle(list.getCurrent(), message);
+               ArrayList<TextMapElement> itemList = list.findTextMapElements(
+                               list.getCurrentIndex(), parent, true);
+               adjustStyle(itemList, message);
+
+       }
+       /***
+        * Apply styles to selected text for multiple elements
+        * @param start
+        * @param end
+        * @param message
+        */
+       private void handleStyleMultiSelected(Message message){

-                       int start = list.indexOf(itemList.get(0));
-                       int end = list.indexOf(itemList.get(itemList.size() - 
1));
-                       int origPos = 
list.get(list.getNodeIndex(itemList.get(0))).start;
-                       if(start > 0){
-                               message.put("prev", list.get(start - 1).end);
- message.put("braillePrev", list.get(start - 1).brailleList.getLast().end);
+               int start=text.getSelectedText()[0];
+               int end=text.getSelectedText()[1];
+
+               Set<TextMapElement> itemSet = getElementSelected(start, end);
+
+               Iterator<TextMapElement> itr = itemSet.iterator();
+               while (itr.hasNext())
+               {
+                       TextMapElement tempElement= itr.next();
+
+ if(tempElement.parentElement().getAttributeValue("semantics").contains("style") || tempElement.parentElement().getAttributeValue("semantics").contains("action"))
+                       {
+                               Message styleMessage = new Message(null);
+                               styleMessage.put("Style", 
message.getValue("Style"));
+                               Element parent = parentStyle(tempElement, 
styleMessage);
+
+ ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getNodeIndex(tempElement), parent, true);
+                               adjustStyle( itemList,styleMessage);
                        }
-                       else {
-                               message.put("prev", -1);
-                               message.put("braillePrev", -1);
-                       }
-
-                       if(end < list.size() - 1){
-                               message.put("next", list.get(end + 1).start);
- message.put("brailleNext", list.get(end + 1).brailleList.getFirst().start);
-                       }
-                       else {
-                               message.put("next", -1);
-                               message.put("brailleNext", -1);
-                       }
-
-                       text.adjustStyle(message, itemList);
-                       braille.adjustStyle(message, itemList);
-
-                       if(message.contains("linesBeforeOffset"))
- list.shiftOffsetsFromIndex(start, (Integer)message.getValue("linesBeforeOffset"), (Integer)message.getValue("linesBeforeOffset"), origPos); - if(message.contains("linesAfterOffset") && list.size() > 1 && end < list.size() - 1) - list.shiftOffsetsFromIndex(end + 1, (Integer)message.getValue("linesAfterOffset"), (Integer)message.getValue("linesAfterOffset"), origPos);
+               }
+
+       }
+       /***
+        * Adjust style of elements in the list base on previous and next 
element
+        * @param itemList : all selected items which we want style to be 
applied
+        * @param message : passing information regarding styles
+        */

-                       treeView.adjustItemStyle(list.getCurrent());
-                       group.setRedraw(true);
+ private void adjustStyle(ArrayList<TextMapElement> itemList, Message message) {
+               int start = list.indexOf(itemList.get(0));
+               int end = list.indexOf(itemList.get(itemList.size() - 1));
+               int origPos = 
list.get(list.getNodeIndex(itemList.get(0))).start;
+               if (start > 0) {
+                       message.put("prev", list.get(start - 1).end);
+                       message.put("braillePrev",
+                                       list.get(start - 
1).brailleList.getLast().end);
+               } else {
+                       message.put("prev", -1);
+                       message.put("braillePrev", -1);
                }
-               else
-                       new Notify(lh.localValue("nothingToApply"));
+
+               if (end < list.size() - 1) {
+                       message.put("next", list.get(end + 1).start);
+                       message.put("brailleNext",
+                                       list.get(end + 
1).brailleList.getFirst().start);
+               } else {
+                       message.put("next", -1);
+                       message.put("brailleNext", -1);
+               }
+
+               text.adjustStyle(message, itemList);
+               braille.adjustStyle(message, itemList);
+
+               if (message.contains("linesBeforeOffset"))
+                       list.shiftOffsetsFromIndex(start,
+                                       (Integer) 
message.getValue("linesBeforeOffset"),
+                                       (Integer) 
message.getValue("linesBeforeOffset"), origPos);
+               if (message.contains("linesAfterOffset") && list.size() > 1
+                               && end < list.size() - 1)
+                       list.shiftOffsetsFromIndex(end + 1,
+                                       (Integer) 
message.getValue("linesAfterOffset"),
+                                       (Integer) 
message.getValue("linesAfterOffset"), origPos);
+
+               treeView.adjustItemStyle(list.getCurrent());
+               group.setRedraw(true);
+
        }
+
+

        public void saveAs(){
BBFileDialog dialog = new BBFileDialog(wp.getShell(), SWT.SAVE, arch.getFileTypes(), arch.getFileExtensions());
@@ -1199,6 +1280,37 @@
                else
                        return null;
        }
+       /***
+        * Return all elements that selected in text
+        * @param start :start location of where text selected
+        * @param end:  where selection ended
+        * @return: Set of all element where in selection
+        */
+       public Set<TextMapElement> getElementSelected(int start, int end) {
+
+ Set<TextMapElement> elementSelectedSet = new LinkedHashSet<TextMapElement>();
+               Set<Element> parentElement = new LinkedHashSet<Element>();
+               int j=start;
+               while( j < end) {
+                       TextMapElement t = getElementInRange(j);
+
+ if ((t != null) && (!((t instanceof BrlOnlyMapElement )||(t instanceof PageMapElement)))) {
+                               Element currentParent = document.getParent(t.n, 
true);
+                               if(!(parentElement.contains(currentParent))){
+                                       parentElement.add(currentParent);
+                                       elementSelectedSet.add(t);
+                               }
+
+                               j=t.end+1;
+
+                       }
+                       else
+                       {
+                           j=j+1;
+                       }
+               }
+               return elementSelectedSet;
+       }

        public TextMapElement getElementInBrailleRange(int offset){
                Message m = new Message(null);
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 24 20:04:42 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 31 15:34:17 2014 UTC
@@ -103,6 +103,7 @@
        private PaintObjectListener paintObjListener;
        private int originalStart, originalEnd;
        private TextMapElement currentElement;
+       private boolean multiSelected;

public TextView (Manager manager, Group documentWindow, BBSemanticsTable table) { super (manager, documentWindow, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN, table);
@@ -110,6 +111,7 @@
                this.spaceBeforeText = 0;
                this.spaceAfterText = 0;
                this.manager = manager;
+               multiSelected=false;
        }

        @Override
@@ -119,7 +121,7 @@
                        public void widgetSelected(SelectionEvent e) {
                                selectionArray = view.getSelectionRanges();
                                if(selectionArray[1] > 0){
-                                       setSelection(selectionArray[0], 
selectionArray[1]);
+                                       multiSelected=true;
                                        currentChar = ' ';
                                        if(currentChanges > 0)
                                                sendUpdate();
@@ -1755,4 +1757,19 @@
                spaceBeforeText = 0;
          spaceBeforeText = 0;
         }
+       public int[] getSelectedText()
+       {
+               int [] temp=new int[2];
+               if(selectionArray!=null){
+                  temp[0]=selectionArray[0];
+                  temp[1]=selectionArray[0]+selectionArray[1];
+               }
+               return temp;
+       }
+
+       public boolean isMultiSelected() {
+               return multiSelected;
+       }
+
+
 }

==============================================================================
Revision: b1edff6fec3e
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 15:38:44 2014 UTC
Log:      commited before mereging
http://code.google.com/p/brailleblaster/source/detail?r=b1edff6fec3e

Modified:
 /src/main/org/brailleblaster/archiver/NimasArchiver.java
/src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java

=======================================
--- /src/main/org/brailleblaster/archiver/NimasArchiver.java Thu Jul 24 19:10:40 2014 UTC +++ /src/main/org/brailleblaster/archiver/NimasArchiver.java Thu Jul 31 15:38:44 2014 UTC
@@ -85,7 +85,7 @@

                // Segment the single NIMAS file. This will make rendering
                // faster in certain perspectives.
-               writeNimasSegments();
+               //writeNimasSegments();

                currentConfig = getAutoCfg("nimas"); // Nimas document.
                filterNames = new String[] {"XML", "XML Zip", "BRF", "UTDML"};
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Thu Jul 3 16:07:57 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Thu Jul 31 15:38:44 2014 UTC
@@ -102,8 +102,18 @@
     public void apply(String item){
        Message m = new Message(BBEvent.UPDATE_STYLE);
        Styles style = semanticsTable.get(item);
+
        if(style != null){
                m.put("Style", style);
+               if(dm.getText().isMultiSelected()==true)
+               {
+                       m.put("multiSelect", true);
+               }
+               else
+               {
+                       m.put("multiSelect", false);
+
+               }
                dm.dispatch(m);
        }
     }

==============================================================================
Revision: 30910e3d2f45
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 18:51:41 2014 UTC
Log:      Fixed merge conflicts
http://code.google.com/p/brailleblaster/source/detail?r=30910e3d2f45

Modified:
 /src/main/org/brailleblaster/archiver/NimasArchiver.java
 /src/main/org/brailleblaster/perspectives/braille/Manager.java
/src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /src/main/org/brailleblaster/archiver/NimasArchiver.java Thu Jul 31 15:38:44 2014 UTC +++ /src/main/org/brailleblaster/archiver/NimasArchiver.java Thu Jul 31 18:51:41 2014 UTC
@@ -30,26 +30,12 @@

 package org.brailleblaster.archiver;

-import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Set;

-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
 import nu.xom.Attribute;
 import nu.xom.Builder;
 import nu.xom.Document;
@@ -58,17 +44,12 @@
 import nu.xom.Nodes;
 import nu.xom.ParsingException;
 import nu.xom.ValidityException;
-import nu.xom.XPathContext;
-import nu.xom.converters.DOMConverter;
-import nu.xom.xslt.XSLException;
-import nu.xom.xslt.XSLTransform;

 import org.brailleblaster.BBIni;
 import org.brailleblaster.document.BBDocument;
 import org.brailleblaster.util.FileUtils;
 import org.brailleblaster.util.Notify;
 import org.brailleblaster.util.Zipper;
-import org.w3c.dom.DOMImplementation;

//////////////////////////////////////////////////////////////////////////////////
 // Prepares Nimas Archive for opening.
@@ -76,21 +57,27 @@


        Set <String> allPaths;
-
+       // The number of documents we COULD have if wrote them all to disk.
+       int numPotentialFiles = 0;

        NimasArchiver(String docToPrepare) {
+
                super(docToPrepare);
+
+               currentConfig = getAutoCfg("nimas"); // Nimas document.
+               filterNames = new String[] {"XML", "XML Zip", "BRF", "UTDML"};
+               filterExtensions = new String[] {"*.xml", "*.zip", "*.brf", 
"*.utd"};
+               allPaths = new HashSet<String>();
+
+               // Unzip file if needed.
                if(docToPrepare.endsWith(".zip"))
                        unzip(docToPrepare);

                // Segment the single NIMAS file. This will make rendering
                // faster in certain perspectives.
-               //writeNimasSegments();
-
-               currentConfig = getAutoCfg("nimas"); // Nimas document.
-               filterNames = new String[] {"XML", "XML Zip", "BRF", "UTDML"};
-               filterExtensions = new String[] {"*.xml", "*.zip", "*.brf", 
"*.utd"};
-               allPaths=new HashSet<String>();
+
+               // Write the first file to disk.
+               wrtieToDisk(0);
        }

        @Override
@@ -100,7 +87,7 @@
                        path = workingDocPath;

                if(fu.createXMLFile(doc.getNewXML(), path)){
- String tempSemFile = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(path) + ".sem"; + String tempSemFile = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(path) + ".sem"; copySemanticsFile(tempSemFile, fu.getPath(path) + BBIni.getFileSep() + fu.getFileName(path) + ".sem");
                }
                else {
@@ -131,6 +118,7 @@
                String sp = BBIni.getFileSep();
String tempOutPath = BBIni.getTempFilesPath() + filePath.substring(filePath.lastIndexOf(sp), filePath.lastIndexOf(".")) + sp;
                workingDocPath = unzipr.Unzip(filePath, tempOutPath);
+
                // Store paths.
                zippedPath = filePath;
        }
@@ -194,7 +182,30 @@
                arch.save(doc, path);
                return arch;
        }
+
+ ///////////////////////////////////////////////////////////////////////////////// + // Clears the list of path indices so we can once again create them on the fly. + // Needed when we save a nimas file. We have to delete all of the temp files,
+       // zip, then recreate them for the user.
+       public void resetDuplicatePathList() {
+               allPaths.clear();
+       }

+ /////////////////////////////////////////////////////////////////////////////////
+       // Resets the path list(resetDuplicatePathList()), and writes a
+       // chunked document to disk using the specified index.
+       public void resetThenWrite(int idx) {
+               resetDuplicatePathList();
+               wrtieToDisk(idx);
+       }
+
+ /////////////////////////////////////////////////////////////////////////////////
+       // Returns the number of potential files we would have
+       // if all of them were written to disk.
+       public int getNumPotentialFiles() {
+               return numPotentialFiles;
+       }
+
        /***
         * Write to the disk once at time if the file is not there already
         * @param index
@@ -203,20 +214,23 @@
        public String wrtieToDisk(int index){
                // Build string path.
String outPath = workingDocPath.substring(0, workingDocPath.lastIndexOf(BBIni.getFileSep())) + BBIni.getFileSep() + Integer.toString(index) + ".xml";
-               if(!(allPaths.contains(Integer.toString(index)))){
+               if( !(allPaths.contains(Integer.toString(index))) ){

-                       Document curDoc=manageNimas(index);
+                       // Break up document by level1 elements and retrieve 
the current one.
+                       Document curDoc = manageNimas(index);
+
                        // Create file utility for saving our xml files.
                        FileUtils fu = new FileUtils();

                        // Write file.
                        fu.createXMLFile( curDoc, outPath );
                        allPaths.add(Integer.toString(index));
+
+                       // Add this file to the temp list so it will be deleted 
later.
+                       tempList.add(outPath);
                }

                return outPath;
-
-
        }

     /***
@@ -231,14 +245,39 @@
                File temp = new File(sourcePath);
                //get all level1 element
                Nodes allNode=getLevel1();
+
+               // Store the number of files we would create if we
+               // ran through all of the indices.
+               numPotentialFiles = allNode.size();
+
                if (index<allNode.size()){
                        Node node=allNode.get(index);
                        currentDoc=breakDocument(temp,node);
+               }
+
+               // Get the number of <img> elements.
+               if(getImgCountList().size() == 0)
+               {
+                       // Go through every <level1> element, and count the
+                       // images.
+                       for(int curLvl1 = 0; curLvl1 < allNode.size(); 
curLvl1++)
+                       {
+                               // Add the count.
+                               Node nd = allNode.get(curLvl1);
+                               addToNumImgsList( new 
Document((Element)nd.copy()), curLvl1);
+                       }

+                       // Save paths to files that we may create.
+                       // Fill list.
+                       if(epubFileList.size() == 0) {
+                               for(int curF = 0; curF < numPotentialFiles; 
curF++) {
+ epubFileList.add(workingDocPath.substring(0, workingDocPath.lastIndexOf(BBIni.getFileSep())) + BBIni.getFileSep() + Integer.toString(curF) + ".xml");
+                               }
+                       }
                }

-               return currentDoc;

+               return currentDoc;
        }


@@ -359,60 +398,60 @@
        }

/////////////////////////////////////////////////////////////////////////////
-       // Writes segmented NIMAS documents to disc and returns a list of their
+       // Writes segmented NIMAS documents to disk and returns a list of their
        // paths.
-       public ArrayList<String> writeNimasSegments()
-       {
-        // Grab list of documents after breaking them up by level1's.
-        ArrayList<Document> docs = manageNimas();
-
-           // Create file utility for saving our xml files.
-               FileUtils fu = new FileUtils();
-
-               // Path to xsl file. Add three slashes to avoid BS.
- String xslPath = "file:///" + BBIni.getProgramDataPath() + BBIni.getFileSep() + "xsl" + BBIni.getFileSep() + "dtb2005html.xsl";
+//     public ArrayList<String> writeNimasSegments()
+//     {
+//        // Grab list of documents after breaking them up by level1's.
+//        ArrayList<Document> docs = manageNimas();
+//
+//         // Create file utility for saving our xml files.
+//             FileUtils fu = new FileUtils();
+//
+//             // Path to xsl file. Add three slashes to avoid BS.
+// String xslPath = "file:///" + BBIni.getProgramDataPath() + BBIni.getFileSep() + "xsl" + BBIni.getFileSep() + "dtb2005html.xsl";
+////
+////           // Build the xsl document.
+//     Document xslDoc = null;
+//             Builder builder = new Builder();
+//        try { xslDoc = builder.build(xslPath); }
+//        catch (ValidityException e1) { e1.printStackTrace(); }
+//        catch (ParsingException e1) { e1.printStackTrace(); }
+//        catch (IOException e1) { e1.printStackTrace(); }
+//
+//        // Create the transform.
+//        XSLTransform xslt = null;
+//        try { xslt = new XSLTransform(xslDoc); }
+//        catch (XSLException e1) { e1.printStackTrace(); }
 //
-//     // Build the xsl document.
-       Document xslDoc = null;
-               Builder builder = new Builder();
-        try { xslDoc = builder.build(xslPath); }
-        catch (ValidityException e1) { e1.printStackTrace(); }
-        catch (ParsingException e1) { e1.printStackTrace(); }
-        catch (IOException e1) { e1.printStackTrace(); }
-
-        // Create the transform.
-        XSLTransform xslt = null;
-        try { xslt = new XSLTransform(xslDoc); }
-        catch (XSLException e1) { e1.printStackTrace(); }
-
-        // Loop through the documents, write to file, count images in each.
-        for(int curDoc = 0; curDoc < docs.size(); curDoc++)
-        {
-               // Finally transform the document.
-            Nodes newDocNodes = null;
-                       try { newDocNodes = xslt.transform( docs.get(curDoc) ); 
}
-                       catch (XSLException e) { e.printStackTrace(); }
-            Document transformedDoc = XSLTransform.toDocument(newDocNodes);
-
-               // Build string path.
- String outPath = workingDocPath.substring(0, workingDocPath.lastIndexOf(BBIni.getFileSep())) + BBIni.getFileSep() + Integer.toString(curDoc) + ".xhtml";
-
-               // Add path to list.
-               epubFileList.add(outPath);
-
-               // Count the images in this document.
-               addToNumImgsList(docs.get(curDoc));
-
-               // Write file.
-               fu.createXMLFile( transformedDoc, outPath );
-//             fu.createXMLFile( docs.get(curDoc), outPath );
-
-        } // for(int curDoc...
-
-        // Create the opf file.
-        return epubFileList;
-
-       } // writeNimasSegments()
+// // Loop through the documents, write to file, count images in each.
+//        for(int curDoc = 0; curDoc < docs.size(); curDoc++)
+//        {
+//             // Finally transform the document.
+//            Nodes newDocNodes = null;
+//                     try { newDocNodes = xslt.transform( docs.get(curDoc) ); 
}
+//                     catch (XSLException e) { e.printStackTrace(); }
+// Document transformedDoc = XSLTransform.toDocument(newDocNodes);
+//
+//             // Build string path.
+// String outPath = workingDocPath.substring(0, workingDocPath.lastIndexOf(BBIni.getFileSep())) + BBIni.getFileSep() + Integer.toString(curDoc) + ".xhtml";
+//
+//             // Add path to list.
+//             epubFileList.add(outPath);
+//
+//             // Count the images in this document.
+//             addToNumImgsList(docs.get(curDoc));
+//
+//             // Write file.
+//             fu.createXMLFile( transformedDoc, outPath );
+////                   fu.createXMLFile( docs.get(curDoc), outPath );
+//
+//        } // for(int curDoc...
+//
+//        // Create the opf file.
+//        return epubFileList;
+//
+//     } // writeNimasSegments()

/////////////////////////////////////////////////////////////////////////////
        // Helper: Uses list created with manageNimas() to create an OPF file 
for
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Jul 31 15:34:17 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Jul 31 18:51:41 2014 UTC
@@ -749,8 +749,7 @@
            if (arch.getCurrentConfig().equals("epub.cfg")){
text.insertNewNode(list.get(posList.get(posList.size() - 1)).end,"aside");
            }
-           else{
-
+           else{
text.insertNewNode(list.get(posList.get(posList.size() - 1)).end,"prodnote");
            }

@@ -837,12 +836,11 @@
                        group.setRedraw(false);
                        if (message.getValue("multiSelect").equals(false)) {
                                handleStyleCursorSelected(message);
-
                        } else {
                                handleStyleMultiSelected(message);
                        }
-
-               } else
+               }
+               else
                        new Notify(lh.localValue("nothingToApply"));
        }
        /***
@@ -853,7 +851,7 @@
                Element parent = parentStyle(list.getCurrent(), message);
                ArrayList<TextMapElement> itemList = list.findTextMapElements(
                                list.getCurrentIndex(), parent, true);
-               adjustStyle(itemList, message);
+               adjustStyle(itemList, message,parent);

        }
        /***
@@ -881,7 +879,7 @@
                                Element parent = parentStyle(tempElement, 
styleMessage);

ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getNodeIndex(tempElement), parent, true);
-                               adjustStyle( itemList,styleMessage);
+                               adjustStyle( itemList,styleMessage,parent);
                        }
                }

@@ -892,7 +890,7 @@
         * @param message : passing information regarding styles
         */

- private void adjustStyle(ArrayList<TextMapElement> itemList, Message message) { + private void adjustStyle(ArrayList<TextMapElement> itemList, Message message,Element parent) {
                int start = list.indexOf(itemList.get(0));
                int end = list.indexOf(itemList.get(itemList.size() - 1));
                int origPos = 
list.get(list.getNodeIndex(itemList.get(0))).start;
@@ -928,11 +926,84 @@
                                        (Integer) 
message.getValue("linesAfterOffset"), origPos);

                treeView.adjustItemStyle(list.getCurrent());
+               
if(((Styles)message.getValue("Style")).getName().equals("boxline"))
+                       createBoxline(parent, message, itemList);
                group.setRedraw(true);

        }


+
+ /** Wraps a block level element in the appropriate tag then translates and adds boxline brl top and bottom nodes + * @param p: parent of text nodes, the block element to be wrapped in a boxline
+        * @param m: message passed to views containing offset positions
+        * @param itemList: arraylist containing text nodes of the block element
+        */
+ private void createBoxline(Element p, Message m, ArrayList<TextMapElement> itemList){
+               Element wrapper = document.wrapElement(p, "boxline");
+               if(wrapper != null){
+                       Element boxline = 
document.translateElement((Element)wrapper.copy());
+                       System.out.println(boxline.toXML().toString());
+                       int startPos = list.indexOf(itemList.get(0));
+
+                       //find start position
+                       int start, brailleStart;
+ if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesBefore)){
+                               start = (Integer)m.getValue("prev");
+                               brailleStart = 
(Integer)m.getValue("braillePrev");
+                       }
+                       else {
+                               start = itemList.get(0).start;
+                               brailleStart = 
itemList.get(0).brailleList.getFirst().start;
+                       }
+
+                       //insert top boxline
+                       wrapper.insertChild(boxline.removeChild(0), 0);
+ BrlOnlyMapElement b1 = new BrlOnlyMapElement(wrapper.getChild(0), (Element)wrapper);
+                       b1.setOffsets(start, start + b1.textLength());
+ b1.setBrailleOffsets(brailleStart, brailleStart + b1.getText().length());
+                       vi.addElementToSection(list, b1, startPos);
+
+                       //set text
+                       text.insertText(start, list.get(startPos).getText() + 
"\n");
+ braille.insertText(brailleStart, list.get(startPos).brailleList.getFirst().value() + "\n"); + list.shiftOffsetsFromIndex(startPos + 1, list.get(startPos).getText().length() + 1, list.get(startPos).brailleList.getFirst().value().length() + 1, list.get(startPos + 1).start);
+
+                       //find end position
+                       int endPos = list.indexOf(itemList.get(itemList.size() 
- 1)) + 1;
+                       int end, brailleEnd;
+ if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesAfter)){
+                               end = (Integer)m.getValue("next") + 
b1.getText().length() + 1;
+ brailleEnd = (Integer)m.getValue("brailleNext") + b1.getText().length() + 1;
+                       }
+                       else {
+                               end = list.get(endPos - 1).end;
+ brailleEnd = itemList.get(itemList.size() - 1).brailleList.getLast().end;
+                       }
+
+                       //insert bottom boxline
+                       
wrapper.appendChild(boxline.removeChild(boxline.getChildCount() - 1));
+ BrlOnlyMapElement b2 = new BrlOnlyMapElement(wrapper.getChild(wrapper.getChildCount() - 1), (Element)wrapper);
+                       b2.setOffsets(end + 1, end + 1 + b2.textLength());
+ b2.setBrailleOffsets(brailleEnd + 1, brailleEnd + 1 + b2.getText().length());
+                       vi.addElementToSection(list, b2, endPos);
+
+                       //set text
+                       text.insertText(end, "\n" + list.get(endPos).getText());
+ braille.insertText(brailleEnd, "\n" + list.get(endPos).brailleList.getFirst().value()); + list.shiftOffsetsFromIndex(endPos + 1, list.get(endPos).getText().length() + 1, list.get(endPos).brailleList.getFirst().value().length() + 1, list.get(endPos).start);
+
+                       //remove items from tree
+                       for(int i = 0; i < itemList.size(); i++){
+                               treeView.removeItem(itemList.get(i), new 
Message(null));
+                       }
+
+                       //add aside or sidebar to tree
+ treeView.newTreeItem(list.get(startPos), treeView.getSelectionIndex(), 0); + handleSetCurrent(Message.createSetCurrentMessage(Sender.TREE, list.get(list.getCurrentIndex() + 1).start, false));
+                       
dispatch(Message.createUpdateCursorsMessage(Sender.TREE));
+               }
+       }

        public void saveAs(){
BBFileDialog dialog = new BBFileDialog(wp.getShell(), SWT.SAVE, arch.getFileTypes(), arch.getFileExtensions());
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Thu Jul 31 15:38:44 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Thu Jul 31 18:51:41 2014 UTC
@@ -50,7 +50,7 @@
 public class StyleManager{

     private StyleTable table;
-    private EditPanel editor;
+    private StylePanel editor;
     private String configFile;
     Manager dm;
     TextMapElement t;
@@ -83,7 +83,10 @@
        lastSelection = table.getTable().getSelectionIndex();
        String style = table.getTable().getSelection()[0].getText(1);
        this.table.dispose();
- editor = new EditStyleView(this, dm.getGroup(), semanticsTable.get(style));
+       if(semanticsTable.get(style).getName().equals("boxline"))
+ editor = new EditBoxLineView(this, dm.getGroup(), semanticsTable.get(style));
+       else
+ editor = new EditStyleView(this, dm.getGroup(), semanticsTable.get(style));
        dm.setTabList();
     }

@@ -102,7 +105,7 @@
     public void apply(String item){
        Message m = new Message(BBEvent.UPDATE_STYLE);
        Styles style = semanticsTable.get(item);
-
+
        if(style != null){
                m.put("Style", style);
                if(dm.getText().isMultiSelected()==true)
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 31 15:34:17 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 31 18:51:41 2014 UTC
@@ -826,7 +826,7 @@
handleLineWrap(start, reformattedText, margin, style.contains(StylesType.firstLineIndent));
                }

-               if(isFirst(n) && style.contains(StylesType.firstLineIndent))
+ if(!(list.get(listIndex) instanceof BrlOnlyMapElement) && isFirst(n) && style.contains(StylesType.firstLineIndent))
                        setFirstLineIndent(start, style);

                if(style.contains(StylesType.format))
@@ -1515,86 +1515,89 @@
//Get previous style for comparison on adding or removing lines before or after
                Styles style = (Styles)m.getValue("style");
                Styles previousStyle = (Styles)m.getValue("previousStyle");
-
+               boolean boxline = style.getName().equals("boxline");
+
                setListenerLock(true);
                //Reset indent, alignment, and emphasis
- view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); - view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT);
-               setFontStyleRange(start, end - start, new StyleRange());
+               if(!boxline){
+ view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); + view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT);
+                       setFontStyleRange(start, end - start, new StyleRange());

- if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
-                       removeLinesBefore(m);
+ if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
+                               removeLinesBefore(m);

- if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
-                       removeLinesAfter(m);
+ if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
+                               removeLinesAfter(m);
+               }
+
                start = (Integer)m.getValue("start");
                end = (Integer)m.getValue("end");
                int prev = (Integer)m.getValue("prev");
                int next = (Integer)m.getValue("next");
-
-               for (Entry<StylesType, Object> entry : style.getEntrySet()) {
-                       switch(entry.getKey()){
-                               case linesBefore:
-                                       int linesBeforeOffset;
-                                       if(start != prev){
-                                               view.replaceTextRange(prev, (start - 
prev), "");
-                                               length = start - prev;
-                                       }
-                                       spaces = 
Integer.valueOf((String)entry.getValue());
+               if(!boxline){
+                       for (Entry<StylesType, Object> entry : 
style.getEntrySet()) {
+                               switch(entry.getKey()){
+                                       case linesBefore:
+                                               int linesBeforeOffset;
+                                               if(start != prev){
+                                                       view.replaceTextRange(prev, 
(start - prev), "");
+                                                       length = start - prev;
+                                               }
+                                               spaces = 
Integer.valueOf((String)entry.getValue());

-                                       textBefore = 
makeInsertionString(spaces,'\n');
-                                       linesBeforeOffset = spaces - length;
+                                               textBefore = 
makeInsertionString(spaces,'\n');
+                                               linesBeforeOffset = spaces - 
length;

-                                       insertBefore(start - (start - prev), 
textBefore);
-                                       m.put("linesBeforeOffset", 
linesBeforeOffset);
-                                       start += linesBeforeOffset;
-                                       end += linesBeforeOffset;
-                                       if(next != -1)
-                                               next += linesBeforeOffset;
-                                       break;
-                               case linesAfter:
-                                       length = 0;
-                                       int linesAfterOffset;
-                                       if(end != next && next != 0){
-                                               view.replaceTextRange(end, (next - end), 
"");
-                                               length = next - end;
-                                       }
+                                               insertBefore(start - (start - 
prev), textBefore);
+                                               m.put("linesBeforeOffset", 
linesBeforeOffset);
+                                               start += linesBeforeOffset;
+                                               end += linesBeforeOffset;
+                                               if(next != -1)
+                                                       next += 
linesBeforeOffset;
+                                               break;
+                                       case linesAfter:
+                                               length = 0;
+                                               int linesAfterOffset;
+                                               if(end != next && next != 0){
+                                                       view.replaceTextRange(end, (next 
- end), "");
+                                                       length = next - end;
+                                               }

-                                       spaces = 
Integer.valueOf((String)entry.getValue());
-                                       textBefore = 
makeInsertionString(spaces,'\n');
-                                       insertBefore(end, textBefore);
-                                       linesAfterOffset = spaces - length;
-                                       m.put("linesAfterOffset", 
linesAfterOffset);
-                                       break;
-                               case format:
-                                       setAlignment(start, end, style);
-                                       break;
-                               case firstLineIndent:
- if(Integer.valueOf((String)entry.getValue()) > 0 || style.contains(StylesType.leftMargin))
-                                               setFirstLineIndent(start, 
style);
-                                       break;
-                               case leftMargin:
-                                       
if(style.contains(StylesType.firstLineIndent))
- handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), true);
-                                       else
- handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), false);
-                                       break;
+                                               spaces = 
Integer.valueOf((String)entry.getValue());
+                                               textBefore = 
makeInsertionString(spaces,'\n');
+                                               insertBefore(end, textBefore);
+                                               linesAfterOffset = spaces - 
length;
+                                               m.put("linesAfterOffset", 
linesAfterOffset);
+                                               break;
+                                       case format:
+                                               setAlignment(start, end, style);
+                                               break;
+                                       case firstLineIndent:
+ if(Integer.valueOf((String)entry.getValue()) > 0 || style.contains(StylesType.leftMargin))
+                                                       
setFirstLineIndent(start, style);
+                                               break;
+                                       case leftMargin:
+                                               
if(style.contains(StylesType.firstLineIndent))
+ handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), true);
+                                               else
+ handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), false);
+                                               break;
+                                       default:
+                                               break;
+                               }

-                               default:
-                                       break;
-                       }
-
-                       int offset = (Integer)m.getValue("offset");
+                               int offset = (Integer)m.getValue("offset");

- //inline elements may have different emphasis, so all must be check seperately
-                       for(int i = 0; i < list.size(); i++){
- Styles nodeStyle = stylesTable.makeStylesElement(list.get(i).parentElement(), list.get(i).n);
-                               if(nodeStyle.contains(StylesType.emphasis))
- setFontStyleRange(list.get(i).start + offset, (list.get(i).end + offset) - (list.get(i).start + offset), (StyleRange)nodeStyle.get(StylesType.emphasis)); + //inline elements may have different emphasis, so all must be check seperately
+                               for(int i = 0; i < list.size(); i++){
+ Styles nodeStyle = stylesTable.makeStylesElement(list.get(i).parentElement(), list.get(i).n);
+                                       
if(nodeStyle.contains(StylesType.emphasis))
+ setFontStyleRange(list.get(i).start + offset, (list.get(i).end + offset) - (list.get(i).start + offset), (StyleRange)nodeStyle.get(StylesType.emphasis));
+                               }
                        }
-
+                       setListenerLock(false);
                }
-               setListenerLock(false);
        }

        //private helper method used by adjust style

==============================================================================
Revision: 1e17b7a92010
Branch:   default
Author:   Sahel "sahel.mastoureshgh@xxxxxxxxx"
Date:     Thu Jul 31 18:54:23 2014 UTC
Log:      Fixed merge conflicts second
http://code.google.com/p/brailleblaster/source/detail?r=1e17b7a92010

Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 31 18:51:41 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Jul 31 18:54:23 2014 UTC
@@ -103,7 +103,12 @@
        private PaintObjectListener paintObjListener;
        private int originalStart, originalEnd;
        private TextMapElement currentElement;
+
+       int startSelection;
+       int endSelection;
+
        private boolean multiSelected;
+

public TextView (Manager manager, Group documentWindow, BBSemanticsTable table) { super (manager, documentWindow, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN, table);
@@ -119,7 +124,16 @@
                view.addSelectionListener(selectionListener = new 
SelectionAdapter(){
                        @Override
                        public void widgetSelected(SelectionEvent e) {
+
                                selectionArray = view.getSelectionRanges();
+                               //Added this part for start and end of text 
selection
+                               for (int i = 0; i < selectionArray.length-1; 
i++) {
+                                       startSelection=selectionArray[i];
+                                       
endSelection=selectionArray[i]+selectionArray[i+1];
+
+
+                            }
+                                System.out.println(startSelection+"   
"+endSelection);
                                if(selectionArray[1] > 0){
                                        multiSelected=true;
                                        currentChar = ' ';

Other related posts: