[brailleblaster] 6 new revisions pushed by brandon....@xxxxxxxxx on 2014-12-18 17:02 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Thu, 18 Dec 2014 17:03:04 +0000

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){

Other related posts:

  • » [brailleblaster] 6 new revisions pushed by brandon....@xxxxxxxxx on 2014-12-18 17:02 GMT - brailleblaster