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

  • From: Brandon Roller <brandon.r.roller@xxxxxxxxx>
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Thu, 31 Jul 2014 16:34:25 -0400

Yes, that is next on the agenda alow with removing boxlines.  Once
implemented if you select multiple elements and slect boxline it will wrap
all the elements inside boxlines as a group, not individually.


On Thu, Jul 31, 2014 at 4:25 PM, Vic Beckley <vic.beckley3@xxxxxxxxx> wrote:

> Brandon,
>
>
>
> Thanks for the help. I assumed that was what it would do. It seems to work
> very well so far. It is really a nice feature.
>
>
>
> Do boxlines work with multiple elements selected? It seems to put each
> element in a separate box. I would like to be able to select several
> paragraphs and apply a boxline style to the group of elements. What I mean
> is have only one box surrounding the group of paragraphs. Is this possible?
> Is it possible or planned?
>
>
>
>
>
> Best regards from Ohio,
>
>
>
> Vic
>
>
>
> *From:* brailleblaster-bounce@xxxxxxxxxxxxx [mailto:
> brailleblaster-bounce@xxxxxxxxxxxxx] *On Behalf Of *Brandon Roller
> *Sent:* Thursday, July 31, 2014 3:30 PM
> *To:* brailleblaster@xxxxxxxxxxxxx
> *Subject:* [brailleblaster] Re: 5 new revisions pushed by
> sahel.ma...@xxxxxxxxx on 2014-07-31 18:56 GMT
>
>
>
> Let's say you highlighted three paragraphs and selected heading 2 in the
> style panel.  It would apply heading 2 styles to all three.
>
>
>
> On Thu, Jul 31, 2014 at 3:02 PM, Vic Beckley <vic.beckley3@xxxxxxxxx>
> wrote:
>
> What exactly is "multi select styles?" How do you use it?
>
>
> Best regards from Ohio,
>
> Vic
>
> -----Original Message-----
> From: brailleblaster-bounce@xxxxxxxxxxxxx
> [mailto:brailleblaster-bounce@xxxxxxxxxxxxx] On Behalf Of
> brailleblaster@xxxxxxxxxxxxxx
> Sent: Thursday, July 31, 2014 2:57 PM
> To: brailleblaster@xxxxxxxxxxxxx
> Subject: [brailleblaster] 5 new revisions pushed by sahel.ma...@xxxxxxxxx
> on
> 2014-07-31 18:56 GMT
>
> 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("styl
> e")
> ||
>
> 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.ja
> va
>
> =======================================
> --- /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.ja
> va
> Thu Jul  3 16:07:57 2014 UTC
> +++
>
> /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.ja
> va
> 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.ja
> va
>   /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.ja
> va
> Thu Jul 31 15:38:44 2014 UTC
> +++
>
> /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.ja
> va
> 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: