[brailleblaster] push by brandon....@xxxxxxxxx - Added rough implementation of undoing removal of an element on 2014-12-08 19:06 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Mon, 08 Dec 2014 19:06:48 +0000

Revision: ebf39a06503c
Branch:   rt1835-UndoRemoveElement
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Mon Dec  8 19:05:31 2014 UTC
Log:      Added rough implementation of undoing removal of an element
https://code.google.com/p/brailleblaster/source/detail?r=ebf39a06503c

Modified:
 /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java
/src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java
 /src/main/org/brailleblaster/wordprocessor/WPManager.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Wed Dec 3 14:32:23 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Mon Dec 8 19:05:31 2014 UTC
@@ -3,6 +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.HideActionHandler;
import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;

@@ -24,6 +25,8 @@
                                case Insert:
                                        break;
                                case Delete:
+                                       ElementRemover remover = new 
ElementRemover(manager, list, vi);
+                                       remover.removeNode(event);
                                        break;
                                case Hide:
                                        HideActionHandler h = new 
HideActionHandler(manager, list, vi);
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java Thu Dec 4 16:29:20 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/ElementInserter.java Mon Dec 8 19:05:31 2014 UTC
@@ -68,13 +68,7 @@
if(ev.getNode() instanceof Element && ((Element)ev.getNode()).getAttributeValue("semantics").contains("style")){ ArrayList<TextMapElement>elList = constructMapElements((Element)ev.getNode(), 0);

- for(int i = 0, index = ev.getListIndex(); i < elList.size(); i++, index++){
-                               list.add(index, elList.get(i));
- list.get(index).setOffsets(ev.getTextOffset() + 1, ev.getTextOffset() + 1);
-                               for(int j = 0; j < 
list.get(index).brailleList.size(); j++){
- list.get(index).brailleList.get(j).setOffsets(ev.getBrailleOffset() + 1, ev.getBrailleOffset() + 1);
-                               }
-                       }
+ insertInList(elList, ev.getListIndex(), ev.getTextOffset() + 1, ev.getBrailleOffset() + 1);

                        if(list.size() - 1 != ev.getListIndex() + 1)
                                list.shiftOffsetsFromIndex(ev.getListIndex() + 
1, 1, 1);
@@ -88,21 +82,25 @@
                        if(ev.getNode() instanceof Element)
                                elList = 
constructMapElements((Element)ev.getNode(), 0);
                        else
- elList = constructMapElements((Element)ev.getParent(), ev.getParentIndex()); + elList = constructMapElement((Element)ev.getParent(), ev.getParentIndex());

- for(int i = 0, index = ev.getListIndex(); i < elList.size(); i++, index++){
-                               list.add(index, elList.get(i));
-                               list.get(index).setOffsets(ev.getTextOffset(), 
ev.getTextOffset());
-                               for(int j = 0; j < 
list.get(index).brailleList.size(); j++){
- list.get(index).brailleList.get(j).setOffsets(ev.getBrailleOffset(), ev.getBrailleOffset());
-                               }
-                       }
+ insertInList(elList, ev.getListIndex(), ev.getTextOffset(), ev.getBrailleOffset());
+
                        tree.rebuildTree(ev.getTreeIndex());
                }

                list.setCurrent(ev.getListIndex());
                
manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE));
        }
+
+ public 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)
@@ -179,6 +177,28 @@
                                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;
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Thu Dec 4 18:40:23 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Mon Dec 8 19:05:31 2014 UTC
@@ -10,9 +10,12 @@
 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;
@@ -44,6 +47,20 @@
                else
                        removeElement(m);
        }
+
+       public void removeNode(Event ev){
+ int length = list.get(ev.getListIndex()).end - list.get(ev.getListIndex()).end;
+               Message m = Message.createRemoveNodeMessage(ev.getListIndex(), 
length);
+               removeNode(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);
+               }
+
+ manager.dispatch(Message.createSetCurrentMessage(Sender.TREE, ev.getTextOffset(), false));
+       }

        private void removeElement(Message message){
                int index = (Integer)message.getValue("index");
@@ -137,4 +154,26 @@
        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/wordprocessor/WPManager.java Thu Oct 30 13:39:56 2014 UTC +++ /src/main/org/brailleblaster/wordprocessor/WPManager.java Mon Dec 8 19:05:31 2014 UTC
@@ -152,7 +152,8 @@
                                        display.sleep();
                                }
                        } catch (Throwable e) {
-/*                             logger.debug("Uncaught exception detected", e);
+                               logger.error("Uncaught exception detected", e);
+ /*
                                MessageBox questionBox = new 
MessageBox(this.shell,
                                                SWT.ICON_QUESTION | SWT.YES | 
SWT.NO);
                                
questionBox.setMessage(lh.localValue("UnexpectedError.Message"));

Other related posts:

  • » [brailleblaster] push by brandon....@xxxxxxxxx - Added rough implementation of undoing removal of an element on 2014-12-08 19:06 GMT - brailleblaster