[brailleblaster] [brailleblaster.newdesign] push by brandon....@xxxxxxxxx - Fixed minor cursor bug on 2013-05-15 15:42 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Wed, 15 May 2013 15:42:16 +0000

Revision: 8bffcec112ef
Branch:   default
Author:   Brandon Roller <brandon.r.roller@xxxxxxxxx>
Date:     Wed May 15 08:35:22 2013
Log:      Fixed minor cursor bug
http://code.google.com/p/brailleblaster/source/detail?r=8bffcec112ef&repo=newdesign

Modified:
 /src/main/org/brailleblaster/abstractClasses/AbstractView.java
 /src/main/org/brailleblaster/views/BrailleView.java
 /src/main/org/brailleblaster/views/TextView.java
 /src/main/org/brailleblaster/views/TreeView.java
 /src/main/org/brailleblaster/wordprocessor/DocumentManager.java

=======================================
--- /src/main/org/brailleblaster/abstractClasses/AbstractView.java Mon May 13 08:46:10 2013 +++ /src/main/org/brailleblaster/abstractClasses/AbstractView.java Wed May 15 08:35:22 2013
@@ -52,6 +52,7 @@
        protected int spaceBeforeText, spaceAfterText;
        public int positionFromStart, cursorOffset;
        public static int currentLine, words;
+       protected boolean locked;

        public AbstractView() {
        }
@@ -180,6 +181,14 @@

                return wordCount;
        }
+
+       protected void setListenerLock(boolean setting){
+               this.locked = setting;
+       }
+
+       protected boolean getLock(){
+               return this.locked;
+       }

        protected abstract void setViewData(Message message);
 }
=======================================
--- /src/main/org/brailleblaster/views/BrailleView.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/views/BrailleView.java Wed May 15 08:35:22 2013
@@ -125,8 +125,10 @@
                view.addCaretListener(new CaretListener(){
                        @Override
                        public void caretMoved(CaretEvent e) {
- if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){
-                                       setCurrent(dm);
+                               if(!getLock()){
+ if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){
+                                               setCurrent(dm);
+                                       }
                                }

                                if(view.getLineAtOffset(view.getCaretOffset()) 
!= currentLine){
@@ -153,6 +155,8 @@
                                }
                        }
                });
