[brailleblaster] push by brandon....@xxxxxxxxx - Fixed bug with multiple hide events on 2014-12-15 20:56 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Mon, 15 Dec 2014 20:57:00 +0000

Revision: 55817f4e8a8c
Branch:   rt1720-UndoStyles
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Mon Dec 15 20:54:13 2014 UTC
Log:      Fixed bug with multiple hide events
https://code.google.com/p/brailleblaster/source/detail?r=55817f4e8a8c

Modified:
 /src/main/org/brailleblaster/perspectives/braille/Manager.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/ElementInserter.java /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Mon Dec 15 20:54:13 2014 UTC
@@ -1467,7 +1467,7 @@

        public void undo(){
                EventFrame f = undoQueue.popEvent(vi, document, list, this);
- if(f != null && f.size() > 0 && !f.get(0).getEventType().equals(EventTypes.Update) && !f.get(0).getEventType().equals(EventTypes.Style_Change)) + if(f != null && f.size() > 0 && !f.get(0).getEventType().equals(EventTypes.Update) && !f.get(0).getEventType().equals(EventTypes.Style_Change) & !f.get(0).getEventType().equals(EventTypes.Hide))
                        redoQueue.add(f);
        }

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Mon Dec 15 20:54:13 2014 UTC
@@ -38,7 +38,7 @@
                                        break;
                                case Hide:
                                        HideActionHandler h = new 
HideActionHandler(manager, list, vi);
-                                       h.hideText(event);
+                                       h.hideText(f);
                                        break;
                                default:
                                        break;
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/UndoQueue.java Mon Dec 15 20:54:13 2014 UTC
@@ -29,7 +29,7 @@
                                        break;
                                case Hide:
                                        ElementInserter es = new 
ElementInserter(vi, doc, list, manager);
-                                       es.resetElement(event);
+                                       es.resetElement(f);
                                        break;
                                case Style_Change:
                                        StyleHandler s = new 
StyleHandler(manager, vi, list);
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java Mon Dec 8 20:51:17 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java Mon Dec 15 20:54:13 2014 UTC
@@ -13,6 +13,8 @@
 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;
@@ -35,6 +37,7 @@
        TextView text;
        BrailleView braille;
        BBTree tree;
+       EventFrame frame;

public ElementInserter(ViewInitializer vi, BrailleDocument doc, MapList list, Manager manager){
                this.vi = vi;
@@ -143,22 +146,29 @@
                tree.newTreeItem(list.get(list.getCurrentIndex() + 1), index, 
1);
        }

-       public void resetElement(Event f){
-               if(vi.getStartIndex() != f.getFirstSectionIndex())
-                       list = vi.resetViews(f.getFirstSectionIndex());
+       public void resetElement(EventFrame f){
+               frame = new EventFrame();
+ while(f.size() > 0 && f.get(f.size() - 1).getEventType().equals(EventTypes.Hide)){
+                       Event event = f.pop();
+                       if(vi.getStartIndex() != event.getFirstSectionIndex())
+                               list = 
vi.resetViews(event.getFirstSectionIndex());

-               Element replacedElement = replaceElement(f);
-               updateSemanticEntry(replacedElement, (Element)f.getNode());
+                       Element replacedElement = replaceElement(event);
+                       updateSemanticEntry(replacedElement, 
(Element)event.getNode());

- ArrayList<TextMapElement> elList = constructMapElements((Element)f.getNode(), 0); - setViews(elList, f.getListIndex(), f.getTextOffset(), f.getBrailleOffset()); + ArrayList<TextMapElement> elList = constructMapElements((Element)event.getNode(), 0); + setViews(elList, event.getListIndex(), event.getTextOffset(), event.getBrailleOffset());

-               manager.getTreeView().rebuildTree(f.getTreeIndex());
- manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(f.getListIndex()).start, false));
-               
manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE));
+                       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(f.getTextOffset()))
-                       setTopIndex(f.getTextOffset());
+                       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()));
+               }
+               manager.addRedoEvent(frame);
        }

