Revision: b9ee4f58cfc4 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Thu Dec 4 18:40:23 2014 UTC Log: refactored removal of MathML https://code.google.com/p/brailleblaster/source/detail?r=b9ee4f58cfc4 Modified:/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Thu Dec 4 16:29:20 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Thu Dec 4 18:40:23 2014 UTC
@@ -12,6 +12,7 @@ import nu.xom.Element; import nu.xom.Elements; import nu.xom.Node; +import nu.xom.Nodes; import nu.xom.ParsingException; import nu.xom.Text; @@ -328,13 +329,11 @@ */ private void removeMathML(TextMapElement t, Message m){int length = t.brailleList.getLast().end - t.brailleList.getFirst().start;
+ Nodes nodes = (Nodes)m.getValue("nodes"); + Element parent = (Element)t.parentElement(); - Element parent = t.parentElement(); - int index = parent.indexOf(t.n); - - parent.removeChild(index);- while(index < parent.getChildCount() && parent.getChild(index) instanceof Element && ((Element)parent.getChild(index)).getLocalName().equals("brl"))
- parent.removeChild(index); + while(nodes.size() > 0) + parent.removeChild(nodes.remove(0)); if(parent.getChildElements().size() == 0) parent.getParent().removeChild(parent); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Thu Dec 4 16:29:20 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Thu Dec 4 18:40:23 2014 UTC
@@ -4,6 +4,7 @@ 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; @@ -36,13 +37,12 @@ } public void removeNode(Message m){ + addEvent(m); int index = (Integer)m.getValue("index"); if(list.get(index).isMathML() ) removeMathMLElement(m); - else { - addEvent(m); + else removeElement(m); - } } private void removeElement(Message message){ @@ -76,7 +76,11 @@ int index = (Integer)message.getValue("index"); ArrayList<Integer>treeIndex = tree.getItemPath(); EventFrame f = new EventFrame(); - Node node = findElement(list.get(index)); + 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); @@ -101,6 +105,26 @@ 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();