[brailleblaster] [brailleblaster.newdesign] push by brandon....@xxxxxxxxx - Styles are now updated when an element is split on 2013-09-10 19:51 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Tue, 10 Sep 2013 19:52:18 +0000

Revision: 323f6491f08c
Branch:   default
Author:   Brandon Roller <brandon.r.roller@xxxxxxxxx>
Date:     Tue Sep 10 19:49:10 2013 UTC
Log:      Styles are now updated when an element is split
http://code.google.com/p/brailleblaster/source/detail?r=323f6491f08c&repo=newdesign

Modified:
 /src/main/org/brailleblaster/abstractClasses/AbstractView.java
 /src/main/org/brailleblaster/document/BBDocument.java
 /src/main/org/brailleblaster/document/ElementDivider.java
 /src/main/org/brailleblaster/document/SemanticFileHandler.java
 /src/main/org/brailleblaster/views/BrailleView.java
 /src/main/org/brailleblaster/views/TextView.java
 /src/main/org/brailleblaster/wordprocessor/DocumentManager.java

=======================================
--- /src/main/org/brailleblaster/abstractClasses/AbstractView.java Fri Sep 6 18:16:34 2013 UTC +++ /src/main/org/brailleblaster/abstractClasses/AbstractView.java Tue Sep 10 19:49:10 2013 UTC
@@ -313,6 +313,15 @@
                        }
                }
        }
+
+       public void insertText(int start, String text){
+               setListenerLock(true);
+               int originalPosition = view.getCaretOffset();
+               view.setCaretOffset(start);
+               view.insert(text);
+               view.setCaretOffset(originalPosition);
+               setListenerLock(false);
+       }

        public void clearRange(int start, int length){
                setListenerLock(true);
=======================================
--- /src/main/org/brailleblaster/document/BBDocument.java Fri Sep 6 18:16:34 2013 UTC +++ /src/main/org/brailleblaster/document/BBDocument.java Tue Sep 10 19:49:10 2013 UTC
@@ -431,7 +431,7 @@
        }