+
+               setListenerLock(false);
        }

        private void setCurrent(DocumentManager dm){
@@ -341,7 +345,9 @@

                String insertionString = 
(String)message.getValue("newBrailleText");
                if(t.brailleList.getFirst().start != -1){
+                       setListenerLock(true);
view.replaceTextRange(t.brailleList.getFirst().start, total, insertionString);
+                       setListenerLock(false);
                        view.setLineIndent(startLine, 1, lineIndent);

                        if(t.brailleList.getFirst().start < 
view.getCharCount()){
@@ -354,7 +360,9 @@
        }

        public void removeWhitespace(int start, int length){
+               setListenerLock(true);
                view.replaceTextRange(start, Math.abs(length), "");
+               setListenerLock(false);
        }

        public void changeAlignment(int startPosition, int alignment){
@@ -366,9 +374,11 @@
        }

        public void updateCursorPosition(Message message){
+               setListenerLock(true);
                setViewData(message);
                setCursorPosition(message);
                setPositionFromStart();
+               setListenerLock(false);
        }

        private void setPositionFromStart(){
=======================================
--- /src/main/org/brailleblaster/views/TextView.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/views/TextView.java Wed May 15 08:35:22 2013
@@ -67,7 +67,7 @@
private int currentStart, currentEnd, previousEnd, nextStart, selectionStart, selectionLength;
        private int currentChanges = 0;
        private int escapeChars;
-       private boolean textChanged, reformatting;
+       private boolean textChanged;
        private BBSemanticsTable stylesTable;
        private StyleRange range;
        private int[] selectionArray;
@@ -131,7 +131,7 @@
                                        setSelection(-1, -1);
                                }

- if(oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0){ + if(oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){
                                        Message message = new 
Message(BBEvent.ADJUST_INDENT);
                                        message.put("sender", "text");
                                        message.put("indent", 0);
@@ -145,7 +145,7 @@
view.addExtendedModifyListener(modListener = new ExtendedModifyListener(){
                        @Override
                        public void modifyText(ExtendedModifyEvent e) {
-                               if(reformatting == false){
+                               if(!getLock()){
                                        if(e.length > 0){
                                                handleTextEdit(dm, e);
                                        }
@@ -189,7 +189,7 @@
                view.addCaretListener(caretListener = new CaretListener(){
                        @Override
                        public void caretMoved(CaretEvent e) {
-                               if(reformatting == false){
+                               if(!getLock()){
if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP){
                                                if(e.caretOffset >= currentEnd || 
e.caretOffset < currentStart){
                                                        if(textChanged == true){
@@ -199,6 +199,7 @@
                                                }
                                        }
                                }
+
                                if(view.getLineAtOffset(view.getCaretOffset()) 
!= currentLine){
                                        Message message = new 
Message(BBEvent.UPDATE_STATUSBAR);
                                        words = getWordCount();
@@ -253,6 +254,8 @@
                                }
                        }
                });
+
+               setListenerLock(false);
        }

        public void removeListeners(){
@@ -370,7 +373,7 @@

        public void reformatText(Node n, Message message, DocumentManager dm){
                int pos = view.getCaretOffset();
-               reformatting  = true;
+               setListenerLock(true);

                int indent = 
view.getLineIndent(view.getLineAtOffset(currentStart));
                StyleRange range = getStyleRange();
@@ -385,7 +388,7 @@
                this.spaceAfterText = 0;
                this.spaceBeforeText = 0;
                this.escapeChars = 0;
-               reformatting = false;
+               setListenerLock(false);
        }

        private String appendToView(Node n){
@@ -578,7 +581,7 @@

private void handleTextDeletion(DocumentManager dm, ExtendedModifyEvent e){
                int offset = view.getCaretOffset() - oldCursorPosition;
-
+               setListenerLock(true);
                if(selectionLength > 0){
                        view.setCaretOffset(selectionStart);
                        setCurrent(dm);
@@ -635,6 +638,7 @@
                                setCurrent(dm);
                        }
                }
+               setListenerLock(false);
        }

        private void deleteSelection(DocumentManager dm){
@@ -770,9 +774,11 @@
        }

        public void updateCursorPosition(Message message){
+               setListenerLock(true);
                setViewData(message);
                setCursorPosition(message);
                setPositionFromStart();
+               setListenerLock(false);
        }

        private void setCursorPosition(Message message){
=======================================
--- /src/main/org/brailleblaster/views/TreeView.java Mon May 13 08:46:10 2013 +++ /src/main/org/brailleblaster/views/TreeView.java Wed May 15 08:35:22 2013
@@ -56,7 +56,6 @@


 public class TreeView extends AbstractView {
-
        public Tree tree;

        public TreeView(final DocumentManager dm, Group documentWindow){
@@ -70,7 +69,7 @@
                        }
                        @Override
                        public void focusLost(FocusEvent e) {
-                               // TODO Auto-generated method stub
+
                        }
                });

@@ -81,28 +80,41 @@
                        }

                        @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               Tree t = (Tree)e.getSource();
-                               TreeItem [] items = t.getSelection();
+                       public void widgetSelected(SelectionEvent e) {
+                               if(!getLock()){
+                                       Tree t = (Tree)e.getSource();
+                                       TreeItem [] items = t.getSelection();

-                               if(items[0].getData() != null){
-                                       ArrayList<TextMapElement>list = 
getList(items[0]);
-                                       TextMapElement temp = list.get(0);
-                                       Message message = new 
Message(BBEvent.SET_CURRENT);
-                                       message.put("sender", "tree");
-                                       message.put("offset", temp.start);
-                                       if(items[0].getText().equals("brl")){
-                                               message.put("isBraille", true);
-                                               message.put("offset", 
temp.brailleList.getFirst().start);
+                                       if(items[0].getData() != null){
+                                               ArrayList<TextMapElement>list = 
getList(items[0]);
+                                               TextMapElement temp = 
list.get(0);
+                                               Message message = new 
Message(BBEvent.SET_CURRENT);
+                                               message.put("sender", "tree");
+                                               message.put("offset", 
temp.start);
+                                               
if(items[0].getText().equals("brl")){
+                                                       
message.put("isBraille", true);
+                                                       message.put("offset", 
temp.brailleList.getFirst().start);
+                                               }
+                                               cursorOffset = 0;
+                                               dm.dispatch(message);
                                        }
-                                       cursorOffset = 0;
-                                       dm.dispatch(message);
-
-                                       Message cursorMessage = new 
Message(BBEvent.UPDATE_CURSORS);
-                                       cursorMessage.put("sender", "tree");
-                                       dm.dispatch(cursorMessage);
                                }
                        }
+               });
+
+               this.tree.addFocusListener(new FocusListener(){
+                       @Override
+                       public void focusGained(FocusEvent arg0) {
+                               // TODO Auto-generated method stub
+
+                       }
+
+                       @Override
+                       public void focusLost(FocusEvent e) {
+                               Message cursorMessage = new 
Message(BBEvent.UPDATE_CURSORS);
+                               cursorMessage.put("sender", "tree");
+                               dm.dispatch(cursorMessage);
+                       }
                });

                this.tree.addTraverseListener(new TraverseListener(){
@@ -128,6 +140,7 @@
                view.setLayout(new FillLayout());

                this.tree.pack();
+               setListenerLock(false);
        }

        public void setRoot(Element e){
@@ -155,13 +168,16 @@
        }

        public void setSelection(TextMapElement t, Message m){
+               setListenerLock(true);
                searchTree(this.getRoot(), t, m);
                if(m.getValue("item") != null){
                        this.tree.setSelection(((TreeItem)m.getValue("item")));
                }
+               setListenerLock(false);
        }

        public void removeItem(TextMapElement t, Message m){
+               setListenerLock(true);
                searchTree(this.getRoot(), t, m);
                if((TreeItem)m.getValue("item") != null){
                        TreeItem item = (TreeItem)m.getValue("item");
@@ -172,6 +188,7 @@
                                item.dispose();
                        }
                }
+               setListenerLock(false);
        }

        private void searchTree(TreeItem item, TextMapElement t, Message m){
@@ -196,14 +213,17 @@
        }

        public TextMapElement getSelection(TextMapElement t){
+               setListenerLock(true);
                TreeItem [] arr = this.tree.getSelection();
                if(arr.length > 0 && arr[0].getData() != null){
                        ArrayList<TextMapElement>list = getList(arr[0]);
                        for(int i = 0; i < list.size(); i++)
-                               if(list.get(i).equals(t))
+                               if(list.get(i).equals(t)){
+                                       setListenerLock(false);
                                        return (TextMapElement)list.get(i);
+                               }
                }
-
+               setListenerLock(false);
                return null;
        }

=======================================
--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Wed May 15 08:35:22 2013
@@ -327,9 +327,14 @@
                                        list.getCurrentNodeData(message);
                                        this.text.updateCursorPosition(message);
                                }
-                               else {
-                                       
this.text.view.setCaretOffset(list.getCurrent().start);
- this.braille.view.setCaretOffset(list.getCurrent().brailleList.getFirst().start);
+                               else 
if(message.getValue("sender").equals("tree")){
+                                       message.put("lastPosition", 
this.text.positionFromStart);
+                                       message.put("offset", 
this.text.cursorOffset);
+                                       list.getCurrentNodeData(message);
+                                       
this.braille.updateCursorPosition(message);
+                                       message.put("lastPosition", 
this.braille.positionFromStart);
+                                       message.put("offset", 
this.braille.cursorOffset);
+                                       this.text.updateCursorPosition(message);
                                }
                                break;
                        case SET_CURRENT:

Other related posts:

  • » [brailleblaster] [brailleblaster.newdesign] push by brandon....@xxxxxxxxx - Fixed minor cursor bug on 2013-05-15 15:42 GMT - brailleblaster