6 new revisions: Revision: 791c3af6a04a Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 14:36:09 2014 UTC Log: create handler superclass for helper classes of manager https://code.google.com/p/brailleblaster/source/detail?r=791c3af6a04a Revision: 1256dce6b76f Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 14:40:23 2014 UTC Log: add Element Splitter to Handler class https://code.google.com/p/brailleblaster/source/detail?r=1256dce6b76f Revision: d1ca3e6fb600 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 16:51:58 2014 UTC Log: add Element Remover to Handler class https://code.google.com/p/brailleblaster/source/detail?r=d1ca3e6fb600 Revision: d23234d1f4a2 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:01:08 2014 UTC Log: Added HideActionHandler to Handler class https://code.google.com/p/brailleblaster/source/detail?r=d23234d1f4a2 Revision: c14c649e35dd Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:03:03 2014 UTC Log: Added TextUpdateHandler to Handler class https://code.google.com/p/brailleblaster/source/detail?r=c14c649e35dd Revision: 5fddc22ccf94 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:05:06 2014 UTC Log: Added StyleHandler to handler class https://code.google.com/p/brailleblaster/source/detail?r=5fddc22ccf94 ============================================================================== Revision: 791c3af6a04a Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 14:36:09 2014 UTC Log: create handler superclass for helper classes of manager https://code.google.com/p/brailleblaster/source/detail?r=791c3af6a04a Added: /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java/src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java
Deleted:/src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java
Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java/src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java
======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 14:36:09 2014 UTC
@@ -0,0 +1,56 @@ +package org.brailleblaster.perspectives.braille.stylers; + +import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.perspectives.braille.mapping.maps.MapList;+import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+ +import nu.xom.Attribute; +import nu.xom.Element; + +public abstract class Handler { + protected static final String BOXLINE = "boxline"; + protected static final String FULLBOX = "fullBox"; + protected static final String TOPBOX = "topBox"; + protected static final String MIDDLEBOX = "middleBox"; + protected static final String BOTTOMBOX = "bottomBox"; + + protected Manager manager; + protected MapList list; + protected ViewInitializer vi; + + public Handler(Manager manager, ViewInitializer vi, MapList list){ + this.manager = manager; + this.vi = vi; + this.list = list; + } + + protected boolean onScreen(int pos){+ int textPos = manager.getText().view.getLineAtOffset(pos) * manager.getText().view.getLineHeight();
+ int viewHeight = manager.getText().view.getClientArea().height; + if(textPos > viewHeight) + return false; + + return true; + } + + protected boolean isBoxLine(Element e){+ if(checkSemanticsAttribute(e, BOXLINE) || checkSemanticsAttribute(e, TOPBOX) || checkSemanticsAttribute(e, MIDDLEBOX) + || checkSemanticsAttribute(e, BOTTOMBOX) || checkSemanticsAttribute(e, FULLBOX))
+ return true; + else + return false; + } + + protected boolean checkSemanticsAttribute(Element e, String value){ + Attribute atr = e.getAttribute("semantics"); + + if(atr == null || !atr.getValue().contains(value)) + return false; + + return true; + } + + protected String getStyle(Element e){ + return e.getAttributeValue("semantics").split(",")[1]; + } +} ======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Thu Dec 18 14:36:09 2014 UTC
@@ -0,0 +1,371 @@ +package org.brailleblaster.perspectives.braille.stylers; + +import java.util.ArrayList; + +import nu.xom.Attribute; +import nu.xom.Element; +import nu.xom.Node; +import nu.xom.ParentNode; +import nu.xom.Text; + +import org.brailleblaster.BBIni; +import org.brailleblaster.document.SemanticFileHandler; +import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.perspectives.braille.document.BrailleDocument; +import org.brailleblaster.perspectives.braille.eventQueue.Event; +import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; +import org.brailleblaster.perspectives.braille.eventQueue.EventTypes;+import org.brailleblaster.perspectives.braille.mapping.elements.BrailleMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
+import org.brailleblaster.perspectives.braille.mapping.maps.MapList; +import org.brailleblaster.perspectives.braille.messages.Message; +import org.brailleblaster.perspectives.braille.messages.Sender;+import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+import org.brailleblaster.perspectives.braille.views.tree.BBTree; +import org.brailleblaster.perspectives.braille.views.wp.BrailleView; +import org.brailleblaster.perspectives.braille.views.wp.TextView; +import org.brailleblaster.util.FileUtils; + +public class InsertElementHandler extends Handler{ + + BrailleDocument doc; + MapList list; + TextView text; + BrailleView braille; + BBTree tree; + EventFrame frame; ++ public InsertElementHandler(Manager manager, ViewInitializer vi, MapList list){
+ super(manager, vi, list); + + this.doc = manager.getDocument(); + this.text = manager.getText(); + this.braille = manager.getBraille(); + this.tree = manager.getTreeView(); + } + + public void insertElement(Message m){ + if(m.getValue("atStart").equals(true)) + insertElementAtBeginning(m); + else + insertElementAtEnd(m); + } + + public void insertElement(EventFrame f){ + frame = new EventFrame();+ while(f.size() > 0 && f.get(f.size() - 1).getEventType().equals(EventTypes.Delete)){
+ insertElement(f.pop()); + } + manager.addRedoEvent(frame); + } + + private void insertElement(Event ev){ + ParentNode p = ev.getParent(); + if(ev.getNode() instanceof Text){ + p.insertChild(ev.getNode(), ev.getParentIndex()); + Element brl = new Element("brl"); + brl.appendChild(new Text("")); + p.insertChild(brl, ev.getParentIndex() + 1);+ ((Element)p.getChild(ev.getParentIndex() + 1)).setNamespaceURI(doc.getRootElement().getNamespaceURI());
+ } + else + p.insertChild(ev.getNode(), ev.getParentIndex()); ++ if(ev.getNode() instanceof Element && ((Element)ev.getNode()).getAttributeValue("semantics").contains("style")){ + ArrayList<TextMapElement>elList = constructMapElements((Element)ev.getNode(), 0);
++ if(!list.empty() && ev.getListIndex() > 0 && list.get(ev.getListIndex() - 1).end == ev.getTextOffset()) + insertInList(elList, ev.getListIndex(), ev.getTextOffset() + 1, ev.getBrailleOffset() + 1);
+ else+ insertInList(elList, ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset());
+ + if(list.size() - 1 != ev.getListIndex() + 1) + list.shiftOffsetsFromIndex(ev.getListIndex() + 1, 1, 1); + + text.insertLineBreak(ev.getTextOffset()); + braille.insertLineBreak(ev.getBrailleOffset()); + tree.rebuildTree(ev.getTreeIndex()); + } + else { + ArrayList<TextMapElement>elList; + if(ev.getNode() instanceof Element) + elList = constructMapElements((Element)ev.getNode(), 0); + else+ elList = constructMapElement((Element)ev.getParent(), ev.getParentIndex());
++ insertInList(elList, ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset());
+ + tree.rebuildTree(ev.getTreeIndex()); + } + + list.setCurrent(ev.getListIndex()); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE));+ frame.addEvent(new Event(EventTypes.Delete, p.getChild(ev.getParentIndex()), vi.getStartIndex(), ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset(), tree.getItemPath()));
+ } + + public void resetElement(EventFrame f){ + frame = new EventFrame(); + while(!f.empty() && f.peek().getEventType().equals(EventTypes.Hide)){ + resetElement(f.pop()); + } + manager.addRedoEvent(frame); + } + + private void resetElement(Event event){ + if(vi.getStartIndex() != event.getFirstSectionIndex()) + list = vi.resetViews(event.getFirstSectionIndex()); + + Element replacedElement = replaceElement(event); + updateSemanticEntry(replacedElement, (Element)event.getNode()); ++ ArrayList<TextMapElement> elList = constructMapElements((Element)event.getNode(), 0); + setViews(elList, event.getListIndex(), event.getTextOffset(), event.getBrailleOffset());
+ + manager.getTreeView().rebuildTree(event.getTreeIndex());+ manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(event.getListIndex()).start, false));
+ manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + + if(!onScreen(event.getTextOffset())) + setTopIndex(event.getTextOffset()); ++ frame.addEvent(new Event(EventTypes.Hide, event.getNode(), vi.getStartIndex(), event.getListIndex(), list.get(event.getListIndex()).start, list.get(event.getListIndex()).brailleList.getFirst().start, tree.getItemPath()));
+ } ++ private void insertInList(ArrayList<TextMapElement>elList, int index, int textOffset, int brailleOffset){
+ for(int i = 0; i < elList.size(); i++, index++){ + list.add(index, elList.get(i)); + list.get(index).setOffsets(textOffset, textOffset); + for(int j = 0; j < list.get(index).brailleList.size(); j++)+ list.get(index).brailleList.get(j).setOffsets(brailleOffset, brailleOffset);
+ } + } + + private void insertElementAtBeginning(Message m){ + if(list.getCurrentIndex() > 0 && list.getCurrent().start != 0)+ doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().start - 1, list.getCurrent().brailleList.getFirst().start - 1,list.getCurrentIndex(),(String) m.getValue("elementName"));
+ else+ doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().start, list.getCurrent().brailleList.getFirst().start, list.getCurrentIndex(),(String) m.getValue("elementName"));
+ + if(list.size() - 1 != list.getCurrentIndex() - 1){ + if(list.getCurrentIndex() == 0) + list.shiftOffsetsFromIndex(list.getCurrentIndex() + 1, 1, 1); + else + list.shiftOffsetsFromIndex(list.getCurrentIndex(), 1, 1); + } + int index = tree.getSelectionIndex(); + + m.put("length", 1); + m.put("newBrailleLength", 1); + m.put("brailleLength", 0); ++ braille.insertLineBreak(list.getCurrent().brailleList.getFirst().start - 1);
+ + tree.newTreeItem(list.get(list.getCurrentIndex()), index, 0); + } + + private void insertElementAtEnd(Message m){+ doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().end + 1, list.getCurrent().brailleList.getLast().end + 1, list.getCurrentIndex() + 1,(String) m.getValue("elementName"));
+ if(list.size() - 1 != list.getCurrentIndex() + 1) + list.shiftOffsetsFromIndex(list.getCurrentIndex() + 2, 1, 1); + + int index = tree.getSelectionIndex(); + + m.put("length", 1); + m.put("newBrailleLength", 1); + m.put("brailleLength", 0); + + braille.insertLineBreak(list.getCurrent().brailleList.getLast().end); + tree.newTreeItem(list.get(list.getCurrentIndex() + 1), index, 1); + } ++ private ArrayList<TextMapElement> constructMapElements(Element e, int index){
+ ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); + if(e.getAttributeValue("semantics").contains("pagenum")) + elList.add(makePageMapElement(e)); + else { + for(int i = index; i < e.getChildCount(); i++){ + if(e.getChild(i) instanceof Text) + elList.add(new TextMapElement(e.getChild(i)));+ else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && !isBoxLine(e)){
+ for(int j = 0; j < e.getChild(i).getChildCount(); j++){ + if(e.getChild(i).getChild(j) instanceof Text)+ elList.get(elList.size() - 1).brailleList.add(new BrailleMapElement(e.getChild(i).getChild(j)));
+ } + }+ else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && isBoxLine(e))
+ elList.add(new BrlOnlyMapElement(e.getChild(i), e)); + else if(e.getChild(i) instanceof Element) + elList.addAll(constructMapElements((Element)e.getChild(i), 0)); + } + } + + return elList; + } ++ private ArrayList<TextMapElement> constructMapElement(Element e, int index){
+ ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); + if(e.getAttributeValue("semantics").contains("pagenum")) + elList.add(makePageMapElement(e)); + else { + for(int i = index; i < index + 2; i++){ + if(e.getChild(i) instanceof Text) + elList.add(new TextMapElement(e.getChild(i)));+ else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && !isBoxLine(e)){
+ for(int j = 0; j < e.getChild(i).getChildCount(); j++){ + if(e.getChild(i).getChild(j) instanceof Text)+ elList.get(elList.size() - 1).brailleList.add(new BrailleMapElement(e.getChild(i).getChild(j)));
+ } + }+ else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && isBoxLine(e))
+ elList.add(new BrlOnlyMapElement(e.getChild(i), e)); + } + } + + return elList; + } ++ private void setViews(ArrayList<TextMapElement> elList, int index, int textOffset, int brailleOffset ){
+ Message m = new Message(null); + int count = elList.size(); + + if(shouldInsertBlankLine(elList)) + createBlankLine(textOffset, brailleOffset, index); + + for(int i = 0; i < count; i++){+ if(i > 0 && (isBlockElement(elList.get(i)) || afterLineBreak(elList.get(i)))){
+ createBlankLine(textOffset, brailleOffset, index); + textOffset++; + brailleOffset++; + } + + int brailleLength = 0; ++ manager.getText().resetElement(m, vi, list, index, textOffset, elList.get(i));
+ textOffset = elList.get(i).end; + + for(int j = 0; j < elList.get(i).brailleList.size(); j++){+ manager.getBraille().resetElement(m, list, list.get(index), elList.get(i).brailleList.get(j), brailleOffset);
+ brailleOffset = (Integer)m.getValue("brailleOffset"); + brailleLength += (Integer)m.getValue("brailleLength"); + } + + int textLength =list.get(index).end - list.get(index).start; + + textLength = (Integer)m.getValue("textLength"); + textOffset = (Integer)m.getValue("textOffset"); + list.shiftOffsetsFromIndex(index + 1, textLength, brailleLength); + index++; + } + } + + private boolean hasId(Element e){ + if(e.getAttribute("id") != null) + return true; + else + return false; + } + + private boolean hasSameSemantics(Element e, Element newElement){ + Attribute sem1 = e.getAttribute("semantics"); + Attribute sem2 = newElement.getAttribute("semantics"); + if(sem1.equals(sem2)) + return true; + else + return false; + } + + private boolean firstInLineElement(Element e){ + Element parent = (Element)e.getParent();+ if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){
+ if(parent.indexOf(e) == 0) + return true; + } + + return false; + } + + //returns element removed from DOM + private Element replaceElement(Event f){ + ParentNode parent = f.getParent(); + Element replacedElement = (Element)parent.getChild(f.getParentIndex()); + parent.replaceChild(replacedElement, f.getNode()); + + return replacedElement; + } ++ private void updateSemanticEntry(Element replacedElement, Element elementToInsert){ + if((hasId(replacedElement) && !hasId(elementToInsert) && !hasSameSemantics(replacedElement, elementToInsert)))
+ removeSemanticEntry(replacedElement);+ else if(hasId(replacedElement) && hasId(elementToInsert) && !hasSameSemantics(replacedElement,elementToInsert))
+ appendSemanticEntry(elementToInsert); + } + + private void removeSemanticEntry(Element e){ + FileUtils fu = new FileUtils();+ SemanticFileHandler sfh = new SemanticFileHandler(manager.getCurrentConfig()); + String file = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(manager.getWorkingPath()) + ".sem";
+ String id = e.getAttributeValue("id"); + sfh.removeSemanticEntry(file, id); + } + + private void appendSemanticEntry(Element e){ + FileUtils fu = new FileUtils();+ SemanticFileHandler sfh = new SemanticFileHandler(manager.getCurrentConfig()); + String file = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(manager.getWorkingPath()) + ".sem";
+ String id = e.getAttributeValue("id"); + sfh.removeSemanticEntry(file, id); + String [] tokens = e.getAttributeValue("semantics").split(","); + sfh.writeEntry(file, tokens[1], e.getLocalName(), id); + } + + private PageMapElement makePageMapElement(Element e){ + Node textNode = doc.findPrintPageNode(e); + Node brailleNode = doc.findBraillePageNode(e); + PageMapElement p = new PageMapElement(e, textNode); + p.setBraillePage(brailleNode); + return p; + } + + private boolean shouldInsertBlankLine(ArrayList<TextMapElement>elList){+ return elList.get(elList.size() - 1).parentElement().getAttributeValue("semantics").contains("style") + || firstInLineElement(elList.get(0).parentElement()) || elList.get(0) instanceof PageMapElement || elList.get(0) instanceof BrlOnlyMapElement;
+ } + + private boolean isBlockElement(TextMapElement t){ + if( t instanceof PageMapElement || t instanceof BrlOnlyMapElement) + return true; + else {+ if(t.parentElement().getAttributeValue("semantics").contains("style") && t.parentElement().indexOf(t.n) == 0)
+ return true;+ else if(firstInLineElement(t.parentElement()) && t.parentElement().indexOf(t.n) == 0)
+ return true; + } + return false; + } ++ //checks for a rare case if a line break element occurs within a block element
+ private boolean afterLineBreak(TextMapElement t){ + if(t instanceof PageMapElement || t instanceof BrlOnlyMapElement) + return false; + else if(t.parentElement().indexOf(t.n) > 0){ + int index = t.parentElement().indexOf(t.n);+ if(t.parentElement().getChild(index - 1) instanceof Element && ((Element)t.parentElement().getChild(index - 1)).getLocalName().equals("br"))
+ return true; + } + + return false; + } ++ private void createBlankLine(int textOffset, int brailleOffset, int index){
+ manager.getText().insertText(textOffset, "\n"); + manager.getBraille().insertText(brailleOffset, "\n"); + list.shiftOffsetsFromIndex(index, 1, 1); + } + + private void setTopIndex(int pos){ + int line = manager.getTextView().getLineAtOffset(pos); + manager.getTextView().setTopIndex(line); + } +} =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java Tue Dec 16 18:49:03 2014 UTC
+++ /dev/null @@ -1,393 +0,0 @@ -package org.brailleblaster.perspectives.braille.stylers; - -import java.util.ArrayList; - -import nu.xom.Attribute; -import nu.xom.Element; -import nu.xom.Node; -import nu.xom.ParentNode; -import nu.xom.Text; - -import org.brailleblaster.BBIni; -import org.brailleblaster.document.SemanticFileHandler; -import org.brailleblaster.perspectives.braille.Manager; -import org.brailleblaster.perspectives.braille.document.BrailleDocument; -import org.brailleblaster.perspectives.braille.eventQueue.Event; -import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; -import org.brailleblaster.perspectives.braille.eventQueue.EventTypes;-import org.brailleblaster.perspectives.braille.mapping.elements.BrailleMapElement; -import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; -import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; -import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
-import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.messages.Message; -import org.brailleblaster.perspectives.braille.messages.Sender;-import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
-import org.brailleblaster.perspectives.braille.views.tree.BBTree; -import org.brailleblaster.perspectives.braille.views.wp.BrailleView; -import org.brailleblaster.perspectives.braille.views.wp.TextView; -import org.brailleblaster.util.FileUtils; - -public class ElementInserter { - - BrailleDocument doc; - MapList list; - Manager manager; - ViewInitializer vi; - TextView text; - BrailleView braille; - BBTree tree; - EventFrame frame; -- public ElementInserter(ViewInitializer vi, BrailleDocument doc, MapList list, Manager manager){
- this.vi = vi; - this.doc = doc; - this.list = list; - this.manager = manager; - this.text = manager.getText(); - this.braille = manager.getBraille(); - this.tree = manager.getTreeView(); - } - - public void insertElement(Message m){ - if(m.getValue("atStart").equals(true)) - insertElementAtBeginning(m); - else - insertElementAtEnd(m); - } - - public void insertElement(EventFrame f){ - frame = new EventFrame();- while(f.size() > 0 && f.get(f.size() - 1).getEventType().equals(EventTypes.Delete)){
- insertElement(f.pop()); - } - manager.addRedoEvent(frame); - } - - private void insertElement(Event ev){ - ParentNode p = ev.getParent(); - if(ev.getNode() instanceof Text){ - p.insertChild(ev.getNode(), ev.getParentIndex()); - Element brl = new Element("brl"); - brl.appendChild(new Text("")); - p.insertChild(brl, ev.getParentIndex() + 1);- ((Element)p.getChild(ev.getParentIndex() + 1)).setNamespaceURI(doc.getRootElement().getNamespaceURI());
- } - else - p.insertChild(ev.getNode(), ev.getParentIndex()); -- if(ev.getNode() instanceof Element && ((Element)ev.getNode()).getAttributeValue("semantics").contains("style")){ - ArrayList<TextMapElement>elList = constructMapElements((Element)ev.getNode(), 0);
-- if(!list.empty() && ev.getListIndex() > 0 && list.get(ev.getListIndex() - 1).end == ev.getTextOffset()) - insertInList(elList, ev.getListIndex(), ev.getTextOffset() + 1, ev.getBrailleOffset() + 1);
- else- insertInList(elList, ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset());
- - if(list.size() - 1 != ev.getListIndex() + 1) - list.shiftOffsetsFromIndex(ev.getListIndex() + 1, 1, 1); - - text.insertLineBreak(ev.getTextOffset()); - braille.insertLineBreak(ev.getBrailleOffset()); - tree.rebuildTree(ev.getTreeIndex()); - } - else { - ArrayList<TextMapElement>elList; - if(ev.getNode() instanceof Element) - elList = constructMapElements((Element)ev.getNode(), 0); - else- elList = constructMapElement((Element)ev.getParent(), ev.getParentIndex());
-- insertInList(elList, ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset());
- - tree.rebuildTree(ev.getTreeIndex()); - } - - list.setCurrent(ev.getListIndex()); - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE));- frame.addEvent(new Event(EventTypes.Delete, p.getChild(ev.getParentIndex()), vi.getStartIndex(), ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset(), tree.getItemPath()));
- } - - public void resetElement(EventFrame f){ - frame = new EventFrame(); - while(!f.empty() && f.peek().getEventType().equals(EventTypes.Hide)){ - resetElement(f.pop()); - } - manager.addRedoEvent(frame); - } - - private void resetElement(Event event){ - if(vi.getStartIndex() != event.getFirstSectionIndex()) - list = vi.resetViews(event.getFirstSectionIndex()); - - Element replacedElement = replaceElement(event); - updateSemanticEntry(replacedElement, (Element)event.getNode()); -- ArrayList<TextMapElement> elList = constructMapElements((Element)event.getNode(), 0); - setViews(elList, event.getListIndex(), event.getTextOffset(), event.getBrailleOffset());
- - manager.getTreeView().rebuildTree(event.getTreeIndex());- manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(event.getListIndex()).start, false));
- manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); - - if(!onScreen(event.getTextOffset())) - setTopIndex(event.getTextOffset()); -- frame.addEvent(new Event(EventTypes.Hide, event.getNode(), vi.getStartIndex(), event.getListIndex(), list.get(event.getListIndex()).start, list.get(event.getListIndex()).brailleList.getFirst().start, tree.getItemPath()));
- } -- private void insertInList(ArrayList<TextMapElement>elList, int index, int textOffset, int brailleOffset){
- for(int i = 0; i < elList.size(); i++, index++){ - list.add(index, elList.get(i)); - list.get(index).setOffsets(textOffset, textOffset); - for(int j = 0; j < list.get(index).brailleList.size(); j++)- list.get(index).brailleList.get(j).setOffsets(brailleOffset, brailleOffset);
- } - } - - private void insertElementAtBeginning(Message m){ - if(list.getCurrentIndex() > 0 && list.getCurrent().start != 0)- doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().start - 1, list.getCurrent().brailleList.getFirst().start - 1,list.getCurrentIndex(),(String) m.getValue("elementName"));
- else- doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().start, list.getCurrent().brailleList.getFirst().start, list.getCurrentIndex(),(String) m.getValue("elementName"));
- - if(list.size() - 1 != list.getCurrentIndex() - 1){ - if(list.getCurrentIndex() == 0) - list.shiftOffsetsFromIndex(list.getCurrentIndex() + 1, 1, 1); - else - list.shiftOffsetsFromIndex(list.getCurrentIndex(), 1, 1); - } - int index = tree.getSelectionIndex(); - - m.put("length", 1); - m.put("newBrailleLength", 1); - m.put("brailleLength", 0); -- braille.insertLineBreak(list.getCurrent().brailleList.getFirst().start - 1);
- - tree.newTreeItem(list.get(list.getCurrentIndex()), index, 0); - } - - private void insertElementAtEnd(Message m){- doc.insertElement(vi, list, list.getCurrent(), list.getCurrent().end + 1, list.getCurrent().brailleList.getLast().end + 1, list.getCurrentIndex() + 1,(String) m.getValue("elementName"));
- if(list.size() - 1 != list.getCurrentIndex() + 1) - list.shiftOffsetsFromIndex(list.getCurrentIndex() + 2, 1, 1); - - int index = tree.getSelectionIndex(); - - m.put("length", 1); - m.put("newBrailleLength", 1); - m.put("brailleLength", 0); - - braille.insertLineBreak(list.getCurrent().brailleList.getLast().end); - tree.newTreeItem(list.get(list.getCurrentIndex() + 1), index, 1); - } -- private ArrayList<TextMapElement> constructMapElements(Element e, int index){
- ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); - if(e.getAttributeValue("semantics").contains("pagenum")) - elList.add(makePageMapElement(e)); - else { - for(int i = index; i < e.getChildCount(); i++){ - if(e.getChild(i) instanceof Text) - elList.add(new TextMapElement(e.getChild(i)));- else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && !isBoxline(e)){
- for(int j = 0; j < e.getChild(i).getChildCount(); j++){ - if(e.getChild(i).getChild(j) instanceof Text)- elList.get(elList.size() - 1).brailleList.add(new BrailleMapElement(e.getChild(i).getChild(j)));
- } - }- else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && isBoxline(e))
- elList.add(new BrlOnlyMapElement(e.getChild(i), e)); - else if(e.getChild(i) instanceof Element) - elList.addAll(constructMapElements((Element)e.getChild(i), 0)); - } - } - - return elList; - } -- private ArrayList<TextMapElement> constructMapElement(Element e, int index){
- ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); - if(e.getAttributeValue("semantics").contains("pagenum")) - elList.add(makePageMapElement(e)); - else { - for(int i = index; i < index + 2; i++){ - if(e.getChild(i) instanceof Text) - elList.add(new TextMapElement(e.getChild(i)));- else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && !isBoxline(e)){
- for(int j = 0; j < e.getChild(i).getChildCount(); j++){ - if(e.getChild(i).getChild(j) instanceof Text)- elList.get(elList.size() - 1).brailleList.add(new BrailleMapElement(e.getChild(i).getChild(j)));
- } - }- else if(e.getChild(i) instanceof Element && ((Element)e.getChild(i)).getLocalName().equals("brl") && isBoxline(e))
- elList.add(new BrlOnlyMapElement(e.getChild(i), e)); - } - } - - return elList; - } -- private void setViews(ArrayList<TextMapElement> elList, int index, int textOffset, int brailleOffset ){
- Message m = new Message(null); - int count = elList.size(); - - if(shouldInsertBlankLine(elList)) - createBlankLine(textOffset, brailleOffset, index); - - for(int i = 0; i < count; i++){- if(i > 0 && (isBlockElement(elList.get(i)) || afterLineBreak(elList.get(i)))){
- createBlankLine(textOffset, brailleOffset, index); - textOffset++; - brailleOffset++; - } - - int brailleLength = 0; -- manager.getText().resetElement(m, vi, list, index, textOffset, elList.get(i));
- textOffset = elList.get(i).end; - - for(int j = 0; j < elList.get(i).brailleList.size(); j++){- manager.getBraille().resetElement(m, list, list.get(index), elList.get(i).brailleList.get(j), brailleOffset);
- brailleOffset = (Integer)m.getValue("brailleOffset"); - brailleLength += (Integer)m.getValue("brailleLength"); - } - - int textLength =list.get(index).end - list.get(index).start; - - textLength = (Integer)m.getValue("textLength"); - textOffset = (Integer)m.getValue("textOffset"); - list.shiftOffsetsFromIndex(index + 1, textLength, brailleLength); - index++; - } - } - - private boolean hasId(Element e){ - if(e.getAttribute("id") != null) - return true; - else - return false; - } - - private boolean hasSameSemantics(Element e, Element newElement){ - Attribute sem1 = e.getAttribute("semantics"); - Attribute sem2 = newElement.getAttribute("semantics"); - if(sem1.equals(sem2)) - return true; - else - return false; - } - - private boolean firstInLineElement(Element e){ - Element parent = (Element)e.getParent();- if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){
- if(parent.indexOf(e) == 0) - return true; - } - - return false; - } - - //returns element removed from DOM - private Element replaceElement(Event f){ - ParentNode parent = f.getParent(); - Element replacedElement = (Element)parent.getChild(f.getParentIndex()); - parent.replaceChild(replacedElement, f.getNode()); - - return replacedElement; - } -- private void updateSemanticEntry(Element replacedElement, Element elementToInsert){ - if((hasId(replacedElement) && !hasId(elementToInsert) && !hasSameSemantics(replacedElement, elementToInsert)))
- removeSemanticEntry(replacedElement);- else if(hasId(replacedElement) && hasId(elementToInsert) && !hasSameSemantics(replacedElement,elementToInsert))
- appendSemanticEntry(elementToInsert); - } - - private void removeSemanticEntry(Element e){ - FileUtils fu = new FileUtils();- SemanticFileHandler sfh = new SemanticFileHandler(manager.getCurrentConfig()); - String file = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(manager.getWorkingPath()) + ".sem";
- String id = e.getAttributeValue("id"); - sfh.removeSemanticEntry(file, id); - } - - private void appendSemanticEntry(Element e){ - FileUtils fu = new FileUtils();- SemanticFileHandler sfh = new SemanticFileHandler(manager.getCurrentConfig()); - String file = BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(manager.getWorkingPath()) + ".sem";
- String id = e.getAttributeValue("id"); - sfh.removeSemanticEntry(file, id); - String [] tokens = e.getAttributeValue("semantics").split(","); - sfh.writeEntry(file, tokens[1], e.getLocalName(), id); - } - - private PageMapElement makePageMapElement(Element e){ - Node textNode = doc.findPrintPageNode(e); - Node brailleNode = doc.findBraillePageNode(e); - PageMapElement p = new PageMapElement(e, textNode); - p.setBraillePage(brailleNode); - return p; - } - - private boolean shouldInsertBlankLine(ArrayList<TextMapElement>elList){- return elList.get(elList.size() - 1).parentElement().getAttributeValue("semantics").contains("style") - || firstInLineElement(elList.get(0).parentElement()) || elList.get(0) instanceof PageMapElement || elList.get(0) instanceof BrlOnlyMapElement;
- } - - private boolean isBlockElement(TextMapElement t){ - if( t instanceof PageMapElement || t instanceof BrlOnlyMapElement) - return true; - else {- if(t.parentElement().getAttributeValue("semantics").contains("style") && t.parentElement().indexOf(t.n) == 0)
- return true;- else if(firstInLineElement(t.parentElement()) && t.parentElement().indexOf(t.n) == 0)
- return true; - } - return false; - } -- //checks for a rare case if a line break element occurs within a block element
- private boolean afterLineBreak(TextMapElement t){ - if(t instanceof PageMapElement || t instanceof BrlOnlyMapElement) - return false; - else if(t.parentElement().indexOf(t.n) > 0){ - int index = t.parentElement().indexOf(t.n);- if(t.parentElement().getChild(index - 1) instanceof Element && ((Element)t.parentElement().getChild(index - 1)).getLocalName().equals("br"))
- return true; - } - - return false; - } -- private void createBlankLine(int textOffset, int brailleOffset, int index){
- manager.getText().insertText(textOffset, "\n"); - manager.getBraille().insertText(brailleOffset, "\n"); - list.shiftOffsetsFromIndex(index, 1, 1); - } - - private boolean isBoxline(Element e){ - Attribute attr = e.getAttribute("semantics"); - if(attr != null){- if(attr.getValue().contains("boxline") || attr.getValue().contains("topBox") || attr.getValue().contains("bottomBox") || attr.getValue().contains("middlebox") || attr.getValue().contains("fullBox"))
- return true; - } - - return false; - } - - private boolean onScreen(int pos){- int textPos = manager.getText().view.getLineAtOffset(pos) * manager.getText().view.getLineHeight();
- int viewHeight = manager.getText().view.getClientArea().height; - if(textPos > viewHeight) - return false; - - return true; - } - - private void setTopIndex(int pos){ - int line = manager.getTextView().getLineAtOffset(pos); - manager.getTextView().setTopIndex(line); - } -} =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Tue Dec 16 15:50:24 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 14:36:09 2014 UTC
@@ -69,7 +69,7 @@import org.brailleblaster.perspectives.braille.spellcheck.SpellCheckManager;
import org.brailleblaster.perspectives.braille.stylepanel.StyleManager; import org.brailleblaster.perspectives.braille.stylers.BoxlineHandler; -import org.brailleblaster.perspectives.braille.stylers.ElementInserter;+import org.brailleblaster.perspectives.braille.stylers.InsertElementHandler;
import org.brailleblaster.perspectives.braille.stylers.ElementRemover; import org.brailleblaster.perspectives.braille.stylers.ElementSplitter; import org.brailleblaster.perspectives.braille.stylers.HideActionHandler; @@ -636,7 +636,7 @@ splitter.splitElement(m); } else {- ElementInserter inserter = new ElementInserter(vi, document, list, this); + InsertElementHandler inserter = new InsertElementHandler(this, vi, list);
inserter.insertElement(m); } } @@ -699,7 +699,7 @@ if (document.getDOM() != null && text.view.getText().length() > 0) { containerSash.setRedraw(false); if(message.getValue("isBoxline").equals(true)){ - BoxlineHandler bxh = new BoxlineHandler(this, list, vi); + BoxlineHandler bxh = new BoxlineHandler(this, vi ,list); bxh.handleBoxline(message); } else{ =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Tue Dec 16 18:10:44 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Thu Dec 18 14:36:09 2014 UTC
@@ -3,7 +3,7 @@ import org.brailleblaster.perspectives.braille.Manager; import org.brailleblaster.perspectives.braille.document.BrailleDocument; import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.stylers.ElementInserter;+import org.brailleblaster.perspectives.braille.stylers.InsertElementHandler;
import org.brailleblaster.perspectives.braille.stylers.StyleHandler; import org.brailleblaster.perspectives.braille.stylers.TextUpdateHandler;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
@@ -28,11 +28,11 @@ case Insert: break; case Delete:- ElementInserter inserter = new ElementInserter(vi, doc, list, manager); + InsertElementHandler inserter = new InsertElementHandler(manager, vi, list);
inserter.insertElement(frame); break; case Hide: - ElementInserter ei = new ElementInserter(vi, doc, list, manager); + InsertElementHandler ei = new InsertElementHandler(manager, vi, list); ei.resetElement(frame); break; case Style_Change: =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Fri Dec 12 17:44:51 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Thu Dec 18 14:36:09 2014 UTC
@@ -4,7 +4,6 @@ import java.util.Iterator; import java.util.Set; -import nu.xom.Attribute; import nu.xom.Document; import nu.xom.Element; import nu.xom.Elements; @@ -29,32 +28,22 @@ import org.brailleblaster.perspectives.braille.views.wp.BrailleView; import org.brailleblaster.perspectives.braille.views.wp.TextView; -public class BoxlineHandler { +public class BoxlineHandler extends Handler{ - private static final String BOXLINE = "boxline"; - private static final String FULLBOX = "fullBox"; - private static final String TOPBOX = "topBox"; - private static final String MIDDLEBOX = "middleBox"; - private static final String BOTTOMBOX = "bottomBox"; - - Manager manager; BrailleDocument document; BBSemanticsTable styles; BBTree treeView; TextView text; BrailleView braille; - MapList list; - ViewInitializer vi; - public BoxlineHandler(Manager manager, MapList list, ViewInitializer vi){ - this.manager = manager; + public BoxlineHandler(Manager manager, ViewInitializer vi, MapList list){ + super(manager, vi, list); + this.document = manager.getDocument(); this.styles = manager.getStyleTable(); this.text = manager.getText(); this.braille = manager.getBraille(); this.treeView = manager.getTreeView(); - this.list = list; - this.vi = vi; } public void handleBoxline(Message message){ @@ -80,7 +69,6 @@ }private void createSingleBoxLine(ArrayList<TextMapElement> itemList, ArrayList<Element>parents, Message message){
- boolean invalid = false; for(int i = 0; i < itemList.size() && !invalid; i++){ if(itemList.get(i) instanceof PageMapElement) @@ -644,23 +632,6 @@ treeView.resetTreeItem(boxline); boxline.getParent().removeChild(boxline); } - - private boolean isBoxLine(Element e){- if(checkSemanticsAttribute(e, BOXLINE) || checkSemanticsAttribute(e, TOPBOX) || checkSemanticsAttribute(e, MIDDLEBOX) - || checkSemanticsAttribute(e, BOTTOMBOX) || checkSemanticsAttribute(e, FULLBOX))
- return true; - else - return false; - } - - private boolean checkSemanticsAttribute(Element e, String value){ - Attribute atr = e.getAttribute("semantics"); - - if(atr == null || !atr.getValue().contains(value)) - return false; - - return true; - } private Text findText(Node n){ if(n.getChild(0) instanceof Text) @@ -688,10 +659,6 @@ m.put("action", style); manager.getDocument().applyAction(m); } - - private String getStyle(Element box){ - return box.getAttributeValue("semantics").split(",")[1]; - } private int getMatchingParent(ArrayList<TextMapElement>elList, int index){ Element parent = elList.get(index).parentElement(); ============================================================================== Revision: 1256dce6b76f Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 14:40:23 2014 UTC Log: add Element Splitter to Handler class https://code.google.com/p/brailleblaster/source/detail?r=1256dce6b76f Added:/src/main/org/brailleblaster/perspectives/braille/stylers/SplitElementHandler.java
Deleted:/src/main/org/brailleblaster/perspectives/braille/stylers/ElementSplitter.java
Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java ======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylers/SplitElementHandler.java Thu Dec 18 14:40:23 2014 UTC
@@ -0,0 +1,127 @@ +package org.brailleblaster.perspectives.braille.stylers; + +import java.util.ArrayList; + +import nu.xom.Element; +import nu.xom.Text; + +import org.brailleblaster.perspectives.braille.Manager;+import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; +import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
+import org.brailleblaster.perspectives.braille.mapping.maps.MapList; +import org.brailleblaster.perspectives.braille.messages.Message;+import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+import org.brailleblaster.perspectives.braille.views.tree.BBTree; +import org.brailleblaster.perspectives.braille.views.wp.BrailleView; +import org.brailleblaster.perspectives.braille.views.wp.TextView; + +public class SplitElementHandler extends Handler{ + + TextView text; + BrailleView braille; + BBTree tree; ++ public SplitElementHandler(Manager manager, ViewInitializer vi, MapList list){
+ super(manager, vi, list); + + text = manager.getText(); + braille = manager.getBraille(); + tree = manager.getTreeView(); + } + + public void splitElement(Message m){ + int treeIndex = tree.getBlockElementIndex(); ++ ArrayList<Integer> originalElements = list.findTextMapElementRange(list.getCurrentIndex(), (Element)list.getCurrent().parentElement(), true); + ArrayList<Element> els = manager.getDocument().splitElement(list, list.getCurrent(), m);
+ + int textStart = list.get(originalElements.get(0)).start;+ int textEnd = list.get(originalElements.get(originalElements.size() - 1)).end;
++ int brailleStart = list.get(originalElements.get(0)).brailleList.getFirst().start; + int brailleEnd = list.get(originalElements.get(originalElements.size() - 1)).brailleList.getLast().end;
+ + int currentIndex = list.getCurrentIndex(); + + for(int i = originalElements.size() - 1; i >= 0; i--){ + int pos = originalElements.get(i); + + if(pos < currentIndex){ + vi.remove(list, pos); + currentIndex--; + } + else if(pos >= currentIndex){ + vi.remove(list, pos); + } + } + + text.clearTextRange(textStart, textEnd - textStart); + braille.clearTextRange(brailleStart, brailleEnd - brailleStart);+ list.shiftOffsetsFromIndex(currentIndex, -(textEnd - textStart), -(brailleEnd - brailleStart));
+ + int firstElementIndex = currentIndex;+ currentIndex = insertElement(els.get(0), currentIndex, textStart, brailleStart) - 1;
+ + String insertionString = "";+ Styles style = manager.getStyleTable().get(manager.getStyleTable().getKeyFromAttribute(manager.getDocument().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);
+ m.put("length", insertionString.length()); + + int secondElementIndex = currentIndex + 1;+ currentIndex = insertElement(els.get(1), currentIndex + 1, list.get(currentIndex).end + insertionString.length(), list.get(currentIndex).brailleList.getLast().end + insertionString.length());
++ list.shiftOffsetsFromIndex(currentIndex, list.get(currentIndex - 1).end - textStart, list.get(currentIndex - 1).brailleList.getLast().end - brailleStart);
++ tree.split(Message.createSplitTreeMessage(firstElementIndex, secondElementIndex, currentIndex, treeIndex));
+ } ++ private int insertElement(Element e, int index, int start, int brailleStart){
+ int count = e.getChildCount(); + int currentIndex = index; + int currentStart = start; + int currentBrailleStart = brailleStart; + + for(int i = 0; i < count; i++){ + if(e.getChild(i) instanceof Text){ + text.insertText(vi,list, currentIndex, currentStart, e.getChild(i)); + currentStart = list.get(currentIndex).end; + i++;+ insertBraille((Element)e.getChild(i), currentIndex, currentBrailleStart);
+ currentBrailleStart = list.get(currentIndex).brailleList.getLast().end; + currentIndex++; + }+ else if(e.getChild(i) instanceof Element && !((Element)e.getChild(i)).getLocalName().equals("brl")){ + currentIndex = insertElement((Element)e.getChild(i), currentIndex, currentStart, currentBrailleStart);
+ currentStart = list.get(currentIndex - 1).end;+ currentBrailleStart = list.get(currentIndex - 1).brailleList.getLast().end;
+ } + } + + return currentIndex; + } + + private void insertBraille(Element e, int index, int brailleStart){ + int count = e.getChildCount(); + + for(int i = 0; i < count; i++){ + if(e.getChild(i) instanceof Text){ + braille.insert(list.get(index), e.getChild(i), brailleStart); + brailleStart = list.get(index).brailleList.getLast().end; + } + } + } +} =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementSplitter.java Wed Dec 3 14:11:02 2014 UTC
+++ /dev/null @@ -1,130 +0,0 @@ -package org.brailleblaster.perspectives.braille.stylers; - -import java.util.ArrayList; - -import nu.xom.Element; -import nu.xom.Text; - -import org.brailleblaster.perspectives.braille.Manager;-import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; -import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
-import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.messages.Message;-import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
-import org.brailleblaster.perspectives.braille.views.tree.BBTree; -import org.brailleblaster.perspectives.braille.views.wp.BrailleView; -import org.brailleblaster.perspectives.braille.views.wp.TextView; - -public class ElementSplitter { - Manager manager; - MapList list; - TextView text; - BrailleView braille; - BBTree tree; - ViewInitializer vi; - - public ElementSplitter(Manager manager, MapList list, ViewInitializer vi){ - this.manager = manager; - this.list = list; - this.vi = vi; - text = manager.getText(); - braille = manager.getBraille(); - tree = manager.getTreeView(); - } - - public void splitElement(Message m){ - int treeIndex = tree.getBlockElementIndex(); -- ArrayList<Integer> originalElements = list.findTextMapElementRange(list.getCurrentIndex(), (Element)list.getCurrent().parentElement(), true); - ArrayList<Element> els = manager.getDocument().splitElement(list, list.getCurrent(), m);
- - int textStart = list.get(originalElements.get(0)).start;- int textEnd = list.get(originalElements.get(originalElements.size() - 1)).end;
-- int brailleStart = list.get(originalElements.get(0)).brailleList.getFirst().start; - int brailleEnd = list.get(originalElements.get(originalElements.size() - 1)).brailleList.getLast().end;
- - int currentIndex = list.getCurrentIndex(); - - for(int i = originalElements.size() - 1; i >= 0; i--){ - int pos = originalElements.get(i); - - if(pos < currentIndex){ - vi.remove(list, pos); - currentIndex--; - } - else if(pos >= currentIndex){ - vi.remove(list, pos); - } - } - - text.clearTextRange(textStart, textEnd - textStart); - braille.clearTextRange(brailleStart, brailleEnd - brailleStart);- list.shiftOffsetsFromIndex(currentIndex, -(textEnd - textStart), -(brailleEnd - brailleStart));
- - int firstElementIndex = currentIndex;- currentIndex = insertElement(els.get(0), currentIndex, textStart, brailleStart) - 1;
- - String insertionString = "";- Styles style = manager.getStyleTable().get(manager.getStyleTable().getKeyFromAttribute(manager.getDocument().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);
- m.put("length", insertionString.length()); - - int secondElementIndex = currentIndex + 1;- currentIndex = insertElement(els.get(1), currentIndex + 1, list.get(currentIndex).end + insertionString.length(), list.get(currentIndex).brailleList.getLast().end + insertionString.length());
-- list.shiftOffsetsFromIndex(currentIndex, list.get(currentIndex - 1).end - textStart, list.get(currentIndex - 1).brailleList.getLast().end - brailleStart);
-- tree.split(Message.createSplitTreeMessage(firstElementIndex, secondElementIndex, currentIndex, treeIndex));
- } -- private int insertElement(Element e, int index, int start, int brailleStart){
- int count = e.getChildCount(); - int currentIndex = index; - int currentStart = start; - int currentBrailleStart = brailleStart; - - for(int i = 0; i < count; i++){ - if(e.getChild(i) instanceof Text){ - text.insertText(vi,list, currentIndex, currentStart, e.getChild(i)); - currentStart = list.get(currentIndex).end; - i++;- insertBraille((Element)e.getChild(i), currentIndex, currentBrailleStart);
- currentBrailleStart = list.get(currentIndex).brailleList.getLast().end; - currentIndex++; - }- else if(e.getChild(i) instanceof Element && !((Element)e.getChild(i)).getLocalName().equals("brl")){ - currentIndex = insertElement((Element)e.getChild(i), currentIndex, currentStart, currentBrailleStart);
- currentStart = list.get(currentIndex - 1).end;- currentBrailleStart = list.get(currentIndex - 1).brailleList.getLast().end;
- } - } - - return currentIndex; - } - - private void insertBraille(Element e, int index, int brailleStart){ - int count = e.getChildCount(); - - for(int i = 0; i < count; i++){ - if(e.getChild(i) instanceof Text){ - braille.insert(list.get(index), e.getChild(i), brailleStart); - brailleStart = list.get(index).brailleList.getLast().end; - } - } - } -} =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 14:36:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 14:40:23 2014 UTC
@@ -71,7 +71,7 @@ import org.brailleblaster.perspectives.braille.stylers.BoxlineHandler;import org.brailleblaster.perspectives.braille.stylers.InsertElementHandler;
import org.brailleblaster.perspectives.braille.stylers.ElementRemover; -import org.brailleblaster.perspectives.braille.stylers.ElementSplitter; +import org.brailleblaster.perspectives.braille.stylers.SplitElementHandler; import org.brailleblaster.perspectives.braille.stylers.HideActionHandler; import org.brailleblaster.perspectives.braille.stylers.StyleHandler; import org.brailleblaster.perspectives.braille.stylers.TextUpdateHandler; @@ -632,7 +632,7 @@ private void handleInsertNode(Message m){ if(m.getValue("split").equals(true)){ - ElementSplitter splitter = new ElementSplitter(this, list, vi); + SplitElementHandler splitter = new SplitElementHandler(this, vi, list); splitter.splitElement(m); } else { ============================================================================== Revision: d1ca3e6fb600 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 16:51:58 2014 UTC Log: add Element Remover to Handler class https://code.google.com/p/brailleblaster/source/detail?r=d1ca3e6fb600 Added:/src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java
Deleted:/src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java
Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java/src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java
======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java Thu Dec 18 16:51:58 2014 UTC
@@ -0,0 +1,167 @@ +package org.brailleblaster.perspectives.braille.stylers; + +import java.util.ArrayList; + +import nu.xom.Element; +import nu.xom.Node; +import nu.xom.Nodes; + +import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.perspectives.braille.eventQueue.Event; +import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; +import org.brailleblaster.perspectives.braille.eventQueue.EventTypes;+import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
+import org.brailleblaster.perspectives.braille.mapping.maps.MapList; +import org.brailleblaster.perspectives.braille.messages.Message; +import org.brailleblaster.perspectives.braille.messages.Sender;+import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+import org.brailleblaster.perspectives.braille.views.tree.BBTree; +import org.brailleblaster.perspectives.braille.views.wp.BrailleView; +import org.brailleblaster.perspectives.braille.views.wp.TextView; + +public class RemoveElementHandler extends Handler{ + + TextView text; + BrailleView braille; + BBTree tree; + EventFrame eventFrame; ++ public RemoveElementHandler(Manager manager, ViewInitializer vi, MapList list){
+ super(manager, vi, list); + + text = manager.getText(); + braille = manager.getBraille(); + tree = manager.getTreeView(); + } + + public void removeNode(Message m){ + eventFrame = new EventFrame(); + eventFrame.addEvent(addEvent(m)); + + findRemovalMethod(m); + + manager.addUndoEvent(eventFrame); + } + + public void removeNode(EventFrame frame){ + eventFrame = new EventFrame();+ while(!frame.empty() && frame.peek().getEventType().equals(EventTypes.Delete)){
+ Event ev = frame.pop(); ++ int length = list.get(ev.getListIndex()).end - list.get(ev.getListIndex()).end;
+ Message m = Message.createRemoveNodeMessage(ev.getListIndex(), length); + eventFrame.addEvent(addEvent(m)); + + findRemovalMethod(m); ++ if(ev.getNode() instanceof Element && isBlockElement(list.get(ev.getListIndex()))){
+ text.replaceTextRange(ev.getTextOffset(), 1, ""); + braille.replaceTextRange(ev.getBrailleOffset(), 1, ""); + list.shiftOffsetsFromIndex(ev.getListIndex(), -1, -1); + } + + if(!list.empty()) + list.setCurrent(ev.getListIndex()); + + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + } + manager.addUndoEvent(eventFrame); + } + + private void findRemovalMethod(Message m){ + int index = (Integer)m.getValue("index"); + if(list.get(index).isMathML() ) + removeMathMLElement(m); + else + removeElement(m); + } + + private void removeElement(Message message){ + int index = (Integer)message.getValue("index"); + tree.removeItem(list.get(index), message); + manager.getDocument().updateDOM(list, message); + list.get(index).brailleList.clear(); + vi.remove(list, index); + + if(list.empty()) + disableViews(); + } + + private void removeMathMLElement(Message m){ + int index = (Integer)m.getValue("index"); + TextMapElement t = list.get(index); + m.put("start", t.start); + manager.getDocument().updateDOM(list, m); + braille.removeMathML(t); + text.removeMathML(m); + tree.removeMathML(t); + index = list.indexOf(t); + list.updateOffsets(index, m); + vi.remove(list, index); + + if(list.empty()) + disableViews(); + } + + private Event addEvent(Message message){ + int index = (Integer)message.getValue("index"); + ArrayList<Integer>treeIndex = tree.getItemPath(); + //EventFrame f = new EventFrame(); + Node node; + if(list.get(index).isMathML()) + node = findMathElement(list.get(index), message); + else + node = findElement(list.get(index)); + + if(node instanceof Element) + message.put("element", node); ++ return new Event(EventTypes.Delete, node, vi.getStartIndex(), index, list.get(index).start, list.get(index).brailleList.getFirst().start, treeIndex);
+ //return f; + } + + private Node findElement(TextMapElement t){+ if(manager.getDocument().hasNonBrailleChildren(t.parentElement()) && !(t.n instanceof Element)){
+ return t.n; + } + else { + Element e = t.parentElement(); + while(!e.getAttributeValue("semantics").contains("style")){ + if(((Element)e.getParent()).getChildElements().size() <= 1) + e = (Element)e.getParent(); + else + break; + } + + return e; + } + } + + private Node findMathElement(TextMapElement t, Message m){ + Nodes nodes = new Nodes(); + Element parent = t.parentElement(); + int index = parent.indexOf(t.n) + 1; + int count = parent.getChildCount() - 1; + + nodes.append(t.n);+ while(index < parent.getChildCount() && parent.getChild(index) instanceof Element && ((Element)parent.getChild(index)).getLocalName().equals("brl")){
+ nodes.append(parent.getChild(index)); + index++; + count--; + } + + m.put("nodes", nodes); + if(count == 0) + return parent; + + return t.n; + } + + private void disableViews(){ + text.removeListeners(); + braille.removeListeners(); + tree.removeListeners(); + list.clearList(); + text.view.setEditable(false); + } +} =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Tue Dec 16 18:49:03 2014 UTC
+++ /dev/null @@ -1,198 +0,0 @@ -package org.brailleblaster.perspectives.braille.stylers; - -import java.util.ArrayList; - -import nu.xom.Element; -import nu.xom.Node; -import nu.xom.Nodes; - -import org.brailleblaster.perspectives.braille.Manager; -import org.brailleblaster.perspectives.braille.eventQueue.Event; -import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; -import org.brailleblaster.perspectives.braille.eventQueue.EventTypes;-import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; -import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; -import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
-import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.messages.Message; -import org.brailleblaster.perspectives.braille.messages.Sender;-import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
-import org.brailleblaster.perspectives.braille.views.tree.BBTree; -import org.brailleblaster.perspectives.braille.views.wp.BrailleView; -import org.brailleblaster.perspectives.braille.views.wp.TextView; - -public class ElementRemover { - Manager manager; - MapList list; - TextView text; - BrailleView braille; - BBTree tree; - ViewInitializer vi; - EventFrame eventFrame; - - public ElementRemover(Manager manager, MapList list, ViewInitializer vi){ - this.manager = manager; - this.list = list; - this.vi = vi; - text = manager.getText(); - braille = manager.getBraille(); - tree = manager.getTreeView(); - } - - public void removeNode(Message m){ - eventFrame = new EventFrame(); - eventFrame.addEvent(addEvent(m)); - - findRemovalMethod(m); - - manager.addUndoEvent(eventFrame); - } - - public void removeNode(EventFrame frame){ - eventFrame = new EventFrame();- while(!frame.empty() && frame.peek().getEventType().equals(EventTypes.Delete)){
- Event ev = frame.pop(); -- int length = list.get(ev.getListIndex()).end - list.get(ev.getListIndex()).end;
- Message m = Message.createRemoveNodeMessage(ev.getListIndex(), length); - eventFrame.addEvent(addEvent(m)); - - findRemovalMethod(m); -- if(ev.getNode() instanceof Element && isBlockElement(list.get(ev.getListIndex()))){
- text.replaceTextRange(ev.getTextOffset(), 1, ""); - braille.replaceTextRange(ev.getBrailleOffset(), 1, ""); - list.shiftOffsetsFromIndex(ev.getListIndex(), -1, -1); - } - - if(!list.empty()) - list.setCurrent(ev.getListIndex()); - - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); - } - manager.addUndoEvent(eventFrame); - } - - private void findRemovalMethod(Message m){ - int index = (Integer)m.getValue("index"); - if(list.get(index).isMathML() ) - removeMathMLElement(m); - else - removeElement(m); - } - - private void removeElement(Message message){ - int index = (Integer)message.getValue("index"); - tree.removeItem(list.get(index), message); - manager.getDocument().updateDOM(list, message); - list.get(index).brailleList.clear(); - vi.remove(list, index); - - if(emptyList()) - disableViews(); - } - - private void removeMathMLElement(Message m){ - int index = (Integer)m.getValue("index"); - TextMapElement t = list.get(index); - m.put("start", t.start); - manager.getDocument().updateDOM(list, m); - braille.removeMathML(t); - text.removeMathML(m); - tree.removeMathML(t); - index = list.indexOf(t); - list.updateOffsets(index, m); - vi.remove(list, index); - - if(emptyList()) - disableViews(); - } - - private Event addEvent(Message message){ - int index = (Integer)message.getValue("index"); - ArrayList<Integer>treeIndex = tree.getItemPath(); - //EventFrame f = new EventFrame(); - Node node; - if(list.get(index).isMathML()) - node = findMathElement(list.get(index), message); - else - node = findElement(list.get(index)); - - if(node instanceof Element) - message.put("element", node); -- return new Event(EventTypes.Delete, node, vi.getStartIndex(), index, list.get(index).start, list.get(index).brailleList.getFirst().start, treeIndex);
- //return f; - } - - private Node findElement(TextMapElement t){- if(manager.getDocument().hasNonBrailleChildren(t.parentElement()) && !(t.n instanceof Element)){
- return t.n; - } - else { - Element e = t.parentElement(); - while(!e.getAttributeValue("semantics").contains("style")){ - if(((Element)e.getParent()).getChildElements().size() <= 1) - e = (Element)e.getParent(); - else - break; - } - - return e; - } - } - - private Node findMathElement(TextMapElement t, Message m){ - Nodes nodes = new Nodes(); - Element parent = t.parentElement(); - int index = parent.indexOf(t.n) + 1; - int count = parent.getChildCount() - 1; - - nodes.append(t.n);- while(index < parent.getChildCount() && parent.getChild(index) instanceof Element && ((Element)parent.getChild(index)).getLocalName().equals("brl")){
- nodes.append(parent.getChild(index)); - index++; - count--; - } - - m.put("nodes", nodes); - if(count == 0) - return parent; - - return t.n; - } - - private void disableViews(){ - text.removeListeners(); - braille.removeListeners(); - tree.removeListeners(); - list.clearList(); - text.view.setEditable(false); - } - - private boolean emptyList(){ - return list.size() == 0; - } - - private boolean isBlockElement(TextMapElement t){ - if( t instanceof PageMapElement || t instanceof BrlOnlyMapElement) - return true; - else {- if(t.parentElement().getAttributeValue("semantics").contains("style") && t.parentElement().indexOf(t.n) == 0)
- return true;- else if(firstInLineElement(t.parentElement()) && t.parentElement().indexOf(t.n) == 0)
- return true; - } - return false; - } - - private boolean firstInLineElement(Element e){ - Element parent = (Element)e.getParent();- if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){
- if(parent.indexOf(e) == 0) - return true; - } - - return false; - } -} =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 14:40:23 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 16:51:58 2014 UTC
@@ -70,7 +70,7 @@ import org.brailleblaster.perspectives.braille.stylepanel.StyleManager; import org.brailleblaster.perspectives.braille.stylers.BoxlineHandler;import org.brailleblaster.perspectives.braille.stylers.InsertElementHandler;
-import org.brailleblaster.perspectives.braille.stylers.ElementRemover;+import org.brailleblaster.perspectives.braille.stylers.RemoveElementHandler;
import org.brailleblaster.perspectives.braille.stylers.SplitElementHandler; import org.brailleblaster.perspectives.braille.stylers.HideActionHandler; import org.brailleblaster.perspectives.braille.stylers.StyleHandler; @@ -667,7 +667,7 @@ } private void handleRemoveNode(Message message){ - ElementRemover er = new ElementRemover(this, list, vi); + RemoveElementHandler er = new RemoveElementHandler(this, vi, list); er.removeNode(message); } =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Tue Dec 16 17:57:05 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Thu Dec 18 16:51:58 2014 UTC
@@ -3,7 +3,7 @@ import org.brailleblaster.perspectives.braille.Manager; import org.brailleblaster.perspectives.braille.document.BrailleDocument; import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.stylers.ElementRemover;+import org.brailleblaster.perspectives.braille.stylers.RemoveElementHandler;
import org.brailleblaster.perspectives.braille.stylers.HideActionHandler; import org.brailleblaster.perspectives.braille.stylers.StyleHandler; import org.brailleblaster.perspectives.braille.stylers.TextUpdateHandler; @@ -29,7 +29,7 @@ case Insert: break; case Delete: - ElementRemover remover = new ElementRemover(manager, list, vi);+ RemoveElementHandler remover = new RemoveElementHandler(manager, vi, list);
remover.removeNode(frame); break; case Hide: =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 14:36:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 16:51:58 2014 UTC
@@ -1,6 +1,9 @@ package org.brailleblaster.perspectives.braille.stylers; import org.brailleblaster.perspectives.braille.Manager;+import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; +import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
import org.brailleblaster.perspectives.braille.mapping.maps.MapList;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
@@ -32,6 +35,28 @@ return true; } + + protected boolean isBlockElement(TextMapElement t){ + if( t instanceof PageMapElement || t instanceof BrlOnlyMapElement) + return true; + else {+ if(t.parentElement().getAttributeValue("semantics").contains("style") && t.parentElement().indexOf(t.n) == 0)
+ return true;+ else if(firstInLineElement(t.parentElement()) && t.parentElement().indexOf(t.n) == 0)
+ return true; + } + return false; + } + + protected boolean firstInLineElement(Element e){ + Element parent = (Element)e.getParent();+ if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){
+ if(parent.indexOf(e) == 0) + return true; + } + + return false; + } protected boolean isBoxLine(Element e){if(checkSemanticsAttribute(e, BOXLINE) || checkSemanticsAttribute(e, TOPBOX) || checkSemanticsAttribute(e, MIDDLEBOX)
=======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Thu Dec 18 14:36:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Thu Dec 18 16:51:58 2014 UTC
@@ -275,16 +275,6 @@ else return false; } - - private boolean firstInLineElement(Element e){ - Element parent = (Element)e.getParent();- if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){
- if(parent.indexOf(e) == 0) - return true; - } - - return false; - } //returns element removed from DOM private Element replaceElement(Event f){ @@ -332,18 +322,6 @@return elList.get(elList.size() - 1).parentElement().getAttributeValue("semantics").contains("style") || firstInLineElement(elList.get(0).parentElement()) || elList.get(0) instanceof PageMapElement || elList.get(0) instanceof BrlOnlyMapElement;
} - - private boolean isBlockElement(TextMapElement t){ - if( t instanceof PageMapElement || t instanceof BrlOnlyMapElement) - return true; - else {- if(t.parentElement().getAttributeValue("semantics").contains("style") && t.parentElement().indexOf(t.n) == 0)
- return true;- else if(firstInLineElement(t.parentElement()) && t.parentElement().indexOf(t.n) == 0)
- return true; - } - return false; - }//checks for a rare case if a line break element occurs within a block element
private boolean afterLineBreak(TextMapElement t){ ============================================================================== Revision: d23234d1f4a2 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:01:08 2014 UTC Log: Added HideActionHandler to Handler class https://code.google.com/p/brailleblaster/source/detail?r=d23234d1f4a2 Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java/src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java
/src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java/src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 16:51:58 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Dec 18 17:01:08 2014 UTC
@@ -1029,7 +1029,7 @@ } public void hide(){ - HideActionHandler h = new HideActionHandler(this, list, vi); + HideActionHandler h = new HideActionHandler(this, vi, list); h.hideText(); } =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Thu Dec 18 16:51:58 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Thu Dec 18 17:01:08 2014 UTC
@@ -33,7 +33,7 @@ remover.removeNode(frame); break; case Hide: - HideActionHandler h = new HideActionHandler(manager, list, vi); + HideActionHandler h = new HideActionHandler(manager, vi, list); h.hideText(frame); break; case Style_Change: =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Thu Dec 18 14:36:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Thu Dec 18 17:01:08 2014 UTC
@@ -198,7 +198,7 @@ Document doc = document.translateElements(elList); Element parent = (Element)doc.getChild(0); - String style = getStyle(wrapper); + String style = getSemanticAttribute(wrapper); Message m = new Message(null); if(style.equals(TOPBOX)) createFullBoxline(wrapper, parents, m, itemList); @@ -338,12 +338,12 @@ private void resetSidebars(ArrayList<Element> elList, Element parent){ while(elList.size() > 0){- if(getStyle(parent.getChildElements().get(0)).equals(TOPBOX) || getStyle(parent.getChildElements().get(0)).equals(BOXLINE)) + if(getSemanticAttribute(parent.getChildElements().get(0)).equals(TOPBOX) || getSemanticAttribute(parent.getChildElements().get(0)).equals(BOXLINE))
changeToFullBox(elList.get(0), parent.getChildElements().get(0));- else if(getStyle(parent.getChildElements().get(0)).equals(BOTTOMBOX) || getStyle(parent.getChildElements().get(0)).equals(MIDDLEBOX)) + else if(getSemanticAttribute(parent.getChildElements().get(0)).equals(BOTTOMBOX) || getSemanticAttribute(parent.getChildElements().get(0)).equals(MIDDLEBOX))
changeToHalfBox(elList.get(0), parent.getChildElements().get(0)); - setStyle(elList.get(0), getStyle(parent.getChildElements().get(0)));+ setStyle(elList.get(0), getSemanticAttribute(parent.getChildElements().get(0)));
parent.removeChild(0); elList.remove(0); } @@ -386,7 +386,7 @@ } private void insertBoxLine(int index, Element box, Element brl){ - String style = getStyle(list.get(index).parentElement()); + String style = getSemanticAttribute(list.get(index).parentElement()); Styles firstStyle = styles.get(style); //inserted in DOM box.insertChild(brl, 0); @@ -486,14 +486,14 @@ while(itemList.size() > 0){ ArrayList<TextMapElement>boxline = new ArrayList<TextMapElement>();- if(getStyle(itemList.get(0).parentElement()).equals(BOXLINE) || getStyle(itemList.get(0).parentElement()).equals(TOPBOX) || getStyle(itemList.get(0).parentElement()).equals(FULLBOX)){ + if(getSemanticAttribute(itemList.get(0).parentElement()).equals(BOXLINE) || getSemanticAttribute(itemList.get(0).parentElement()).equals(TOPBOX) || getSemanticAttribute(itemList.get(0).parentElement()).equals(FULLBOX)){
int index = getMatchingParent(itemList, 0); boxline.add(itemList.get(0)); boxline.add(itemList.get(index)); itemList.remove(0); itemList.remove(index - 1); }- else if(getStyle(itemList.get(0).parentElement()).equals(MIDDLEBOX) || getStyle(itemList.get(0).parentElement()).equals(BOTTOMBOX)){ + else if(getSemanticAttribute(itemList.get(0).parentElement()).equals(MIDDLEBOX) | | getSemanticAttribute(itemList.get(0).parentElement()).equals(BOTTOMBOX)){
boxline.add(itemList.get(0)); itemList.remove(0); } @@ -517,12 +517,12 @@ }private void removeBoxLine(Element boxline, ArrayList<TextMapElement> itemList){
- String style = getStyle(boxline); + String style = getSemanticAttribute(boxline);if(style.equals(BOXLINE) || style.equals(TOPBOX) || style.equals(FULLBOX)){
Element parent = null; removeTopBoxline((BrlOnlyMapElement)itemList.get(0)); removeBottomBoxline((BrlOnlyMapElement)itemList.get(1));- if(isBoxLine((Element)boxline.getParent()) && getStyle((Element)boxline.getParent()).equals(FULLBOX)){ + if(isBoxLine((Element)boxline.getParent()) && getSemanticAttribute((Element)boxline.getParent()).equals(FULLBOX)){
if(nestedSidebarCount((Element)boxline.getParent()) == 1) parent = (Element)boxline.getParent(); } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 16:51:58 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 17:01:08 2014 UTC
@@ -65,6 +65,27 @@ else return false; } + + protected boolean isHeading(Element e){ + Attribute atr = e.getAttribute("semantics"); + + if(atr != null){ + if(atr.getValue().contains("heading")) + return true; + } + + return false; + } + + protected boolean isInLine(Element e){ + Attribute atr = e.getAttribute("semantics"); + if(atr != null){ + String [] tokens = atr.getValue().split(","); + if(tokens[0].equals("action")) + return true; + } + return false; + } protected boolean checkSemanticsAttribute(Element e, String value){ Attribute atr = e.getAttribute("semantics"); @@ -75,7 +96,30 @@ return true; } - protected String getStyle(Element e){ - return e.getAttributeValue("semantics").split(",")[1]; + protected String getSemanticAttribute(Element e){ + Attribute atr = e.getAttribute("semantics"); + if(atr != null){ + String val = atr.getValue(); + String[] tokens = val.split(","); + if(tokens.length > 1) + return tokens[1]; + } + + return null; } + + protected boolean isFirstInList(int index){ + if(index == 0) + return true; + else + return false; + } + + protected boolean isLastInList(int index){ + if(index == list.size() - 1) + return true; + else + return false; + } + } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Tue Dec 16 18:10:44 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Thu Dec 18 17:01:08 2014 UTC
@@ -4,7 +4,6 @@ import java.util.Iterator; import java.util.Set; -import nu.xom.Attribute; import nu.xom.Element; import org.brailleblaster.BBIni; @@ -23,22 +22,19 @@ import org.brailleblaster.perspectives.braille.views.tree.BBTree; import org.brailleblaster.perspectives.braille.views.wp.BrailleView; import org.brailleblaster.perspectives.braille.views.wp.TextView; -import org.brailleblaster.util.Notify; -public class HideActionHandler { - Manager manager; - MapList list; +public class HideActionHandler extends Handler{ + TextView text; BrailleView braille; BBTree tree; - ViewInitializer vi; + EventFrame eventFrame; boolean boxlineAdded;- public HideActionHandler(Manager manager, MapList list, ViewInitializer vi){
- this.manager = manager; - this.list = list; - this.vi = vi;+ public HideActionHandler(Manager manager, ViewInitializer vi, MapList list){
+ super(manager, vi, list); + text = manager.getText(); braille = manager.getBraille(); tree = manager.getTreeView(); @@ -312,18 +308,7 @@ private void invalidSelection(){ if(!BBIni.debugging())- new Notify("In order to hide a boxline both opening and closing boxlines must be selected");
- } - - private boolean isHeading(Element e){ - Attribute atr = e.getAttribute("semantics"); - - if(atr != null){ - if(atr.getValue().contains("heading")) - return true; - } - - return false;+ manager.notify("In order to hide a boxline both opening and closing boxlines must be selected");
} private boolean collapseSpaceBefore(TextMapElement t){ @@ -366,32 +351,6 @@ return false; } - - private boolean isFirstInList(int index){ - if(index == 0) - return true; - else - return false; - } - - private boolean isLastInList(int index){ - if(index == list.size() - 1) - return true; - else - return false; - } - - private String getSemanticAttribute(Element e){ - Attribute atr = e.getAttribute("semantics"); - if(atr != null){ - String val = atr.getValue(); - String[] tokens = val.split(","); - if(tokens.length > 1) - return tokens[1]; - } - - return null; - } private boolean removeParent(TextMapElement t){ if(!(t instanceof PageMapElement) && isInLine(t.parentElement())) @@ -399,14 +358,4 @@ else return false; } - - private boolean isInLine(Element e){ - Attribute atr = e.getAttribute("semantics"); - if(atr != null){ - String [] tokens = atr.getValue().split(","); - if(tokens[0].equals("action")) - return true; - } - return false; - } } ============================================================================== Revision: c14c649e35dd Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:03:03 2014 UTC Log: Added TextUpdateHandler to Handler class https://code.google.com/p/brailleblaster/source/detail?r=c14c649e35dd Modified:/src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java Wed Dec 10 15:33:18 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java Thu Dec 18 17:03:03 2014 UTC
@@ -14,24 +14,20 @@ import org.brailleblaster.perspectives.braille.views.wp.BrailleView; import org.brailleblaster.perspectives.braille.views.wp.TextView; -public class TextUpdateHandler { +public class TextUpdateHandler extends Handler { - Manager manager; TextView text; BrailleView braille; BBTree treeView; BrailleDocument document; - MapList list; - ViewInitializer vi;public TextUpdateHandler(Manager manager, ViewInitializer vi, MapList list){
- this.manager = manager; + super(manager, vi, list); + text = manager.getText(); braille = manager.getBraille(); treeView = manager.getTreeView(); document = manager.getDocument(); - this.list = list; - this.vi = vi; } public void updateText(Message message){ ============================================================================== Revision: 5fddc22ccf94 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 18 17:05:06 2014 UTC Log: Added StyleHandler to handler class https://code.google.com/p/brailleblaster/source/detail?r=5fddc22ccf94 Modified: /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Tue Dec 16 19:42:12 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Thu Dec 18 17:05:06 2014 UTC
@@ -24,25 +24,22 @@ import org.brailleblaster.perspectives.braille.views.wp.BrailleView; import org.brailleblaster.perspectives.braille.views.wp.TextView; -public class StyleHandler { +public class StyleHandler extends Handler{ - Manager manager; BrailleDocument document; - MapList list; TextView text; BrailleView braille; BBTree treeView; - ViewInitializer vi; + EventFrame frame; public StyleHandler(Manager manager, ViewInitializer vi, MapList list){ - this.manager = manager; + super(manager, vi, list); + this.document = manager.getDocument(); - this.list = list; this.text = manager.getText(); this.braille = manager.getBraille(); this.treeView = manager.getTreeView(); - this.vi = vi; } public void updateStyle(Message message){