public ArrayList<Element> splitElement(MapList list,TextMapElement t, Message m){
-               ElementDivider divider = new ElementDivider(this, table);
+               ElementDivider divider = new ElementDivider(this, table, 
semHandler);
                if(m.getValue("atEnd").equals(true)){
                        ArrayList<TextMapElement>elList = new 
ArrayList<TextMapElement>();
                        elList.add(list.getCurrent());
@@ -526,7 +526,16 @@
                        int [] outlength = new int[1];
                        outlength[0] = text.length() * 10;

- if(lutdml.translateString(preferenceFile, inbuffer, outbuffer, outlength, logFile, "formatFor utd\n mode notUC\n printPages no\n", 0)){
+                       String semPath;
+                       if(dm.getWorkingPath() == null){
+ semPath = BBIni.getProgramDataPath() + BBIni.getFileSep() + "xmlTemplates" + BBIni.getFileSep() + "dtbook.xml";
+                       }
+                       else {
+ semPath = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(dm.getWorkingPath()) + ".xml";
+                       }
+ String configSettings = "formatFor utd\n mode notUC\n printPages no\n" + semHandler.getSemanticsConfigSetting(semPath);
+
+ if(lutdml.translateString(preferenceFile, inbuffer, outbuffer, outlength, logFile, configSettings, 0)){
                                return outlength[0];
                        }
                        else {
@@ -784,10 +793,10 @@
d.setDocType(new DocType(this.getRootElement().getLocalName(), publicId, systemId));
        }

-       public void changeSemanticAction(Message m, TextMapElement t){
+       public void changeSemanticAction(Message m, Element e){
org.brailleblaster.document.BBSemanticsTable.Styles style = (org.brailleblaster.document.BBSemanticsTable.Styles)m.getValue("Style");
                String name = style.getName();
-               Element e = (Element)t.n.getParent();
+               //Element e = (Element)t.n.getParent();
                Attribute attr = e.getAttribute("semantics");
                while(attr.getValue().contains("action")){
                        e = (Element)e.getParent();
=======================================
--- /src/main/org/brailleblaster/document/ElementDivider.java Fri Sep 6 18:16:34 2013 UTC +++ /src/main/org/brailleblaster/document/ElementDivider.java Tue Sep 10 19:49:10 2013 UTC
@@ -6,6 +6,7 @@
 import org.brailleblaster.mapping.TextMapElement;
 import org.brailleblaster.messages.Message;

+import nu.xom.Attribute;
 import nu.xom.Element;
 import nu.xom.Node;
 import nu.xom.Text;
@@ -13,13 +14,15 @@
 public class ElementDivider {
        BBDocument doc;
        BBSemanticsTable table;
+       SemanticFileHandler handler;
        String attribute;
        int nodeIndex;
        int index;

-       public ElementDivider(BBDocument doc, BBSemanticsTable table){
+ public ElementDivider(BBDocument doc, BBSemanticsTable table, SemanticFileHandler handler){
                this.doc = doc;
                this.table = table;
+               this.handler = handler;
        }

        public ArrayList<Element>split(MapList list, TextMapElement t, Message 
m){
@@ -39,7 +42,12 @@

                        Element grandParent = (Element)parent.getParent();
                        int parentIndex = grandParent.indexOf(parent);
-
+                       if(!isDefaultStyle(parent)){
+ firstElement.addAttribute(new Attribute("id", parent.getAttributeValue("id")));
+                               Message styleMessage = new Message(null);
+ styleMessage.put("Style", table.get(table.getKeyFromAttribute(parent)));
+                               doc.changeSemanticAction(styleMessage, 
secondElement);
+                       }
                        replaceElement(els, grandParent, parent, firstElement);
                        insertElement(els, grandParent, secondElement, 
parentIndex + 1);
                }
@@ -71,7 +79,7 @@
                setGlobalVariables(parent, e, t2);
                Element secondElement = createSecondElement(t2, parent, e, 0);

-               if(m.contains("atStart")){
+               if(m.getValue("atStart").equals(true)){
                        e = (Element)t2.n.getParent();
                        parent = (Element)e.getParent();
                }
@@ -83,10 +91,17 @@
                while(parent.getAttributeValue("semantics").contains("action")){
                        parent = (Element)parent.getParent();
                }
-
+
                Element grandParent = (Element)parent.getParent();
                int parentIndex = grandParent.indexOf(parent);

+               if(!isDefaultStyle(parent)){
+ firstElement.addAttribute(new Attribute("id", parent.getAttributeValue("id")));
+                       Message styleMessage = new Message(null);
+                       styleMessage.put("Style", 
table.get(table.getKeyFromAttribute(parent)));
+                       doc.changeSemanticAction(styleMessage, secondElement);
+               }
+
                replaceElement(els, grandParent, parent, firstElement);
                insertElement(els, grandParent, secondElement, parentIndex + 1);

@@ -214,4 +229,13 @@
                nodeIndex = e.indexOf(t.n);
                index = parent.indexOf(e);
        }
+
+       private boolean isDefaultStyle(Element e){
+               String style = table.getKeyFromAttribute(e);
+
+               if(style.equals(handler.getDefault(e.getLocalName())))
+                       return true;
+               else
+                       return false;
+       }
 }
=======================================
--- /src/main/org/brailleblaster/document/SemanticFileHandler.java Thu Aug 1 15:10:48 2013 UTC +++ /src/main/org/brailleblaster/document/SemanticFileHandler.java Tue Sep 10 19:49:10 2013 UTC
@@ -5,6 +5,7 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;

@@ -17,11 +18,14 @@
        private String defaultSemanticsFiles;
        private FileUtils fu;
        private Logger log = BBIni.getLogger();
+       private HashMap<String, String> defaults;

        public SemanticFileHandler(String configPath){
                fu = new FileUtils();
this.configPath = fu.findInProgramData ("liblouisutdml" + BBIni.getFileSep() + "lbu_files" + BBIni.getFileSep() + configPath);
                this.defaultSemanticsFiles = getSemanticsFile(this.configPath);
+               this.defaults = new HashMap<String, String>();
+               makeDefaultMap();
        }

        private String getSemanticsFile(String configPath){
@@ -54,6 +58,35 @@

                return defaultSem;
        }
+
+       private void makeDefaultMap(){
+               String [] tokens = defaultSemanticsFiles.split(",");
+               for(int i = 0; i < tokens.length; i++){
+ String defaultSemFile = BBIni.getProgramDataPath() + BBIni.getFileSep() + "liblouisutdml" + BBIni.getFileSep() + "lbu_files" + BBIni.getFileSep() + tokens[i];
+                       String currentLine;
+
+                       File f = new File(defaultSemFile);
+                       FileReader fr;
+                       try {
+                               fr = new FileReader(f);
+                               BufferedReader br = new BufferedReader(fr);
+
+                               while ((currentLine = br.readLine()) != null) {
+                                       if(!currentLine.contains("#") && 
!currentLine.equals("")){
+                                               String [] tokens2 = 
currentLine.split(" ");
+                                               defaults.put(tokens2[1], 
tokens2[0]);
+                                       }
+                               }
+
+                               br.close();
+                       } catch (FileNotFoundException e) {
+                               e.printStackTrace();
+                       }
+                       catch(IOException e){
+                               e.printStackTrace();
+                       }
+               }
+       }

        public String getSemanticsConfigSetting(String filePath){
                return checkForSemantics(filePath);
@@ -64,7 +97,9 @@
                String fileName = fu.getFileName(filePath) + ".sem";
String tempFile = BBIni.getTempFilesPath() + BBIni.getFileSep() + fileName;
                if(fu.exists(file)){
-                       fu.copyFile(file, tempFile);
+                       if(!file.equals(tempFile))
+                               fu.copyFile(file, tempFile);
+
return "semanticFiles " + defaultSemanticsFiles + "," + tempFile + "\n ";
                }
                else
@@ -138,4 +173,8 @@
        public String getDefaultSemanticsFiles(){
                return defaultSemanticsFiles;
        }
+
+       public String getDefault(String elementName){
+               return defaults.get(elementName);
+       }
 }
=======================================
--- /src/main/org/brailleblaster/views/BrailleView.java Fri Sep 6 18:16:34 2013 UTC +++ /src/main/org/brailleblaster/views/BrailleView.java Tue Sep 10 19:49:10 2013 UTC
@@ -727,7 +727,7 @@
        }

        public void insert(TextMapElement t, Node n, int pos){
- Styles style = stylesTable.makeStylesElement((Element)t.n.getParent(), t.n);
+               Styles style = stylesTable.makeStylesElement(t.parentElement(), 
t.n);
                int margin = 0;
                int originalPosition = view.getCaretOffset();
                Element parent = (Element)n.getParent();
@@ -736,7 +736,7 @@

                setListenerLock(true);
                view.setCaretOffset(pos);
- if(index > 0 && isElement(parent.getChild(index - 1)) && ((Element)parent.getChild(index - 1)).getLocalName().equals("newline")){ + if(index > 0 && isElement(parent.getChild(index - 1)) && ((Element)parent.getChild(index - 1)).getLocalName().equals("newline") && t.brailleList.size() > 0){
                        view.insert("\n");
                        start++;
                        view.setCaretOffset(pos + 1);
@@ -759,6 +759,12 @@
int lineIndent = Integer.valueOf((String)style.get(StylesType.firstLineIndent));
                        view.setLineIndent(startLine, 1, (margin + lineIndent) 
* charWidth);
                }
+
+               if(style.contains(StylesType.format)){
+ int lines = (view.getLineAtOffset(start + n.getValue().length()) - view.getLineAtOffset(start)) + 1;
+
+ view.setLineAlignment(view.getLineAtOffset(start), lines, Integer.valueOf((String)style.get(StylesType.format)));
+               }

                view.setCaretOffset(originalPosition);
                setListenerLock(false);
=======================================
--- /src/main/org/brailleblaster/views/TextView.java Fri Sep 6 18:16:34 2013 UTC +++ /src/main/org/brailleblaster/views/TextView.java Tue Sep 10 19:49:10 2013 UTC
@@ -137,7 +137,7 @@

                                        if(atEnd) {
                                                Message m = 
Message.createInsertNodeMessage(false, false, true);
-                                               m.put("length", originalEnd 
-originalStart);
+                                               m.put("length", originalEnd - 
originalStart);
                                                dm.dispatch(m);
                                                setListenerLock(true);
                                                view.setCaretOffset(currentEnd);
@@ -176,7 +176,7 @@
                                                int pos = view.getCaretOffset();
                                                dm.dispatch(m);
                                                setListenerLock(true);
-                                               view.setCaretOffset(pos + 1);
+                                               view.setCaretOffset(pos + 
(Integer)m.getValue("length"));
                                                e.doit = false;
                                                setCurrent(dm);
                                                
view.setCaretOffset(currentStart);
@@ -519,6 +519,11 @@
int lineIndent = Integer.valueOf((String)style.get(StylesType.firstLineIndent));
                        view.setLineIndent(startLine, 1, (margin + lineIndent) 
* charWidth);
                }
+
+               if(style.contains(StylesType.format)){
+ int lines = (view.getLineAtOffset(start + n.getValue().length()) - view.getLineAtOffset(start)) + 1; + view.setLineAlignment(view.getLineAtOffset(start), lines, Integer.valueOf((String)style.get(StylesType.format)));
+               }

                if(style.contains(StylesType.Font)){
setFontRange(start, reformattedText.length(), Integer.valueOf((String)style.get(StylesType.Font)));
@@ -527,15 +532,6 @@
                view.setCaretOffset(originalPosition);
                setListenerLock(false);
        }
-
-       public void insertText(int start, String text){
-               setListenerLock(true);
-               int originalPosition = view.getCaretOffset();
-               view.setCaretOffset(start);
-               view.insert(text);
-               view.setCaretOffset(originalPosition);
-               setListenerLock(false);
-       }

        private String appendToView(Node n, boolean append){
                String text = "";
=======================================
--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Fri Sep 6 21:48:09 2013 UTC +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Tue Sep 10 19:49:10 2013 UTC
@@ -48,6 +48,8 @@
 import org.brailleblaster.BBIni;
 import org.brailleblaster.document.BBDocument;
 import org.brailleblaster.document.BBSemanticsTable;
+import org.brailleblaster.document.BBSemanticsTable.Styles;
+import org.brailleblaster.document.BBSemanticsTable.StylesType;
 import org.brailleblaster.localization.LocaleHandler;
 import org.brailleblaster.mapping.MapList;
 import org.brailleblaster.mapping.TextMapElement;
@@ -531,16 +533,7 @@

                int textStart = list.get(originalElements.get(0)).start;
int textEnd = list.get(originalElements.get(originalElements.size() - 1)).end;
-               int brailleStart;
-               if(originalElements.get(0) > 0)
- brailleStart = list.get(originalElements.get(0) - 1).brailleList.getLast().end;
-               else {
-                       
if(list.get(originalElements.get(0)).brailleList.getFirst().start > 0)
- brailleStart = list.get(originalElements.get(0)).brailleList.getFirst().start - 1;
-                       else
-                               brailleStart = 0;
-               }
-
+ int brailleStart = list.get(originalElements.get(0)).brailleList.getFirst().start;

int brailleEnd = list.get(originalElements.get(originalElements.size() - 1)).brailleList.getLast().end;

@@ -567,10 +560,31 @@
currentIndex = insertElement(els.get(0), currentIndex, textStart, brailleStart) - 1;
                addTreeItems(firstElementIndex, currentIndex + 1, treeIndex);

-               text.insertText(list.get(currentIndex).end, "\n");
+
+               String insertionString = "";
+ Styles style = styles.get(styles.getKeyFromAttribute(document.getParent(list.get(currentIndex).n, true)));
+
+               if(style.contains(StylesType.linesBefore)){
+ for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesBefore)) + 1; i++){
+                               insertionString += "\n";
+                       }
+               }
+               else if(style.contains(StylesType.linesAfter)){
+ for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesAfter)) + 1; i++){
+                               insertionString += "\n";
+                       }
+               }
+               else {
+                       insertionString = "\n";
+               }
+
+               text.insertText(list.get(currentIndex).end, insertionString);
+ braille.insertText(list.get(currentIndex).brailleList.getLast().end, insertionString); + //braille.insertLineBreak(list.get(currentIndex).brailleList.getLast().end);
+               m.put("length", insertionString.length());

                int secondElementIndex = currentIndex + 1;
- currentIndex = insertElement(els.get(1), currentIndex + 1, list.get(currentIndex).end + 1, list.get(currentIndex).brailleList.getLast().end); + currentIndex = insertElement(els.get(1), currentIndex + 1, list.get(currentIndex).end + insertionString.length(), list.get(currentIndex).brailleList.getLast().end + insertionString.length());
                addTreeItems(secondElementIndex, currentIndex,treeIndex + 1);
list.shiftOffsetsFromIndex(currentIndex, list.get(currentIndex - 1).end - textStart, list.get(currentIndex - 1).brailleList.getLast().end - brailleStart);
        }
@@ -727,7 +741,7 @@
                                }
                        }
                        list.setCurrent(currentIndex);
-                       document.changeSemanticAction(message, 
list.getCurrent());
+ document.changeSemanticAction(message, list.getCurrent().parentElement());
                        group.setRedraw(true);
                }
        }

Other related posts:

  • » [brailleblaster] [brailleblaster.newdesign] push by brandon....@xxxxxxxxx - Styles are now updated when an element is split on 2013-09-10 19:51 GMT - brailleblaster