4 new revisions: Revision: 5ecb5bbddba8 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 14:31:48 2014 UTC Log: Changed keyword to constant https://code.google.com/p/brailleblaster/source/detail?r=5ecb5bbddba8 Revision: 728f92fd1d15 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 15:26:49 2014 UTC Log: Subclassed event class https://code.google.com/p/brailleblaster/source/detail?r=728f92fd1d15 Revision: 29099bb8ef34 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 18:29:25 2014 UTC Log: Added uno event for space between elements https://code.google.com/p/brailleblaster/source/detail?r=29099bb8ef34 Revision: 38772ce3c778 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 18:32:06 2014 UTC Log: Fix bug in styles not being reset when inserting space https://code.google.com/p/brailleblaster/source/detail?r=38772ce3c778 ============================================================================== Revision: 5ecb5bbddba8 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 14:31:48 2014 UTC Log: Changed keyword to constant https://code.google.com/p/brailleblaster/source/detail?r=5ecb5bbddba8 Modified:/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/InsertElementHandler.java /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java
/src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Thu Dec 18 17:01:08 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/BoxlineHandler.java Mon Dec 22 14:31:48 2014 UTC
@@ -121,7 +121,7 @@ TextMapElement tempElement= itr.next(); if(tempElement instanceof BrlOnlyMapElement){BrlOnlyMapElement b = list.findJoiningBoxline((BrlOnlyMapElement)tempElement); - if((b == null && !tempElement.parentElement().getAttributeValue("semantics").contains("middleBox") && !tempElement.parentElement().getAttributeValue("semantics").contains("bottomBox") ) + if((b == null && !tempElement.parentElement().getAttributeValue(SEMANTICS).contains("middleBox") && !tempElement.parentElement().getAttributeValue(SEMANTICS).contains("bottomBox") )
|| (b != null && (b.start > end || b.end < start))){ invalid = true; LocaleHandler lh = new LocaleHandler(); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/Handler.java Mon Dec 22 14:31:48 2014 UTC
@@ -14,6 +14,8 @@ import nu.xom.Element; public abstract class Handler { + protected static final String SEMANTICS = "semantics"; + protected static final String BOXLINE = "boxline"; protected static final String FULLBOX = "fullBox"; protected static final String TOPBOX = "topBox"; @@ -59,7 +61,7 @@ protected boolean firstInLineElement(Element e){ Element parent = (Element)e.getParent();- if(parent.getAttribute("semantics") != null && parent.getAttributeValue("semantics").contains("style")){ + if(parent.getAttribute(SEMANTICS) != null && parent.getAttributeValue(SEMANTICS).contains("style")){
if(parent.indexOf(e) == 0) return true; } @@ -76,7 +78,7 @@ } protected boolean isHeading(Element e){ - Attribute atr = e.getAttribute("semantics"); + Attribute atr = e.getAttribute(SEMANTICS); if(atr != null){ if(atr.getValue().contains("heading")) @@ -87,7 +89,7 @@ } protected boolean isInLine(Element e){ - Attribute atr = e.getAttribute("semantics"); + Attribute atr = e.getAttribute(SEMANTICS); if(atr != null){ String [] tokens = atr.getValue().split(","); if(tokens[0].equals("action")) @@ -97,7 +99,7 @@ } protected boolean checkSemanticsAttribute(Element e, String value){ - Attribute atr = e.getAttribute("semantics"); + Attribute atr = e.getAttribute(SEMANTICS); if(atr == null || !atr.getValue().contains(value)) return false; @@ -106,7 +108,7 @@ } protected String getSemanticAttribute(Element e){ - Attribute atr = e.getAttribute("semantics"); + Attribute atr = e.getAttribute(SEMANTICS); if(atr != null){ String val = atr.getValue(); String[] tokens = val.split(","); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Mon Dec 22 14:31:48 2014 UTC
@@ -64,7 +64,7 @@ else p.insertChild(ev.getNode(), ev.getParentIndex());- if(ev.getNode() instanceof Element && ((Element)ev.getNode()).getAttributeValue("semantics").contains("style")){ + 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())
@@ -173,7 +173,7 @@private ArrayList<TextMapElement> constructMapElements(Element e, int index){
ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); - if(e.getAttributeValue("semantics").contains("pagenum")) + if(e.getAttributeValue(SEMANTICS).contains("pagenum")) elList.add(makePageMapElement(e)); else { for(int i = index; i < e.getChildCount(); i++){ @@ -197,7 +197,7 @@private ArrayList<TextMapElement> constructMapElement(Element e, int index){
ArrayList<TextMapElement> elList = new ArrayList<TextMapElement>(); - if(e.getAttributeValue("semantics").contains("pagenum")) + if(e.getAttributeValue(SEMANTICS).contains("pagenum")) elList.add(makePageMapElement(e)); else { for(int i = index; i < index + 2; i++){ @@ -259,8 +259,8 @@ } private boolean hasSameSemantics(Element e, Element newElement){ - Attribute sem1 = e.getAttribute("semantics"); - Attribute sem2 = newElement.getAttribute("semantics"); + Attribute sem1 = e.getAttribute(SEMANTICS); + Attribute sem2 = newElement.getAttribute(SEMANTICS); if(sem1.equals(sem2)) return true; else @@ -297,7 +297,7 @@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(","); + String [] tokens = e.getAttributeValue(SEMANTICS).split(","); sfh.writeEntry(file, tokens[1], e.getLocalName(), id); } @@ -310,7 +310,7 @@ } private boolean shouldInsertBlankLine(ArrayList<TextMapElement>elList){- return elList.get(elList.size() - 1).parentElement().getAttributeValue("semantics").contains("style") + 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;
} =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java Mon Dec 22 14:31:48 2014 UTC
@@ -116,7 +116,7 @@ } else { Element e = t.parentElement(); - while(!e.getAttributeValue("semantics").contains("style")){ + while(!e.getAttributeValue(SEMANTICS).contains("style")){ if(((Element)e.getParent()).getChildElements().size() <= 1) e = (Element)e.getParent(); else =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Mon Dec 22 14:31:48 2014 UTC
@@ -63,7 +63,7 @@ manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); Element e = (Element)event.getNode(); - String semantic = e.getAttributeValue("semantics").split(",")[1]; + String semantic = e.getAttributeValue(SEMANTICS).split(",")[1]; Styles style = manager.getStyleTable().get(semantic); Message message = Message.createUpdateStyleMessage(style, false, false); handleStyleSingleSelected(message); ============================================================================== Revision: 728f92fd1d15 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 15:26:49 2014 UTC Log: Subclassed event class https://code.google.com/p/brailleblaster/source/detail?r=728f92fd1d15 Added:/src/main/org/brailleblaster/perspectives/braille/eventQueue/ModelEvent.java
/src/main/org/brailleblaster/perspectives/braille/eventQueue/ViewEvent.java Modified: /src/main/org/brailleblaster/perspectives/braille/eventQueue/Event.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java/src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java
/src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java/src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java
======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/ModelEvent.java Mon Dec 22 15:26:49 2014 UTC
@@ -0,0 +1,50 @@ +package org.brailleblaster.perspectives.braille.eventQueue; + +import java.util.ArrayList; + +import nu.xom.Node; +import nu.xom.ParentNode; + +public class ModelEvent extends Event{ + Node node; + ParentNode parent; + ArrayList<Integer> treeIndexes; + int firstSectionIndex, listIndex, parentIndex; ++ public ModelEvent(EventTypes eventType, Node node, int firstSectionIndex, int listIndex,
+ int textOffset, int brailleOffset, ArrayList<Integer> treeIndexes) { + + super(eventType, textOffset, brailleOffset); + + this.node = (Node)node.copy(); + this.parent = node.getParent(); + this.parentIndex = parent.indexOf(node); + this.firstSectionIndex = firstSectionIndex; + this.listIndex = listIndex; + this.treeIndexes = treeIndexes; + } + + public Node getNode(){ + return node; + } + + public ParentNode getParent(){ + return parent; + } + + public int getParentIndex(){ + return parentIndex; + } + + public int getFirstSectionIndex(){ + return firstSectionIndex; + } + + public int getListIndex(){ + return listIndex; + } + + public ArrayList<Integer> getTreeIndex(){ + return treeIndexes; + } +} ======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/ViewEvent.java Mon Dec 22 15:26:49 2014 UTC
@@ -0,0 +1,9 @@ +package org.brailleblaster.perspectives.braille.eventQueue; + +public class ViewEvent extends Event{ ++ public ViewEvent(EventTypes eventType, int textOffset, int brailleOffset) {
+ + super(eventType, textOffset, brailleOffset); + } +} =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/Event.java Wed Dec 10 14:36:26 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/Event.java Mon Dec 22 15:26:49 2014 UTC
@@ -1,43 +1,15 @@ package org.brailleblaster.perspectives.braille.eventQueue; -import java.util.ArrayList; - -import nu.xom.Node; -import nu.xom.ParentNode; - public class Event { EventTypes eventType; - Node node; - int firstSectionIndex, listIndex, parentIndex, textOffset, brailleOffset; - ArrayList<Integer> treeIndexes; - ParentNode parent;- public Event(EventTypes eventType, Node node, int firstSectionIndex, int listIndex, int textOffset, int brailleOffset, ArrayList<Integer> treeIndexes){
- this.eventType = eventType; - this.node = (Node)node.copy(); - this.parent = node.getParent(); - this.parentIndex = parent.indexOf(node); - this.firstSectionIndex = firstSectionIndex; - this.listIndex = listIndex; - this.textOffset = textOffset; - this.brailleOffset = brailleOffset; - this.treeIndexes = treeIndexes; - } - - public Node getNode(){ - return node; - } - - public ParentNode getParent(){ - return parent; - } + int textOffset, brailleOffset; - public int getParentIndex(){ - return parentIndex; - } + public Event(EventTypes eventType, int textOffset, int brailleOffset){ + this.eventType = eventType; - public int getListIndex(){ - return listIndex; + this.textOffset = textOffset; + this.brailleOffset = brailleOffset; } public int getTextOffset(){ @@ -47,14 +19,6 @@ public int getBrailleOffset(){ return brailleOffset; } - - public ArrayList<Integer> getTreeIndex(){ - return treeIndexes; - } - - public int getFirstSectionIndex(){ - return firstSectionIndex; - } public EventTypes getEventType(){ return eventType; =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Thu Dec 18 17:01:08 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Mon Dec 22 15:26:49 2014 UTC
@@ -24,7 +24,7 @@ switch(event.eventType){ case Update: TextUpdateHandler tuh = new TextUpdateHandler(manager, vi, list); - tuh.redoText(event); + tuh.redoText(frame); break; case Insert: break; =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Thu Dec 18 14:36:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Mon Dec 22 15:26:49 2014 UTC
@@ -23,7 +23,7 @@ switch(event.eventType){ case Update: TextUpdateHandler tuh = new TextUpdateHandler(manager, vi, list); - tuh.undoText(event); + tuh.undoText(frame); break; case Insert: break; =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Mon Dec 22 15:26:49 2014 UTC
@@ -9,9 +9,9 @@ import org.brailleblaster.BBIni; import org.brailleblaster.perspectives.braille.Manager;import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
-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.eventQueue.ModelEvent;import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
@@ -49,7 +49,7 @@ public void hideText(EventFrame f){ eventFrame = new EventFrame(); while(!f.empty() && f.peek().getEventType().equals(EventTypes.Hide)){ - Event ev = f.pop(); + ModelEvent ev = (ModelEvent)f.pop();manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(ev.getListIndex()).start, false));
//resets selection to recreate hide event by user @@ -194,7 +194,7 @@ } if(!boxlineAdded)- eventFrame.addEvent(new Event(EventTypes.Hide, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), startPos, brailleStartPos, treeIndexes)); + eventFrame.addEvent(new ModelEvent(EventTypes.Hide, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), startPos, brailleStartPos, treeIndexes));
if(parent.getLocalName().equals("sidebar")) boxlineAdded = true; =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Mon Dec 22 14:31:48 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/InsertElementHandler.java Mon Dec 22 15:26:49 2014 UTC
@@ -12,9 +12,9 @@ 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.eventQueue.ModelEvent;import org.brailleblaster.perspectives.braille.mapping.elements.BrailleMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement;
@@ -46,13 +46,13 @@ public void insertElement(EventFrame f){ frame = new EventFrame();- while(f.size() > 0 && f.get(f.size() - 1).getEventType().equals(EventTypes.Delete)){
- insertElement(f.pop()); + while(f.size() > 0 && f.peek().getEventType().equals(EventTypes.Delete)){ + insertElement((ModelEvent)f.pop()); } manager.addRedoEvent(frame); } - private void insertElement(Event ev){ + private void insertElement(ModelEvent ev){ ParentNode p = ev.getParent(); if(ev.getNode() instanceof Text){ p.insertChild(ev.getNode(), ev.getParentIndex()); @@ -93,18 +93,18 @@ 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())); + frame.addEvent(new ModelEvent(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()); + resetElement((ModelEvent)f.pop()); } manager.addRedoEvent(frame); } - private void resetElement(Event event){ + private void resetElement(ModelEvent event){ if(vi.getStartIndex() != event.getFirstSectionIndex()) list = vi.resetViews(event.getFirstSectionIndex()); @@ -121,7 +121,7 @@ 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())); + frame.addEvent(new ModelEvent(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){
@@ -268,7 +268,7 @@ } //returns element removed from DOM - private Element replaceElement(Event f){ + private Element replaceElement(ModelEvent f){ ParentNode parent = f.getParent(); Element replacedElement = (Element)parent.getChild(f.getParentIndex()); parent.replaceChild(replacedElement, f.getNode()); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java Mon Dec 22 14:31:48 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/RemoveElementHandler.java Mon Dec 22 15:26:49 2014 UTC
@@ -10,6 +10,7 @@ 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.eventQueue.ModelEvent;import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
import org.brailleblaster.perspectives.braille.mapping.maps.MapList; import org.brailleblaster.perspectives.braille.messages.Message; @@ -36,7 +37,7 @@ public void removeNode(EventFrame frame){ eventFrame = new EventFrame();while(!frame.empty() && frame.peek().getEventType().equals(EventTypes.Delete)){
- Event ev = frame.pop(); + ModelEvent ev = (ModelEvent)frame.pop();int length = list.get(ev.getListIndex()).end - list.get(ev.getListIndex()).end;
Message m = Message.createRemoveNodeMessage(ev.getListIndex(), length); @@ -106,7 +107,7 @@ 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 new ModelEvent(EventTypes.Delete, node, vi.getStartIndex(), index, list.get(index).start, list.get(index).brailleList.getFirst().start, treeIndex);
//return f; } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Mon Dec 22 14:31:48 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Mon Dec 22 15:26:49 2014 UTC
@@ -13,6 +13,7 @@ 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.eventQueue.ModelEvent;import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.PageMapElement; import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
@@ -58,7 +59,7 @@ private void updateStyle(EventFrame f){while(!f.empty() && f.peek().getEventType().equals(EventTypes.Style_Change)){
- Event event = f.pop(); + ModelEvent event = (ModelEvent)f.pop(); list.setCurrent(event.getListIndex()); manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); @@ -78,7 +79,7 @@ private void handleStyleSingleSelected(Message message) { Element parent = parentStyle(list.getCurrent(), message);ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getCurrentIndex(), parent, true); - Event e = new Event(EventTypes.Style_Change, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), itemList.get(0).start, itemList.get(0).brailleList.getFirst().start, tree.getItemPath()); + Event e = new ModelEvent(EventTypes.Style_Change, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), itemList.get(0).start, itemList.get(0).brailleList.getFirst().start, tree.getItemPath());
document.changeSemanticAction(message, parent); adjustStyle(itemList, message); @@ -106,7 +107,7 @@ Element parent = parentStyle(tempElement, styleMessage); parents.add(parent);ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getNodeIndex(tempElement), parent, true); - Event event = new Event(EventTypes.Style_Change, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), itemList.get(0).start, itemList.get(0).brailleList.getFirst().start, tree.getItemPath()); + Event event = new ModelEvent(EventTypes.Style_Change, parent, vi.getStartIndex(), list.indexOf(itemList.get(0)), itemList.get(0).start, itemList.get(0).brailleList.getFirst().start, tree.getItemPath());
document.changeSemanticAction(message, parent); adjustStyle( itemList,styleMessage); frame.addEvent(event); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java Thu Dec 18 17:16:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/TextUpdateHandler.java Mon Dec 22 15:26:49 2014 UTC
@@ -5,6 +5,7 @@ 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.eventQueue.ModelEvent;import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
import org.brailleblaster.perspectives.braille.mapping.maps.MapList; import org.brailleblaster.perspectives.braille.messages.Message; @@ -34,22 +35,28 @@ manager.getArchiver().setDocumentEdited(true); } - public void undoText(Event ev){ - list.setCurrent(ev.getListIndex()); - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); - addRedoEvent();- Message m = Message.createUpdateMessage(list.getCurrent().start, ev.getNode().getValue(), list.getCurrent().end - list.getCurrent().start);
- resetText(m); - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + public void undoText(EventFrame f){ + while(!f.empty() && f.peek().getEventType().equals(EventTypes.Update)){ + ModelEvent ev = (ModelEvent)f.pop(); + list.setCurrent(ev.getListIndex()); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + addRedoEvent();+ Message m = Message.createUpdateMessage(list.getCurrent().start, ev.getNode().getValue(), list.getCurrent().end - list.getCurrent().start);
+ resetText(m); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + } } - public void redoText(Event ev){ - list.setCurrent(ev.getListIndex()); - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); - addUndoEvent();- Message m = Message.createUpdateMessage(list.getCurrent().start, ev.getNode().getValue(), list.getCurrent().end - list.getCurrent().start);
- resetText(m); - manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + public void redoText(EventFrame f){ + while(!f.empty() && f.peek().getEventType().equals(EventTypes.Update)){ + ModelEvent ev = (ModelEvent)f.pop(); + list.setCurrent(ev.getListIndex()); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + addUndoEvent();+ Message m = Message.createUpdateMessage(list.getCurrent().start, ev.getNode().getValue(), list.getCurrent().end - list.getCurrent().start);
+ resetText(m); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + } } private void resetText(Message message){ @@ -71,7 +78,7 @@ private EventFrame addEvent(){ EventFrame f = new EventFrame(); TextMapElement t = list.getCurrent();- Event e = new Event(EventTypes.Update, t.n, vi.getStartIndex(), list.getCurrentIndex(), t.start, + Event e = new ModelEvent(EventTypes.Update, t.n, vi.getStartIndex(), list.getCurrentIndex(), t.start,
t.brailleList.getFirst().start, tree.getItemPath()); f.addEvent(e); ============================================================================== Revision: 29099bb8ef34 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 18:29:25 2014 UTC Log: Added uno event for space between elements https://code.google.com/p/brailleblaster/source/detail?r=29099bb8ef34 Modified:/src/main/org/brailleblaster/perspectives/braille/eventQueue/EventTypes.java
/src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/ViewEvent.java /src/main/org/brailleblaster/perspectives/braille/messages/Message.java/src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java
/src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/EventTypes.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/EventTypes.java Mon Dec 22 18:29:25 2014 UTC
@@ -2,6 +2,8 @@ public enum EventTypes { Update, + Edit, + Whitespace, Delete, Hide, Style_Change, =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Mon Dec 22 15:26:49 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Mon Dec 22 18:29:25 2014 UTC
@@ -6,6 +6,7 @@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.stylers.WhiteSpaceHandler;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
public class UndoQueue extends EventQueue { @@ -18,8 +19,8 @@ @Overrideprotected void handleEvent(EventFrame frame, ViewInitializer vi, BrailleDocument doc, MapList list, Manager manager){
- for(int i = frame.size() - 1; !frame.empty() && i >= 0; i--){ - Event event = frame.get(i); + while(!frame.empty()){ + Event event = frame.get(frame.size() - 1); switch(event.eventType){ case Update: TextUpdateHandler tuh = new TextUpdateHandler(manager, vi, list); @@ -39,6 +40,10 @@ StyleHandler sh = new StyleHandler(manager, vi, list); sh.undoStyle(frame); break; + case Whitespace: + WhiteSpaceHandler wsh = new WhiteSpaceHandler(manager, list); + wsh.UndoDelete(frame); + break; default: break; } =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/ViewEvent.java Mon Dec 22 15:26:49 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/ViewEvent.java Mon Dec 22 18:29:25 2014 UTC
@@ -2,8 +2,14 @@ public class ViewEvent extends Event{- public ViewEvent(EventTypes eventType, int textOffset, int brailleOffset) {
+ String text;+ public ViewEvent(EventTypes eventType, int textOffset, int brailleOffset, String text) {
super(eventType, textOffset, brailleOffset); + this.text = text; + } + + public String getText(){ + return text; } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Wed Dec 10 20:14:45 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Mon Dec 22 18:29:25 2014 UTC
@@ -156,10 +156,11 @@ return m; }- public static Message createTextDeletionMessage(int offset, int length, boolean update){ + public static Message createTextDeletionMessage(int offset, int length, String replacedText, boolean update){
Message m = new Message(BBEvent.WHITESPACE_DELETION); m.put("offset", offset); m.put("length", length); + m.put("replacedText", replacedText); m.put("update", update); return m; =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java Thu Dec 11 16:43:03 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java Mon Dec 22 18:29:25 2014 UTC
@@ -1,9 +1,13 @@ package org.brailleblaster.perspectives.braille.stylers; import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; +import org.brailleblaster.perspectives.braille.eventQueue.EventTypes; +import org.brailleblaster.perspectives.braille.eventQueue.ViewEvent;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.views.wp.BrailleView; import org.brailleblaster.perspectives.braille.views.wp.TextView; @@ -49,6 +53,34 @@ } else braille.removeWhitespace(0, (Integer)message.getValue("length")); ++ addUndoEvent((Integer)message.getValue("offset"), brailleStart, (String)message.getValue("replacedText"));
} - + + public void UndoDelete(EventFrame frame){+ while(!frame.empty() && frame.peek().getEventType().equals(EventTypes.Whitespace))
+ insertWhitespace((ViewEvent)frame.pop()); + } + + private void insertWhitespace(ViewEvent ev){ + text.insertText(ev.getTextOffset(), ev.getText()); + braille.insertText(ev.getBrailleOffset(), ev.getText()); + + int pos = ev.getTextOffset() + ev.getText().length(); + + if(pos != text.view.getCharCount()){ + Message curMessage = Message.createGetCurrentMessage(Sender.TREE, pos); + manager.dispatch(curMessage);+ list.shiftOffsetsFromIndex(list.getCurrentIndex(), ev.getText().length(), ev.getText().length());
+ + text.view.setCaretOffset(list.getCurrent().start); + manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + } + } + + private void addUndoEvent(int textStart, int brailleStart, String text){ + EventFrame frame = new EventFrame();+ frame.addEvent( new ViewEvent(EventTypes.Whitespace, textStart, brailleStart, text));
+ manager.addUndoEvent(frame); + } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Dec 22 18:29:25 2014 UTC
@@ -447,8 +447,12 @@ setViewData(message); } - private void sendDeleteSpaceMessage(int start, int offset){- Message message = Message.createTextDeletionMessage(start, offset, false); + private void sendDeleteSpaceMessage(int start, int offset, ExtendedModifyEvent e){
+ int length = selectionLength > -1 ? selectionLength : 0; + int textPos = length == 0 ? 0 : e.replacedText.length() - length; ++ String replacedText = e.replacedText.substring(textPos, textPos + Math.abs(offset)); + Message message = Message.createTextDeletionMessage(start, offset, replacedText, false);
manager.dispatch(message); if(message.getValue("update").equals(true)){ @@ -1090,7 +1094,7 @@ selectionStart = currentEnd; } - deleteSelection(); + deleteSelection(e); setCurrent(placeholder); view.setCaretOffset(e.start + e.length); } @@ -1131,11 +1135,11 @@ setListenerLock(true); if(e.replacedText.length() > 1){ setCurrent(view.getCaretOffset()); - deleteSelection(); + deleteSelection(e); } else if(currentChar == SWT.BS){if(oldCursorPosition == currentStart && view.getCaretOffset() >= previousEnd)
- deleteSpaceAndShift(view.getCaretOffset(), offset); + deleteSpaceAndShift(view.getCaretOffset(), offset, e);else if(oldCursorPosition == currentStart && view.getCaretOffset() < previousEnd){
if(textChanged) sendUpdate(); @@ -1144,7 +1148,7 @@ makeTextChange(offset); } else if(oldCursorPosition > currentEnd) - deleteSpaceAndShift(view.getCaretOffset(), offset); + deleteSpaceAndShift(view.getCaretOffset(), offset, e); else makeTextChange(offset); } @@ -1156,7 +1160,7 @@ sendUpdate(); nextStart += offset; - sendDeleteSpaceMessage(view.getCaretOffset(), offset); + sendDeleteSpaceMessage(view.getCaretOffset(), offset, e); }else if(oldCursorPosition == currentEnd && view.getCaretOffset() == nextStart){
if(textChanged) @@ -1166,18 +1170,18 @@ makeTextChange(offset); }else if ((previousEnd == -1 && selectionLength > 0 && selectionStart < currentStart && selectionStart + selectionLength <= currentStart)|| (oldCursorPosition < currentStart && (previousEnd == -1 || oldCursorPosition > previousEnd)))
- deleteSpaceAndShift(view.getCaretOffset(), offset); + deleteSpaceAndShift(view.getCaretOffset(), offset, e);else if( (oldCursorPosition == currentEnd && nextStart == -1)|| (oldCursorPosition > currentEnd && (oldCursorPosition < nextStart || nextStart == -1)))
- deleteSpaceAndShift(view.getCaretOffset(), offset); + deleteSpaceAndShift(view.getCaretOffset(), offset, e); else makeTextChange(offset); } else { offset = -1;if((previousEnd == -1 || selectionStart >= previousEnd) && selectionStart + selectionLength <= currentStart)
- deleteSpaceAndShift(selectionStart, offset); + deleteSpaceAndShift(selectionStart, offset, e);else if(selectionStart == currentEnd && (nextStart == -1 || selectionStart + selectionLength <= nextStart)){
- deleteSpaceAndShift(selectionStart, offset); + deleteSpaceAndShift(selectionStart, offset, e); } else { makeTextChange(offset); @@ -1193,7 +1197,7 @@ setListenerLock(false); } - private void deleteSelection(){ + private void deleteSelection(ExtendedModifyEvent e){if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd)
makeTextChange(-selectionLength);else if(selectionStart + selectionLength > currentEnd && selectionStart + selectionLength >= nextStart || previousEnd == -1){
@@ -1213,7 +1217,7 @@ } else if(selectionStart == currentEnd && nextStart == -1){ changes= (currentEnd + selectionLength) - currentEnd; - sendDeleteSpaceMessage(selectionStart, -changes); + sendDeleteSpaceMessage(selectionStart, -changes, e); selectionLength -= changes; } else if(selectionStart > currentStart && selectionStart != currentEnd){ @@ -1235,7 +1239,7 @@ if(selectionLength < changes) changes = selectionLength; - sendDeleteSpaceMessage(selectionStart, -changes); + sendDeleteSpaceMessage(selectionStart, -changes, e); if(changes != 0) selectionLength -= changes; else @@ -1247,7 +1251,7 @@ else if(selectionStart < currentStart && previousEnd <= -1){ changes = currentStart - selectionStart; selectionLength -= changes; - sendDeleteSpaceMessage(selectionStart, -changes); + sendDeleteSpaceMessage(selectionStart, -changes, e); setCurrent(currentStart); view.setCaretOffset(currentStart); @@ -1255,7 +1259,7 @@ else if(selectionStart < currentStart){ changes = currentStart - selectionStart; selectionLength -= changes; - sendDeleteSpaceMessage(selectionStart, -changes); + sendDeleteSpaceMessage(selectionStart, -changes, e); setCurrent(currentStart); view.setCaretOffset(currentStart); @@ -1347,9 +1351,9 @@ }//a helper method for common series of methods that typically, but not always, follow one another
- private void deleteSpaceAndShift(int start, int offset){+ private void deleteSpaceAndShift(int start, int offset, ExtendedModifyEvent e){
shiftLeft(offset); - sendDeleteSpaceMessage(start, offset); + sendDeleteSpaceMessage(start, offset, e); } private boolean isFirst(Node n){ ============================================================================== Revision: 38772ce3c778 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 22 18:32:06 2014 UTC Log: Fix bug in styles not being reset when inserting space https://code.google.com/p/brailleblaster/source/detail?r=38772ce3c778 Modified:/src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java
/src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java Mon Dec 22 18:29:25 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/WhiteSpaceHandler.java Mon Dec 22 18:32:06 2014 UTC
@@ -74,6 +74,8 @@list.shiftOffsetsFromIndex(list.getCurrentIndex(), ev.getText().length(), ev.getText().length());
text.view.setCaretOffset(list.getCurrent().start); + text.refreshStyle(list.getCurrent()); + braille.refreshStyle(list.getCurrent()); manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Fri Dec 12 17:44:51 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Mon Dec 22 18:32:06 2014 UTC
@@ -717,6 +717,26 @@ setListenerLock(false); } } + + public void refreshStyle(TextMapElement t){ + Styles style = stylesTable.makeStylesElement(t.parentElement(), t.n);+ String text = view.getTextRange(t.brailleList.getFirst().start, t.brailleList.getLast().end - t.brailleList.getFirst().start);
+ int margin = 0; + if(style.contains(StylesType.format) && t.brailleList.size() > 0)+ setAlignment(t.brailleList.getFirst().start, t.brailleList.getLast().end, style);
+ + //reset margin in case it is not applied+ if(t.brailleList.getFirst().start == view.getOffsetAtLine(view.getLineAtOffset(t.brailleList.getFirst().start)))
+ handleLineWrap(t.brailleList.getFirst().start, text, 0, false); + + if(style.contains(StylesType.leftMargin)) { + margin = Integer.valueOf((String)style.get(StylesType.leftMargin));+ handleLineWrap(t.brailleList.getFirst().start, text, margin, style.contains(StylesType.firstLineIndent));
+ } ++ if(isFirst(t.brailleList.getFirst().n) && style.contains(StylesType.firstLineIndent))
+ setFirstLineIndent(t.brailleList.getFirst().start, style); + } public void removeMathML(TextMapElement t){ int total = t.brailleList.getLast().end - t.brailleList.getFirst().start; =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Dec 22 18:29:25 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Dec 22 18:32:06 2014 UTC
@@ -746,6 +746,32 @@ spaceBeforeText = 0; setListenerLock(false); } + + public void refreshStyle(TextMapElement t){+ Styles style = stylesTable.makeStylesElement((Element)t.parentElement(), t.n);
+ String text = view.getTextRange(t.start, t.end - t.start); + int margin = 0; + if(style.contains(StylesType.leftMargin)){ + margin = Integer.valueOf((String)style.get(StylesType.leftMargin));+ handleLineWrap(currentStart, text, margin, style.contains(StylesType.firstLineIndent));
+ } ++ if(isFirst(t.n) && style.contains(StylesType.firstLineIndent) && text.length() > 0)
+ setFirstLineIndent(t.start, style); + + if(style.contains(StylesType.emphasis))+ setFontStyleRange(t.start, text.length(), (StyleRange)style.get(StylesType.emphasis));
+ else { + StyleRange range = getStyleRange(); + if(range != null) + resetStyleRange(range); + } + + if(style.contains(StylesType.format)) + setAlignment(currentStart, currentEnd, style); + else + setAlignment(currentStart, currentEnd, SWT.LEFT); + } public void removeMathML(Message m){ setListenerLock(true);