private ArrayList<TextMapElement> constructMapElements(Element e, int index){
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Mon Dec 15 19:50:35 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/HideActionHandler.java Mon Dec 15 20:54:13 2014 UTC
@@ -45,41 +45,61 @@
        }

        public void hideText(){
+               eventFrame = new EventFrame();
                if(list.size() > 0 && text.view.getCharCount() > 0){
-                       if(text.isMultiSelected())
-                               hideMultipleElements();
-                       else if(!(list.getCurrent() instanceof 
BrlOnlyMapElement))
+                       if(text.isMultiSelected()){
+                               boolean valid = hideMultipleElements();
+                               if(valid)
+                                       manager.addUndoEvent(eventFrame);
+                       }
+                       else if(!(list.getCurrent() instanceof 
BrlOnlyMapElement)){
                                hideSingleElement();
+                               manager.addUndoEvent(eventFrame);
+                       }
                        else
                                invalidSelection();
                }
        }

-       public void hideText(Event ev){
- manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(ev.getListIndex()).start, false));
+       public void hideText(EventFrame f){
+               eventFrame = new EventFrame();
+ while(f.size() > 0 && f.get(f.size() - 1).getEventType().equals(EventTypes.Hide)){
+                       Event ev = f.pop();
+ manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, list.get(ev.getListIndex()).start, false));

-               //resets selection to recreate hide event by user
-               if(list.getCurrent() instanceof BrlOnlyMapElement){
- BrlOnlyMapElement b = list.findJoiningBoxline((BrlOnlyMapElement)list.getCurrent());
-                       int start =list.getCurrent().start;
-                       int end = b.end;
-                       text.setCurrentSelection(start, end);
-               }
+                       //resets selection to recreate hide event by user
+                       if(list.getCurrent() instanceof BrlOnlyMapElement){
+ BrlOnlyMapElement b = list.findJoiningBoxline((BrlOnlyMapElement)list.getCurrent());
+                               int start =list.getCurrent().start;
+                               int end = b.end;
+                               text.setCurrentSelection(start, end);
+                       }

-               hideText();
+                       redoHide();
+               }
+               manager.addUndoEvent(eventFrame);
+       }
+
+       private void redoHide(){
+               if(list.size() > 0 && text.view.getCharCount() > 0){
+                       if(text.isMultiSelected())
+                               hideMultipleElements();
+                       else if(!(list.getCurrent() instanceof 
BrlOnlyMapElement))
+                               hideSingleElement();
+                       else
+                               invalidSelection();
+               }
        }

        private void hideSingleElement(){
                text.update(false);
                int index = list.getCurrentIndex();
-               eventFrame = new EventFrame();
                boxlineAdded = false;
                hide(list.getCurrent());
                updateCurrentElement(index);
-               manager.addUndoEvent(eventFrame);
        }

-       private void hideMultipleElements(){
+       private boolean hideMultipleElements(){
                int start=text.getSelectedText()[0];
                int end=text.getSelectedText()[1];
                boolean invalid = false;
@@ -90,7 +110,6 @@
                Integer index = null;
                if(!invalid){
                        itr = itemSet.iterator();
-                       eventFrame = new EventFrame();
                        boxlineAdded = false;
                        while (itr.hasNext()) {
                                TextMapElement tempElement= itr.next();
@@ -100,8 +119,10 @@
                                hide(tempElement);
                        }
                        updateCurrentElement(index);
-                       manager.addUndoEvent(eventFrame);
+                       return true;
                }
+
+               return invalid;
        }

        private void updateCurrentElement(int index){

Other related posts:

  • » [brailleblaster] push by brandon....@xxxxxxxxx - Fixed bug with multiple hide events on 2014-12-15 20:56 GMT - brailleblaster