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); } }