[brailleblaster] 6 new revisions pushed by brandon....@xxxxxxxxx on 2015-02-13 20:50 GMT

  • From: brailleblaster@xxxxxxxxxxxxxx
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Fri, 13 Feb 2015 20:50:53 +0000

6 new revisions:

Revision: 807d8081ffab
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 16:19:46 2015 UTC
Log:      Refactored code to reduce global vars in text view
https://code.google.com/p/brailleblaster/source/detail?r=807d8081ffab

Revision: 63b902a45e2b
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 16:48:10 2015 UTC
Log:      Moved more global vars from text view to state object
https://code.google.com/p/brailleblaster/source/detail?r=63b902a45e2b

Revision: c69fa9f480b9
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 17:09:49 2015 UTC
Log:      Moved another global var to stateObject
https://code.google.com/p/brailleblaster/source/detail?r=c69fa9f480b9

Revision: 133a723e329b
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 18:07:07 2015 UTC
Log:      Added state object to braille view
https://code.google.com/p/brailleblaster/source/detail?r=133a723e329b

Revision: d89f937a3cae
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 19:08:12 2015 UTC
Log:      Moved event validation into own class
https://code.google.com/p/brailleblaster/source/detail?r=d89f937a3cae

Revision: dad42bd50841
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 19:23:54 2015 UTC
Log:      Moved another global to stateObject
https://code.google.com/p/brailleblaster/source/detail?r=dad42bd50841

==============================================================================
Revision: 807d8081ffab
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 16:19:46 2015 UTC
Log:      Refactored code to reduce global vars in text view
https://code.google.com/p/brailleblaster/source/detail?r=807d8081ffab

Added:
/src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java
Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /dev/null
+++ /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 16:19:46 2015 UTC
@@ -0,0 +1,33 @@
+package org.brailleblaster.perspectives.braille.views.wp;
+
+public class ViewStateObject {
+       private int currentStart, currentEnd;
+
+       public ViewStateObject(){
+
+       }
+
+       public int getCurrentStart() {
+               return currentStart;
+       }
+
+       public void setCurrentStart(int currentStart) {
+               this.currentStart = currentStart;
+       }
+
+       public void adjustStart(int val){
+               currentStart += val;
+       }
+
+       public int getCurrentEnd() {
+               return currentEnd;
+       }
+
+       public void setCurrentEnd(int currentEnd) {
+               this.currentEnd = currentEnd;
+       }
+
+       public void adjustEnd(int val){
+               currentEnd += val;
+       }
+}
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Thu Feb 12 19:29:35 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 16:19:46 2015 UTC
@@ -81,9 +81,10 @@
 import org.eclipse.swt.widgets.Listener;

 public class TextView extends WPView {
+       private ViewStateObject stateObj;
        private int oldCursorPosition = -1;
        private int currentChar;
- private int currentStart, currentEnd, previousEnd, nextStart, selectionStart, selectionLength;
+       private int previousEnd, nextStart, selectionStart, selectionLength;
        private int currentChanges = 0;
        private boolean textChanged, readOnly;
        private StyleRange range;
@@ -109,6 +110,7 @@

public TextView (Manager manager, SashForm sash, BBSemanticsTable table) {
                super (manager, sash, table);
+               stateObj = new ViewStateObject();
                this.total = 0;
                this.spaceBeforeText = 0;
                this.spaceAfterText = 0;
@@ -140,6 +142,8 @@
                view.addVerifyKeyListener(verifyKeyListener = new 
VerifyKeyListener(){
                        @Override
                        public void verifyKey(VerifyEvent e) {
+                               int currentStart = stateObj.getCurrentStart();
+                               int currentEnd = stateObj.getCurrentEnd();
                                oldCursorPosition = view.getCaretOffset();
                                currentChar = e.keyCode;

@@ -354,6 +358,8 @@

                                if(!getLock()){
if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP || currentChar == SWT.PAGE_DOWN || currentChar == SWT.PAGE_UP){
+                                               int currentStart = 
stateObj.getCurrentStart();
+                                               int currentEnd = 
stateObj.getCurrentEnd();
                                                if(e.caretOffset >= currentEnd || 
e.caretOffset < currentStart){
                                                        if(textChanged == true 
&& currentChanges != 0)
                                                                sendUpdate();
@@ -373,6 +379,8 @@
                view.addMouseListener(mouseListener = new MouseAdapter(){
                        @Override
                        public void mouseDown(MouseEvent e) {
+                               int currentStart = stateObj.getCurrentStart();
+                               int currentEnd = stateObj.getCurrentEnd();
if( (view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart)){
                                        if(textChanged == true)
                                                sendUpdate();
@@ -409,6 +417,7 @@
                                        if (style != null) {
                                                Image image = (Image)style.data;
                                                if (image != null && 
!image.isDisposed()) {
+                                                       int currentStart = 
stateObj.getCurrentStart();
                                                        
saveAlignment(currentStart);
                                                        image.dispose();
                                                        currentChanges--;
@@ -489,6 +498,8 @@
        }

        private void sendUpdate(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
Message updateMessage = Message.createUpdateMessage(view.getCaretOffset(), getString(currentStart, currentEnd - currentStart), originalEnd - originalStart);
                manager.dispatch(updateMessage);
                words += (Integer)updateMessage.getValue("diff");
@@ -521,11 +532,13 @@
                                sendUpdate();
                        }
                        setCurrent(view.getCaretOffset());
-                       currentEnd += offset;
+                       stateObj.adjustEnd(offset);
                        incrementNext(offset);
                        textChanged = true;
                }

+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(isFirst(currentElement.n) && previousEnd == currentStart && (currentStart != currentEnd))
                        
manager.dispatch(Message.createMergeElementMessage(true));
else if(isLast(currentElement.n) && currentEnd == nextStart && (currentStart != currentEnd) )
@@ -537,16 +550,18 @@
                manager.dispatch(adjustmentMessage);

                if(type.equals("start")){
-                       currentStart -= position;
+                       stateObj.adjustStart(-position);
                        originalStart -= position;
                }
                else {
-                       currentEnd += position;
+                       stateObj.adjustEnd(position);
                        nextStart += position;
                }
        }

        private void sendRemoveMathML(TextMapElement t){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
Message removeMessage = Message.createRemoveNodeMessage(manager.indexOf(t), -(t.end - t.start));
                removeMessage.put("offset", currentChanges);
                manager.dispatch(removeMessage);
@@ -558,15 +573,15 @@

        @Override
        protected void setViewData(Message message){
-               currentStart = (Integer)message.getValue("start");
-               currentEnd = (Integer)message.getValue("end");
+               stateObj.setCurrentStart((Integer)message.getValue("start"));
+               stateObj.setCurrentEnd((Integer)message.getValue("end"));
                previousEnd = (Integer)message.getValue("previous");
                nextStart = (Integer)message.getValue("next");

-               originalStart = currentStart;
-               originalEnd = currentEnd;
+               originalStart = stateObj.getCurrentStart();
+               originalEnd = stateObj.getCurrentEnd();

-               if(currentStart < view.getCharCount())
+               if(stateObj.getCurrentStart() < view.getCharCount())
                        range = getStyleRange();

                currentElement = 
(TextMapElement)message.getValue("currentElement");
@@ -578,7 +593,7 @@
        }

        private void makeTextChange(int offset){
-               currentEnd += offset;
+               stateObj.adjustEnd(offset);
                incrementNext(offset);
                currentChanges += offset;
                textChanged = true;
@@ -590,12 +605,14 @@
        }

        private void shiftLeft(int offset){
-               currentStart += offset;
-               currentEnd += offset;
+               stateObj.adjustStart(offset);
+               stateObj.adjustEnd(offset);
                nextStart += offset;
        }

        public void setCursor(int offset, Manager cont){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                view.setFocus();
                view.setCaretOffset(offset);

@@ -774,6 +791,8 @@
                String reformattedText;
                Styles style = 
stylesTable.makeStylesElement((Element)n.getParent(), n);
                int margin = 0;
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                int pos = view.getCaretOffset();
                setListenerLock(true);

@@ -815,6 +834,8 @@
        }

        public void refreshStyle(TextMapElement t){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
Styles style = stylesTable.makeStylesElement((Element)t.parentElement(), t.n);
                String text = view.getTextRange(t.start, t.end - t.start);
                int margin = 0;
@@ -1214,35 +1235,35 @@
                int changes = e.length;
                int placeholder;
                if(e.replacedText.length() > 0){
-                       if(e.start < currentStart){
+                       if(e.start < stateObj.getCurrentStart()){
                                setCurrent(e.start);
                        }

-                       if(e.start + e.replacedText.length() > currentEnd){
+                       if(e.start + e.replacedText.length() > 
stateObj.getCurrentEnd()){
                                view.setCaretOffset(e.start);
                                setCurrent(view.getCaretOffset());

-                               if(selectionStart < currentStart)
-                                       sendAdjustRangeMessage("start", 
currentStart - selectionStart);
-                               else if(selectionStart > currentEnd)
-                                       sendAdjustRangeMessage("end", 
selectionStart - currentEnd);
+                               if(selectionStart < stateObj.getCurrentStart())
+ sendAdjustRangeMessage("start", stateObj.getCurrentStart() - selectionStart);
+                               else if(selectionStart > 
stateObj.getCurrentEnd())
+ sendAdjustRangeMessage("end", selectionStart - stateObj.getCurrentEnd());

-                               placeholder = currentStart;
+                               placeholder = stateObj.getCurrentStart();
                                if(e.length < e.replacedText.length()){
                                        setSelection(selectionStart + e.length, 
selectionLength - e.length);
-                                       changes = currentEnd - selectionStart;
+                                       changes = stateObj.getCurrentEnd() - 
selectionStart;
                                        makeTextChange(-changes);
                                        selectionLength -= changes;
                                        sendUpdate();
                                        setCurrent(view.getCaretOffset());
-                                       selectionStart = currentEnd;
+                                       selectionStart = 
stateObj.getCurrentEnd();
                                }
                                else {
-                                       selectionLength -= currentEnd - e.start;
-                                       makeTextChange(changes - (currentEnd - 
e.start));
+                                       selectionLength -= 
stateObj.getCurrentEnd() - e.start;
+                                       makeTextChange(changes - 
(stateObj.getCurrentEnd() - e.start));
                                        sendUpdate();
                                        setCurrent(view.getCaretOffset());
-                                       selectionStart = currentEnd;
+                                       selectionStart = 
stateObj.getCurrentEnd();
                                }

                                deleteSelection(e);
@@ -1250,14 +1271,14 @@
                                view.setCaretOffset(e.start + e.length);
                        }
                        else {
-                               if(selectionStart < currentStart){
-                                       sendAdjustRangeMessage("start", 
currentStart - selectionStart);
+                               if(selectionStart < stateObj.getCurrentStart()){
+ sendAdjustRangeMessage("start", stateObj.getCurrentStart() - selectionStart);
                                        changes -= e.replacedText.length();
                                        makeTextChange(changes);
                                        sendUpdate();
                                        setCurrent(view.getCaretOffset());
                                }
-                               else if(e.start + e.replacedText.length() == 
currentEnd){
+                               else if(e.start + e.replacedText.length() == 
stateObj.getCurrentEnd()){
                                        changes -= e.replacedText.length();
                                        makeTextChange(changes);
                                        recordEvent(e, true);
@@ -1270,11 +1291,11 @@
                        }
                }
                else {
-                       if(oldCursorPosition > currentEnd)
-                               sendAdjustRangeMessage("end", oldCursorPosition 
- currentEnd);
+                       if(oldCursorPosition > stateObj.getCurrentEnd())
+ sendAdjustRangeMessage("end", oldCursorPosition - stateObj.getCurrentEnd());

-                       if(oldCursorPosition < currentStart)
-                               sendAdjustRangeMessage("start", currentStart - 
oldCursorPosition);
+                       if(oldCursorPosition < stateObj.getCurrentStart())
+ sendAdjustRangeMessage("start", stateObj.getCurrentStart() - oldCursorPosition);

                        makeTextChange(changes);
                        recordEvent(e, true);
@@ -1292,16 +1313,16 @@
                        deleteSelection(e);
                }
                else if(currentChar == SWT.BS){
- if(oldCursorPosition == currentStart && view.getCaretOffset() >= previousEnd) + if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() >= previousEnd)
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if(oldCursorPosition == currentStart && view.getCaretOffset() < previousEnd){ + else if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() < previousEnd){
                                if(textChanged)
                                        sendUpdate();

                                setCurrent(view.getCaretOffset());
                                makeTextChange(offset);
                        }
-                       else if(oldCursorPosition > currentEnd)
+                       else if(oldCursorPosition > stateObj.getCurrentEnd())
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
                        else{
                                makeTextChange(offset);
@@ -1311,23 +1332,23 @@
                else if(currentChar == SWT.DEL){
                        offset = -1;

- if(selectionStart + selectionLength != currentEnd && oldCursorPosition == currentEnd && oldCursorPosition < nextStart){ + if(selectionStart + selectionLength != stateObj.getCurrentEnd() && oldCursorPosition == stateObj.getCurrentEnd() && oldCursorPosition < nextStart){
                                if(textChanged)
                                        sendUpdate();

                                nextStart += offset;
                                sendDeleteSpaceMessage(view.getCaretOffset(), 
offset, e);
                        }
- else if(oldCursorPosition == currentEnd && view.getCaretOffset() == nextStart){ + else if(oldCursorPosition == stateObj.getCurrentEnd() && view.getCaretOffset() == nextStart){
                                if(textChanged)
                                        sendUpdate();

                                setCurrent(view.getCaretOffset() + 1);
                                makeTextChange(offset);
                        }
- else if ((previousEnd == -1 && selectionLength > 0 && selectionStart < currentStart && selectionStart + selectionLength <= currentStart)|| (oldCursorPosition < currentStart && (previousEnd == -1 || oldCursorPosition > previousEnd))) + else if ((previousEnd == -1 && selectionLength > 0 && selectionStart < stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentStart())|| (oldCursorPosition < stateObj.getCurrentStart() && (previousEnd == -1 || oldCursorPosition > previousEnd)))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if( (oldCursorPosition == currentEnd && nextStart == -1)|| (oldCursorPosition > currentEnd && (oldCursorPosition < nextStart || nextStart == -1))) + else if( (oldCursorPosition == stateObj.getCurrentEnd() && nextStart == -1)|| (oldCursorPosition > stateObj.getCurrentEnd() && (oldCursorPosition < nextStart || nextStart == -1)))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
                        else {
                                makeTextChange(offset);
@@ -1336,9 +1357,9 @@
                }
                else {
                        offset = -1;
- if((previousEnd == -1 || selectionStart >= previousEnd) && selectionStart + selectionLength <= currentStart) + if((previousEnd == -1 || selectionStart >= previousEnd) && selectionStart + selectionLength <= stateObj.getCurrentStart())
                                deleteSpaceAndShift(selectionStart, offset, e);
- else if(selectionStart == currentEnd && (nextStart == -1 || selectionStart + selectionLength <= nextStart)) + else if(selectionStart == stateObj.getCurrentEnd() && (nextStart == -1 | | selectionStart + selectionLength <= nextStart))
                                deleteSpaceAndShift(selectionStart, offset, e);
                        else {
                                makeTextChange(offset);
@@ -1346,7 +1367,7 @@
                        }
                }

- if(currentStart == currentEnd && (currentStart == previousEnd || currentStart == nextStart)){ + if(stateObj.getCurrentStart() == stateObj.getCurrentEnd() && (stateObj.getCurrentStart() == previousEnd || stateObj.getCurrentStart() == nextStart)){
                        if(textChanged)
                                sendUpdate();

@@ -1356,11 +1377,11 @@
        }

        private void deleteSelection(ExtendedModifyEvent e){
- if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd){ + if(selectionStart >= stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentEnd()){
                        makeTextChange(-selectionLength);
                        recordEvent(e, false);
                }
- else if(selectionStart + selectionLength > currentEnd && selectionStart + selectionLength >= nextStart || previousEnd == -1){ + else if(selectionStart + selectionLength > stateObj.getCurrentEnd() && selectionStart + selectionLength >= nextStart || previousEnd == -1){
                        int changes = 0;
                        while(selectionLength > 0){
if(manager.getElementInRange(selectionStart) instanceof BrlOnlyMapElement || manager.getElementInRange(selectionStart) instanceof PageMapElement){
@@ -1375,26 +1396,26 @@
                        //              if(selectionLength <= 0)
                        //                      break;
                                }
-                               else if(selectionStart  == currentEnd && 
nextStart == -1){
-                                       changes= (currentEnd + selectionLength) 
- currentEnd;
+ else if(selectionStart == stateObj.getCurrentEnd() && nextStart == -1){ + changes= (stateObj.getCurrentEnd() + selectionLength) - stateObj.getCurrentEnd();
                                        sendDeleteSpaceMessage(selectionStart, 
-changes, e);
                                        selectionLength -= changes;
                                }
-                               else if(selectionStart > currentStart && 
selectionStart != currentEnd){
-                                       changes = currentEnd - selectionStart;
+ else if(selectionStart > stateObj.getCurrentStart() && selectionStart != stateObj.getCurrentEnd()){
+                                       changes = stateObj.getCurrentEnd() - 
selectionStart;
                                        makeTextChange(-changes);
                                        selectionLength -= changes;
                                        sendUpdate();
                                        setCurrent(view.getCaretOffset());
-                                       selectionStart = currentEnd;
+                                       selectionStart = 
stateObj.getCurrentEnd();
                                }
-                               else if(selectionStart == currentEnd && 
selectionStart != nextStart){
+ else if(selectionStart == stateObj.getCurrentEnd() && selectionStart != nextStart){ if(nextStart != -1 && manager.inPrintPageRange((selectionStart + nextStart) / 2)) changes = manager.getElementInRange((selectionStart + nextStart) / 2).start - selectionStart - 1;
                                        else if(nextStart != -1)
-                                               changes = nextStart - 
currentEnd;
+                                               changes = nextStart - 
stateObj.getCurrentEnd();
                                        else
-                                               changes= (currentEnd + 
selectionLength) - currentEnd;
+ changes= (stateObj.getCurrentEnd() + selectionLength) - stateObj.getCurrentEnd();

                                        if(selectionLength < changes)
                                                changes = selectionLength;
@@ -1406,32 +1427,32 @@
                                                selectionLength = 0;

                                        setCurrent(nextStart);
-                                       view.setCaretOffset(currentStart);
+                                       
view.setCaretOffset(stateObj.getCurrentStart());
                                }
-                               else if(selectionStart < currentStart && 
previousEnd <= -1){
-                                       changes = currentStart - selectionStart;
+ else if(selectionStart < stateObj.getCurrentStart() && previousEnd <= -1){
+                                       changes = stateObj.getCurrentStart() - 
selectionStart;
                                        selectionLength -= changes;
                                        sendDeleteSpaceMessage(selectionStart, 
-changes, e);

-                                       setCurrent(currentStart);
-                                       view.setCaretOffset(currentStart);
+                                       setCurrent(stateObj.getCurrentStart());
+                                       
view.setCaretOffset(stateObj.getCurrentStart());
                                }
-                               else if(selectionStart < currentStart){
-                                       changes = currentStart - selectionStart;
+                               else if(selectionStart < 
stateObj.getCurrentStart()){
+                                       changes = stateObj.getCurrentStart() - 
selectionStart;
                                        selectionLength -= changes;
                                        sendDeleteSpaceMessage(selectionStart, 
-changes, e);

-                                       setCurrent(currentStart);
-                                       view.setCaretOffset(currentStart);
+                                       setCurrent(stateObj.getCurrentStart());
+                                       
view.setCaretOffset(stateObj.getCurrentStart());
                                }
-                               else if(selectionStart == currentStart){
-                                       if(currentStart == currentEnd){
+                               else if(selectionStart == 
stateObj.getCurrentStart()){
+                                       if(stateObj.getCurrentStart() == 
stateObj.getCurrentEnd()){
                                                setCurrent(nextStart);
-                                               
view.setCaretOffset(currentStart);
+                                               
view.setCaretOffset(stateObj.getCurrentStart());
                                        }

-                                       if(currentEnd - currentStart < 
selectionLength){
-                                               changes = currentEnd - 
currentStart;
+ if(stateObj.getCurrentEnd() - stateObj.getCurrentStart() < selectionLength){
+                                               changes = 
stateObj.getCurrentEnd() - stateObj.getCurrentStart();
                                                makeTextChange(-changes);
                                                selectionLength -= changes;
                                                if(currentElement.isMathML())
@@ -1461,7 +1482,7 @@

        public void adjustCurrentElementValues(int changes){
                currentChanges = changes;
-               currentEnd += changes;
+               stateObj.adjustEnd(changes);
                nextStart += changes;

                if(currentChanges != 0)
@@ -1655,6 +1676,8 @@
        }

        private void setCursorPosition(Message message){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                int offset = (Integer)message.getValue("offset");

                if(message.contains("element")){
@@ -1689,6 +1712,8 @@

        public void setPositionFromStart(){
                int count = 0;
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                positionFromStart = view.getCaretOffset() - currentStart;
if(positionFromStart > 0 && currentStart + positionFromStart <= currentEnd){
                        String text = view.getTextRange(currentStart, 
positionFromStart);
@@ -1709,6 +1734,7 @@
        }

        private StyleRange getStyleRange(){
+               int currentStart = stateObj.getCurrentStart();
                if(currentStart < view.getCharCount()){
                        return view.getStyleRangeAtOffset(currentStart);
                }
@@ -1716,6 +1742,8 @@
        }

        private void checkStyleRange(StyleRange range){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                if(range != null)
                        setFontStyleRange(currentStart, currentEnd - 
currentStart, range);
        }
@@ -1906,6 +1934,7 @@
        }

        public void insertNewNode(int pos,String elementName){
+               int currentEnd = stateObj.getCurrentEnd();
Message m = Message.createInsertNodeMessage(false, false, true,elementName);

                if(pos > currentEnd){
@@ -2010,6 +2039,8 @@
        }

        private boolean validCut(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
                                return false;
@@ -2022,6 +2053,8 @@
        }

        private boolean validPaste(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
                                return false;
@@ -2034,6 +2067,8 @@
        }

        private boolean validDelete(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if((selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd) || selectionLength == 0)
                                return false;
@@ -2049,6 +2084,8 @@
        }

        private boolean validBackspace(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd)
                                return false;
@@ -2064,6 +2101,8 @@
        }

        private boolean validEdit(){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){
                        if(selectionLength <= 0)
                                return false;
@@ -2118,11 +2157,11 @@
        }

        public int getCurrentStart(){
-               return currentStart;
+               return stateObj.getCurrentStart();
        }

        public int getCurrentEnd(){
-               return currentEnd;
+               return stateObj.getCurrentEnd();
        }

        public int getCurrentChanges(){
@@ -2130,6 +2169,8 @@
        }

        public void redoText(Message m){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
                String text = view.getTextRange(currentStart, currentEnd - 
currentStart);
int viewLineCount = (text.length() - text.replace("\n", "").length()) + 1;
                int brailleLineCount = currentElement.brailleList.size();

==============================================================================
Revision: 63b902a45e2b
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 16:48:10 2015 UTC
Log:      Moved more global vars from text view to state object
https://code.google.com/p/brailleblaster/source/detail?r=63b902a45e2b

Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java
/src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 16:19:46 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 16:48:10 2015 UTC
@@ -84,7 +84,7 @@
        private ViewStateObject stateObj;
        private int oldCursorPosition = -1;
        private int currentChar;
-       private int previousEnd, nextStart, selectionStart, selectionLength;
+       private int selectionStart, selectionLength;
        private int currentChanges = 0;
        private boolean textChanged, readOnly;
        private StyleRange range;
@@ -223,7 +223,7 @@
                                        }
                                }

- if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineAlignment(view.getLineAtOffset(currentStart)) != SWT.LEFT ){ + if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineAlignment(view.getLineAtOffset(currentStart)) != SWT.LEFT ){
                                        Message message;
                                        int pos = view.getCaretOffset();
if(view.getLineAlignment(view.getLineAtOffset(currentStart)) == SWT.RIGHT){
@@ -239,13 +239,13 @@
                                        setSelection(-1, -1);
                                        view.setCaretOffset(pos);
                                }
- else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){ + else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){ Message message = Message.createAdjustIndentMessage(Sender.TEXT, 0, view.getLineAtOffset(currentStart));
                                        
view.setLineIndent(view.getLineAtOffset(currentStart), 1, 0);
                                        manager.dispatch(message);
                                        e.doit = false;
                                }
- else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) == 0 && currentStart != currentEnd){ + else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) == 0 && currentStart != currentEnd){ Styles style = stylesTable.get(stylesTable.getKeyFromAttribute(currentElement.parentElement())); if(style.contains(StylesType.linesBefore) && Integer.valueOf((String)style.get(StylesType.linesBefore)) > 0){
                                                int pos = oldCursorPosition - 1;
@@ -270,7 +270,7 @@
                                        }
                                }

- if(selectionLength <= 0 && oldCursorPosition == currentEnd && oldCursorPosition != nextStart && e.character == SWT.DEL && currentStart != currentEnd){ + if(selectionLength <= 0 && oldCursorPosition == currentEnd && oldCursorPosition != stateObj.getNextStart() && e.character == SWT.DEL && currentStart != currentEnd){ Styles style = stylesTable.get(stylesTable.getKeyFromAttribute(currentElement.parentElement())); if(style.contains(StylesType.linesAfter) && Integer.valueOf((String)style.get(StylesType.linesAfter)) > 0){
                                                int pos = oldCursorPosition;
@@ -427,7 +427,7 @@
                                                        if(view.getCaretOffset() != 0 
&& event.keyCode == SWT.BS)
                                                                
view.setCaretOffset(view.getCaretOffset() - 1);

-                                                       if(!(nextStart == -1 && 
previousEnd == -1))
+ if(!(stateObj.getNextStart() == -1 && stateObj.getPreviousEnd() == -1))
                                                                
setCurrent(view.getCaretOffset());
                                                }
                                        }
@@ -539,9 +539,9 @@

                int currentStart = stateObj.getCurrentStart();
                int currentEnd = stateObj.getCurrentEnd();
- if(isFirst(currentElement.n) && previousEnd == currentStart && (currentStart != currentEnd)) + if(isFirst(currentElement.n) && stateObj.getPreviousEnd() == currentStart && (currentStart != currentEnd))
                        
manager.dispatch(Message.createMergeElementMessage(true));
- else if(isLast(currentElement.n) && currentEnd == nextStart && (currentStart != currentEnd) ) + else if(isLast(currentElement.n) && currentEnd == stateObj.getNextStart() && (currentStart != currentEnd) )
                        
manager.dispatch(Message.createMergeElementMessage(false));
        }

@@ -555,7 +555,7 @@
                }
                else {
                        stateObj.adjustEnd(position);
-                       nextStart += position;
+                       stateObj.adjustNextStart(position);
                }
        }

@@ -575,8 +575,8 @@
        protected void setViewData(Message message){
                stateObj.setCurrentStart((Integer)message.getValue("start"));
                stateObj.setCurrentEnd((Integer)message.getValue("end"));
-               previousEnd = (Integer)message.getValue("previous");
-               nextStart = (Integer)message.getValue("next");
+               stateObj.setPreviousEnd((Integer)message.getValue("previous"));
+               stateObj.setNextStart((Integer)message.getValue("next"));

                originalStart = stateObj.getCurrentStart();
                originalEnd = stateObj.getCurrentEnd();
@@ -600,6 +600,7 @@
        }

        private void incrementNext(int offset){
+               int nextStart = stateObj.getNextStart();
                if(nextStart != -1)
                        nextStart += offset;
        }
@@ -607,7 +608,7 @@
        private void shiftLeft(int offset){
                stateObj.adjustStart(offset);
                stateObj.adjustEnd(offset);
-               nextStart += offset;
+               stateObj.adjustNextStart(offset);
        }

        public void setCursor(int offset, Manager cont){
@@ -1313,9 +1314,9 @@
                        deleteSelection(e);
                }
                else if(currentChar == SWT.BS){
- if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() >= previousEnd) + if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() >= stateObj.getPreviousEnd())
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() < previousEnd){ + else if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() < stateObj.getPreviousEnd()){
                                if(textChanged)
                                        sendUpdate();

@@ -1332,23 +1333,23 @@
                else if(currentChar == SWT.DEL){
                        offset = -1;

- if(selectionStart + selectionLength != stateObj.getCurrentEnd() && oldCursorPosition == stateObj.getCurrentEnd() && oldCursorPosition < nextStart){ + if(selectionStart + selectionLength != stateObj.getCurrentEnd() && oldCursorPosition == stateObj.getCurrentEnd() && oldCursorPosition < stateObj.getNextStart()){
                                if(textChanged)
                                        sendUpdate();

-                               nextStart += offset;
+                               stateObj.adjustNextStart(offset);
                                sendDeleteSpaceMessage(view.getCaretOffset(), 
offset, e);
                        }
- else if(oldCursorPosition == stateObj.getCurrentEnd() && view.getCaretOffset() == nextStart){ + else if(oldCursorPosition == stateObj.getCurrentEnd() && view.getCaretOffset() == stateObj.getNextStart()){
                                if(textChanged)
                                        sendUpdate();

                                setCurrent(view.getCaretOffset() + 1);
                                makeTextChange(offset);
                        }
- else if ((previousEnd == -1 && selectionLength > 0 && selectionStart < stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentStart())|| (oldCursorPosition < stateObj.getCurrentStart() && (previousEnd == -1 || oldCursorPosition > previousEnd))) + else if ((stateObj.getPreviousEnd() == -1 && selectionLength > 0 && selectionStart < stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentStart())|| (oldCursorPosition < stateObj.getCurrentStart() && (stateObj.getPreviousEnd() == -1 || oldCursorPosition > stateObj.getPreviousEnd())))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if( (oldCursorPosition == stateObj.getCurrentEnd() && nextStart == -1)|| (oldCursorPosition > stateObj.getCurrentEnd() && (oldCursorPosition < nextStart || nextStart == -1))) + else if( (oldCursorPosition == stateObj.getCurrentEnd() && stateObj.getNextStart() == -1)|| (oldCursorPosition > stateObj.getCurrentEnd() && (oldCursorPosition < stateObj.getNextStart() || stateObj.getNextStart() == -1)))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
                        else {
                                makeTextChange(offset);
@@ -1357,9 +1358,9 @@
                }
                else {
                        offset = -1;
- if((previousEnd == -1 || selectionStart >= previousEnd) && selectionStart + selectionLength <= stateObj.getCurrentStart()) + if((stateObj.getPreviousEnd() == -1 || selectionStart >= stateObj.getPreviousEnd()) && selectionStart + selectionLength <= stateObj.getCurrentStart())
                                deleteSpaceAndShift(selectionStart, offset, e);
- else if(selectionStart == stateObj.getCurrentEnd() && (nextStart == -1 | | selectionStart + selectionLength <= nextStart)) + else if(selectionStart == stateObj.getCurrentEnd() && (stateObj.getNextStart() == -1 || selectionStart + selectionLength <= stateObj.getNextStart()))
                                deleteSpaceAndShift(selectionStart, offset, e);
                        else {
                                makeTextChange(offset);
@@ -1367,7 +1368,7 @@
                        }
                }

- if(stateObj.getCurrentStart() == stateObj.getCurrentEnd() && (stateObj.getCurrentStart() == previousEnd || stateObj.getCurrentStart() == nextStart)){ + if(stateObj.getCurrentStart() == stateObj.getCurrentEnd() && (stateObj.getCurrentStart() == stateObj.getPreviousEnd() || stateObj.getCurrentStart() == stateObj.getNextStart())){
                        if(textChanged)
                                sendUpdate();

@@ -1381,7 +1382,7 @@
                        makeTextChange(-selectionLength);
                        recordEvent(e, false);
                }
- else if(selectionStart + selectionLength > stateObj.getCurrentEnd() && selectionStart + selectionLength >= nextStart || previousEnd == -1){ + else if(selectionStart + selectionLength > stateObj.getCurrentEnd() && selectionStart + selectionLength >= stateObj.getNextStart() || stateObj.getPreviousEnd() == -1){
                        int changes = 0;
                        while(selectionLength > 0){
if(manager.getElementInRange(selectionStart) instanceof BrlOnlyMapElement || manager.getElementInRange(selectionStart) instanceof PageMapElement){
@@ -1396,7 +1397,7 @@
                        //              if(selectionLength <= 0)
                        //                      break;
                                }
- else if(selectionStart == stateObj.getCurrentEnd() && nextStart == -1){ + else if(selectionStart == stateObj.getCurrentEnd() && stateObj.getNextStart() == -1){ changes= (stateObj.getCurrentEnd() + selectionLength) - stateObj.getCurrentEnd();
                                        sendDeleteSpaceMessage(selectionStart, 
-changes, e);
                                        selectionLength -= changes;
@@ -1409,11 +1410,11 @@
                                        setCurrent(view.getCaretOffset());
                                        selectionStart = 
stateObj.getCurrentEnd();
                                }
- else if(selectionStart == stateObj.getCurrentEnd() && selectionStart != nextStart){ - if(nextStart != -1 && manager.inPrintPageRange((selectionStart + nextStart) / 2)) - changes = manager.getElementInRange((selectionStart + nextStart) / 2).start - selectionStart - 1;
-                                       else if(nextStart != -1)
-                                               changes = nextStart - 
stateObj.getCurrentEnd();
+ else if(selectionStart == stateObj.getCurrentEnd() && selectionStart != stateObj.getNextStart()){ + if(stateObj.getNextStart() != -1 && manager.inPrintPageRange((selectionStart + stateObj.getNextStart()) / 2)) + changes = manager.getElementInRange((selectionStart + stateObj.getNextStart()) / 2).start - selectionStart - 1;
+                                       else if(stateObj.getNextStart() != -1)
+                                               changes = 
stateObj.getNextStart() - stateObj.getCurrentEnd();
                                        else
changes= (stateObj.getCurrentEnd() + selectionLength) - stateObj.getCurrentEnd();

@@ -1426,10 +1427,10 @@
                                        else
                                                selectionLength = 0;

-                                       setCurrent(nextStart);
+                                       setCurrent(stateObj.getNextStart());
                                        
view.setCaretOffset(stateObj.getCurrentStart());
                                }
- else if(selectionStart < stateObj.getCurrentStart() && previousEnd <= -1){ + else if(selectionStart < stateObj.getCurrentStart() && stateObj.getPreviousEnd() <= -1){
                                        changes = stateObj.getCurrentStart() - 
selectionStart;
                                        selectionLength -= changes;
                                        sendDeleteSpaceMessage(selectionStart, 
-changes, e);
@@ -1447,7 +1448,7 @@
                                }
                                else if(selectionStart == 
stateObj.getCurrentStart()){
                                        if(stateObj.getCurrentStart() == 
stateObj.getCurrentEnd()){
-                                               setCurrent(nextStart);
+                                               
setCurrent(stateObj.getNextStart());
                                                
view.setCaretOffset(stateObj.getCurrentStart());
                                        }

@@ -1460,7 +1461,7 @@
                                                else
                                                        sendUpdate();

-                                               if(nextStart != -1)
+                                               if(stateObj.getNextStart() != 
-1)
                                                        
setCurrent(view.getCaretOffset());
                                        }
                                        else {
@@ -1477,13 +1478,13 @@
                setSelection(-1, -1);

                if(currentElement instanceof PageMapElement)
-                       view.setCaretOffset(previousEnd);
+                       view.setCaretOffset(stateObj.getPreviousEnd());
        }

        public void adjustCurrentElementValues(int changes){
                currentChanges = changes;
                stateObj.adjustEnd(changes);
-               nextStart += changes;
+               stateObj.adjustNextStart(changes);

                if(currentChanges != 0)
                        textChanged = true;
@@ -2041,6 +2042,7 @@
        private boolean validCut(){
                int currentStart = stateObj.getCurrentStart();
                int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
                                return false;
@@ -2069,6 +2071,7 @@
        private boolean validDelete(){
                int currentStart = stateObj.getCurrentStart();
                int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if((selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd) || selectionLength == 0)
                                return false;
@@ -2086,6 +2089,7 @@
        private boolean validBackspace(){
                int currentStart = stateObj.getCurrentStart();
                int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd)
                                return false;
@@ -2183,8 +2187,8 @@
                                String character = view.getTextRange(index, 1);
                                if(character.equals("\n")){
                                        replaceTextRange(index, 1, "");
-                                       currentEnd--;
-                                       nextStart--;
+                                       stateObj.adjustEnd(-1);
+                                       stateObj.adjustNextStart(-1);
                                        length--;
                                        adjustBy--;
                                }
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 16:19:46 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 16:48:10 2015 UTC
@@ -1,7 +1,7 @@
 package org.brailleblaster.perspectives.braille.views.wp;

 public class ViewStateObject {
-       private int currentStart, currentEnd;
+       private int currentStart, currentEnd, previousEnd, nextStart;

        public ViewStateObject(){

@@ -30,4 +30,24 @@
        public void adjustEnd(int val){
                currentEnd += val;
        }
+
+       public int getPreviousEnd() {
+               return previousEnd;
+       }
+
+       public void setPreviousEnd(int previousEnd) {
+               this.previousEnd = previousEnd;
+       }
+
+       public int getNextStart() {
+               return nextStart;
+       }
+
+       public void setNextStart(int nextStart) {
+               this.nextStart = nextStart;
+       }
+
+       public void adjustNextStart(int val){
+               nextStart += val;
+       }
 }

==============================================================================
Revision: c69fa9f480b9
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 17:09:49 2015 UTC
Log:      Moved another global var to stateObject
https://code.google.com/p/brailleblaster/source/detail?r=c69fa9f480b9

Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java
/src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 16:48:10 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 17:09:49 2015 UTC
@@ -82,7 +82,6 @@

 public class TextView extends WPView {
        private ViewStateObject stateObj;
-       private int oldCursorPosition = -1;
        private int currentChar;
        private int selectionStart, selectionLength;
        private int currentChanges = 0;
@@ -144,7 +143,7 @@
                        public void verifyKey(VerifyEvent e) {
                                int currentStart = stateObj.getCurrentStart();
                                int currentEnd = stateObj.getCurrentEnd();
-                               oldCursorPosition = view.getCaretOffset();
+                               
stateObj.setOldCursorPosition(view.getCaretOffset());
                                currentChar = e.keyCode;

                                if(selectionLength > 0)
@@ -223,7 +222,7 @@
                                        }
                                }

- if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineAlignment(view.getLineAtOffset(currentStart)) != SWT.LEFT ){ + if(selectionLength <= 0 && stateObj.getOldCursorPosition() == currentStart && stateObj.getOldCursorPosition() != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineAlignment(view.getLineAtOffset(currentStart)) != SWT.LEFT ){
                                        Message message;
                                        int pos = view.getCaretOffset();
if(view.getLineAlignment(view.getLineAtOffset(currentStart)) == SWT.RIGHT){
@@ -239,16 +238,16 @@
                                        setSelection(-1, -1);
                                        view.setCaretOffset(pos);
                                }
- else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){ + else if(selectionLength <= 0 && stateObj.getOldCursorPosition() == currentStart && stateObj.getOldCursorPosition() != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){ Message message = Message.createAdjustIndentMessage(Sender.TEXT, 0, view.getLineAtOffset(currentStart));
                                        
view.setLineIndent(view.getLineAtOffset(currentStart), 1, 0);
                                        manager.dispatch(message);
                                        e.doit = false;
                                }
- else if(selectionLength <= 0 && oldCursorPosition == currentStart && oldCursorPosition != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) == 0 && currentStart != currentEnd){ + else if(selectionLength <= 0 && stateObj.getOldCursorPosition() == currentStart && stateObj.getOldCursorPosition() != stateObj.getPreviousEnd() && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) == 0 && currentStart != currentEnd){ Styles style = stylesTable.get(stylesTable.getKeyFromAttribute(currentElement.parentElement())); if(style.contains(StylesType.linesBefore) && Integer.valueOf((String)style.get(StylesType.linesBefore)) > 0){
-                                               int pos = oldCursorPosition - 1;
+                                               int pos = 
stateObj.getOldCursorPosition() - 1;
                                                
setCurrentElement(currentElement.start);
int linesBefore = Integer.valueOf((String)style.get(StylesType.linesBefore)) - 1; manager.dispatch(Message.createAdjustLinesMessage(Sender.TEXT, true, linesBefore));
@@ -260,7 +259,7 @@
                                        TextMapElement t = 
manager.getPrevious();
style = stylesTable.get(stylesTable.getKeyFromAttribute(t.parentElement())); if(style.contains(StylesType.linesAfter) && Integer.valueOf((String)style.get(StylesType.linesAfter)) > 0){
-                                               int pos = oldCursorPosition - 1;
+                                               int pos = 
stateObj.getOldCursorPosition() - 1;
                                                setCurrentElement(t.start);
int linesAfter = Integer.valueOf((String)style.get(StylesType.linesAfter)) - 1; manager.dispatch(Message.createAdjustLinesMessage(Sender.TEXT, false, linesAfter));
@@ -270,10 +269,10 @@
                                        }
                                }

- if(selectionLength <= 0 && oldCursorPosition == currentEnd && oldCursorPosition != stateObj.getNextStart() && e.character == SWT.DEL && currentStart != currentEnd){ + if(selectionLength <= 0 && stateObj.getOldCursorPosition() == currentEnd && stateObj.getOldCursorPosition() != stateObj.getNextStart() && e.character == SWT.DEL && currentStart != currentEnd){ Styles style = stylesTable.get(stylesTable.getKeyFromAttribute(currentElement.parentElement())); if(style.contains(StylesType.linesAfter) && Integer.valueOf((String)style.get(StylesType.linesAfter)) > 0){
-                                               int pos = oldCursorPosition;
+                                               int pos = 
stateObj.getOldCursorPosition();
                                                
setCurrentElement(currentElement.end);
int linesAfter = Integer.valueOf((String)style.get(StylesType.linesAfter)) - 1;
                                                
style.put(StylesType.linesAfter, String.valueOf(linesAfter));
@@ -287,7 +286,7 @@
                                        if(t != null){
style = stylesTable.get(stylesTable.getKeyFromAttribute(t.parentElement())); if(style.contains(StylesType.linesBefore) && Integer.valueOf((String)style.get(StylesType.linesBefore)) > 0){
-                                                       int pos = 
oldCursorPosition;
+                                                       int pos = 
stateObj.getOldCursorPosition();
                                                        
setCurrentElement(t.start);
int linesBefore = Integer.valueOf((String)style.get(StylesType.linesBefore)) - 1;
                                                        
style.put(StylesType.linesBefore, String.valueOf(linesBefore));
@@ -333,7 +332,7 @@
Message message = Message.createGetCurrentMessage(Sender.TEXT, view.getCaretOffset());
                                manager.dispatch(message);
                                setViewData(message);
-                               if(oldCursorPosition == -1 && positionFromStart 
== 0)
+                               if(stateObj.getOldCursorPosition() == -1 && 
positionFromStart == 0)
                                        
view.setCaretOffset((Integer)message.getValue("start"));

                                
sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset()));
@@ -1292,11 +1291,11 @@
                        }
                }
                else {
-                       if(oldCursorPosition > stateObj.getCurrentEnd())
- sendAdjustRangeMessage("end", oldCursorPosition - stateObj.getCurrentEnd());
+                       if(stateObj.getOldCursorPosition() > 
stateObj.getCurrentEnd())
+ sendAdjustRangeMessage("end", stateObj.getOldCursorPosition() - stateObj.getCurrentEnd());

-                       if(oldCursorPosition < stateObj.getCurrentStart())
- sendAdjustRangeMessage("start", stateObj.getCurrentStart() - oldCursorPosition);
+                       if(stateObj.getOldCursorPosition() < 
stateObj.getCurrentStart())
+ sendAdjustRangeMessage("start", stateObj.getCurrentStart() - stateObj.getOldCursorPosition());

                        makeTextChange(changes);
                        recordEvent(e, true);
@@ -1307,23 +1306,23 @@
        }

        private void handleTextDeletion(ExtendedModifyEvent e){
-               int offset = view.getCaretOffset() - oldCursorPosition;
+               int offset = view.getCaretOffset() - 
stateObj.getOldCursorPosition();
                setListenerLock(true);
                if(e.replacedText.length() > 1){
                        setCurrent(view.getCaretOffset());
                        deleteSelection(e);
                }
                else if(currentChar == SWT.BS){
- if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() >= stateObj.getPreviousEnd()) + if(stateObj.getOldCursorPosition() == stateObj.getCurrentStart() && view.getCaretOffset() >= stateObj.getPreviousEnd())
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if(oldCursorPosition == stateObj.getCurrentStart() && view.getCaretOffset() < stateObj.getPreviousEnd()){ + else if(stateObj.getOldCursorPosition() == stateObj.getCurrentStart() && view.getCaretOffset() < stateObj.getPreviousEnd()){
                                if(textChanged)
                                        sendUpdate();

                                setCurrent(view.getCaretOffset());
                                makeTextChange(offset);
                        }
-                       else if(oldCursorPosition > stateObj.getCurrentEnd())
+                       else if(stateObj.getOldCursorPosition() > 
stateObj.getCurrentEnd())
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
                        else{
                                makeTextChange(offset);
@@ -1333,23 +1332,23 @@
                else if(currentChar == SWT.DEL){
                        offset = -1;

- if(selectionStart + selectionLength != stateObj.getCurrentEnd() && oldCursorPosition == stateObj.getCurrentEnd() && oldCursorPosition < stateObj.getNextStart()){ + if(selectionStart + selectionLength != stateObj.getCurrentEnd() && stateObj.getOldCursorPosition() == stateObj.getCurrentEnd() && stateObj.getOldCursorPosition() < stateObj.getNextStart()){
                                if(textChanged)
                                        sendUpdate();

                                stateObj.adjustNextStart(offset);
                                sendDeleteSpaceMessage(view.getCaretOffset(), 
offset, e);
                        }
- else if(oldCursorPosition == stateObj.getCurrentEnd() && view.getCaretOffset() == stateObj.getNextStart()){ + else if(stateObj.getOldCursorPosition() == stateObj.getCurrentEnd() && view.getCaretOffset() == stateObj.getNextStart()){
                                if(textChanged)
                                        sendUpdate();

                                setCurrent(view.getCaretOffset() + 1);
                                makeTextChange(offset);
                        }
- else if ((stateObj.getPreviousEnd() == -1 && selectionLength > 0 && selectionStart < stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentStart())|| (oldCursorPosition < stateObj.getCurrentStart() && (stateObj.getPreviousEnd() == -1 || oldCursorPosition > stateObj.getPreviousEnd()))) + else if ((stateObj.getPreviousEnd() == -1 && selectionLength > 0 && selectionStart < stateObj.getCurrentStart() && selectionStart + selectionLength <= stateObj.getCurrentStart())|| (stateObj.getOldCursorPosition() < stateObj.getCurrentStart() && (stateObj.getPreviousEnd() == -1 || stateObj.getOldCursorPosition() > stateObj.getPreviousEnd())))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
- else if( (oldCursorPosition == stateObj.getCurrentEnd() && stateObj.getNextStart() == -1)|| (oldCursorPosition > stateObj.getCurrentEnd() && (oldCursorPosition < stateObj.getNextStart() || stateObj.getNextStart() == -1))) + else if( (stateObj.getOldCursorPosition() == stateObj.getCurrentEnd() && stateObj.getNextStart() == -1)|| (stateObj.getOldCursorPosition() > stateObj.getCurrentEnd() && (stateObj.getOldCursorPosition() < stateObj.getNextStart() || stateObj.getNextStart() == -1)))
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
                        else {
                                makeTextChange(offset);
@@ -1996,7 +1995,7 @@
                total = 0;
                spaceBeforeText = 0;
                spaceAfterText = 0;
-               oldCursorPosition = -1;
+               stateObj.setOldCursorPosition(-1);
                currentChanges = 0;
                textChanged = false;
                setListenerLock(false);
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 16:48:10 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 17:09:49 2015 UTC
@@ -1,10 +1,10 @@
 package org.brailleblaster.perspectives.braille.views.wp;

 public class ViewStateObject {
-       private int currentStart, currentEnd, previousEnd, nextStart;
+ private int currentStart, currentEnd, previousEnd, nextStart, oldCursorPosition;

        public ViewStateObject(){
-
+               setOldCursorPosition(-1);
        }

        public int getCurrentStart() {
@@ -50,4 +50,12 @@
        public void adjustNextStart(int val){
                nextStart += val;
        }
+
+       public int getOldCursorPosition() {
+               return oldCursorPosition;
+       }
+
+       public void setOldCursorPosition(int oldCursorPosition) {
+               this.oldCursorPosition = oldCursorPosition;
+       }
 }

==============================================================================
Revision: 133a723e329b
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 18:07:07 2015 UTC
Log:      Added state object to braille view
https://code.google.com/p/brailleblaster/source/detail?r=133a723e329b

Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Thu Feb 12 19:29:35 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Fri Feb 13 18:07:07 2015 UTC
@@ -72,8 +72,7 @@
 import org.eclipse.swt.graphics.Rectangle;

 public class BrailleView extends WPView {
-       private int currentStart, currentEnd, nextStart;
-       private int oldCursorPosition = -1;
+       private ViewStateObject stateObj;
        private int currentChar;
private ArrayList<BrailleMapElement> pageRanges = new ArrayList<BrailleMapElement>();
        private String charAtOffset;
@@ -92,6 +91,7 @@

public BrailleView(Manager manager, SashForm sash, BBSemanticsTable table) {
                super(manager, sash, table);
+               stateObj = new ViewStateObject();
                this.total = 0;
                this.spaceBeforeText = 0;
                this.spaceAfterText = 0;
@@ -116,10 +116,9 @@

//Handles single case where page is on last line and text is selected to last line and arrow down is pressed which does not move cursor if(manager.inBraillePageRange(view.getCaretOffset()) && e.keyCode == SWT.ARROW_DOWN && view.getLineAtOffset(view.getCaretOffset()) == view.getLineCount() - 1)
-                                       view.setCaretOffset(nextStart);
+                                       
view.setCaretOffset(stateObj.getNextStart());

-                               oldCursorPosition = view.getCaretOffset();
-
+                               
stateObj.setOldCursorPosition(view.getCaretOffset());
                        }

                });
@@ -130,7 +129,7 @@
Message message = Message.createGetCurrentMessage(Sender.BRAILLE, view.getCaretOffset());
                                manager.dispatch(message);
                                setViewData(message);
-                               if(oldCursorPosition == -1 && positionFromStart 
 == 0){
+                               if(stateObj.getOldCursorPosition() == -1 && 
positionFromStart  == 0){
                                        
view.setCaretOffset((Integer)message.getValue("brailleStart"));
                                }
                                
sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset()));
@@ -149,7 +148,7 @@
                        @Override
                        public void mouseDown(MouseEvent e) {
                                if(!getLock()){
- if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){ + if(view.getCaretOffset() > stateObj.getCurrentEnd() || view.getCaretOffset() < stateObj.getCurrentStart()){
                                                setCurrent();

                                        }
@@ -163,7 +162,7 @@
                        public void caretMoved(CaretEvent e) {
                                if(!getLock()){
if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP || currentChar == SWT.PAGE_DOWN || currentChar == SWT.PAGE_UP){
-                                               if(e.caretOffset >= currentEnd || 
e.caretOffset < currentStart){
+ if(e.caretOffset >= stateObj.getCurrentEnd() || e.caretOffset < stateObj.getCurrentStart()){
                                                        setCurrent();
                                                        currentChar = ' ';
                                                }
@@ -224,9 +223,9 @@
        @Override
        @SuppressWarnings("unchecked")
        protected void setViewData(Message message){
-               currentStart = (Integer)message.getValue("brailleStart");
-               currentEnd = (Integer)message.getValue("brailleEnd");
-               nextStart = (Integer)message.getValue("nextBrailleStart");
+               
stateObj.setCurrentStart((Integer)message.getValue("brailleStart"));
+               stateObj.setCurrentEnd((Integer)message.getValue("brailleEnd"));
+               
stateObj.setNextStart((Integer)message.getValue("nextBrailleStart"));
                this.pageRanges.clear();
setPageRange((ArrayList<BrailleMapElement>)message.getValue("pageRanges"));
        }
@@ -769,18 +768,18 @@

        public void setPositionFromStart(){
                int count = 0;
-               positionFromStart = view.getCaretOffset() - currentStart;
- if(positionFromStart > 0 && currentStart + positionFromStart <= currentEnd){
-                       String text = view.getTextRange(currentStart, 
positionFromStart);
+               positionFromStart = view.getCaretOffset() - 
stateObj.getCurrentStart();
+ if(positionFromStart > 0 && stateObj.getCurrentStart() + positionFromStart <= stateObj.getCurrentEnd()){ + String text = view.getTextRange(stateObj.getCurrentStart(), positionFromStart);
                        count = text.length() - text.replaceAll("\n", 
"").length();
                        positionFromStart -= count;
-                       positionFromStart -= checkPageRange(currentStart + 
positionFromStart);
+ positionFromStart -= checkPageRange(stateObj.getCurrentStart() + positionFromStart);
                        cursorOffset = count;
                }
- else if(positionFromStart > 0 && currentStart + positionFromStart > currentEnd){
-                       String text = view.getTextRange(currentStart, 
positionFromStart);
+ else if(positionFromStart > 0 && stateObj.getCurrentStart() + positionFromStart > stateObj.getCurrentEnd()){ + String text = view.getTextRange(stateObj.getCurrentStart(), positionFromStart);
                        count = text.length() - text.replaceAll("\n", 
"").length();
-                       cursorOffset = (currentStart + positionFromStart) - 
currentEnd;
+ cursorOffset = (stateObj.getCurrentStart() + positionFromStart) - stateObj.getCurrentEnd();
                        positionFromStart = 99999;
                }
                else {
@@ -798,24 +797,24 @@
                                int [] arr = getIndexArray(e);
                                if(arr == null){
                                        
if((Integer)message.getValue("lastPosition") == 0)
-                                               pos = currentStart;
+                                               pos = 
stateObj.getCurrentStart();
                                        else
-                                               pos = currentEnd;
+                                               pos = stateObj.getCurrentEnd();
                                }
                                else {
-                                       if((Integer)message.getValue("lastPosition") < 0 
&& currentStart > 0)
-                                               pos = currentStart + 
(Integer)message.getValue("lastPosition");
+ if((Integer)message.getValue("lastPosition") < 0 && stateObj.getCurrentStart() > 0) + pos = stateObj.getCurrentStart() + (Integer)message.getValue("lastPosition");
                                        else 
if((Integer)message.getValue("lastPosition") == 99999)
-                                               pos = currentEnd + offset;
+                                               pos = stateObj.getCurrentEnd() 
+ offset;
                                        else {
- pos = currentStart + findCurrentPosition(arr, (Integer)message.getValue("lastPosition")) + offset; + pos = stateObj.getCurrentStart() + findCurrentPosition(arr, (Integer)message.getValue("lastPosition")) + offset;
                                                pos += checkPageRange(pos);
                                        }
                                }
                                view.setCaretOffset(pos);
                        }
                        else {
-                               view.setCaretOffset(currentStart);
+                               view.setCaretOffset(stateObj.getCurrentStart());
                        }
                }
        }
@@ -853,7 +852,7 @@
                total = 0;
                spaceBeforeText = 0;
                spaceAfterText = 0;
-               oldCursorPosition = -1;
+               stateObj.setOldCursorPosition(-1);
                setListenerLock(false);
        }

@@ -1119,10 +1118,10 @@
         */
        private void removeIndicator(){
                int lineNumber;
-               if(currentStart > view.getCharCount())
+               if(stateObj.getCurrentStart() > view.getCharCount())
                        lineNumber = view.getLineAtOffset(view.getCharCount());
                else
-                       lineNumber = view.getLineAtOffset(currentStart);
+                       lineNumber = 
view.getLineAtOffset(stateObj.getCurrentStart());

                for (int i = lineNumber; i < view.getLineCount(); i++) {
                        // Check to find bullet which are in indication array 
list

==============================================================================
Revision: d89f937a3cae
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 19:08:12 2015 UTC
Log:      Moved event validation into own class
https://code.google.com/p/brailleblaster/source/detail?r=d89f937a3cae

Added:
/src/main/org/brailleblaster/perspectives/braille/views/wp/TextActionValidator.java
Modified:
 /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java

=======================================
--- /dev/null
+++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextActionValidator.java Fri Feb 13 19:08:12 2015 UTC
@@ -0,0 +1,99 @@
+package org.brailleblaster.perspectives.braille.views.wp;
+
+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.eclipse.swt.custom.StyledText;
+
+public class TextActionValidator {
+       StyledText view;
+       Manager manager;
+
+       public TextActionValidator(Manager manager, StyledText view){
+               this.view = view;
+               this.manager = manager;
+       }
+
+ protected boolean validCut(TextMapElement currentElement, ViewStateObject stateObj, int selectionStart, int selectionLength){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
+ if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ + if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
+                               return false;
+ else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
+                               return false;
+ else if(selectionStart == currentEnd && selectionLength == 1 && selectionStart + selectionLength == nextStart)
+                               return false;
+               }
+               return true;
+       }
+
+ protected boolean validPaste(TextMapElement currentElement, ViewStateObject stateObj, int selectionStart, int selectionLength){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
+ if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ + if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
+                               return false;
+ else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
+                               return false;
+ else if(view.getSelectionRanges()[1] == 0 || (selectionStart >= currentStart && selectionStart <= currentEnd ))
+                               return false;
+               }
+               return true;
+       }
+
+ protected boolean validDelete(TextMapElement currentElement, ViewStateObject stateObj, int selectionStart, int selectionLength){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
+ if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ + if((selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd) || selectionLength == 0)
+                               return false;
+                       else if(selectionLength <= 0 && view.getCaretOffset() 
== currentEnd)
+                               return false;
+ else if(selectionStart == currentEnd && (selectionStart + selectionLength) == nextStart && selectionLength == 1)
+                               return false;
+               }
+ else if(selectionLength <= 0 && manager.inPrintPageRange(view.getCaretOffset() + 1) || (selectionLength <= 0 && (manager.getElementInRange(view.getCaretOffset() + 1) instanceof BrlOnlyMapElement)))
+                       return false;
+
+               return true;
+       }
+
+ protected boolean validBackspace(TextMapElement currentElement, ViewStateObject stateObj, int selectionStart, int selectionLength){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
+               int nextStart = stateObj.getNextStart();
+ if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ + if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd)
+                               return false;
+                       else if(selectionLength <= 0)
+                               return false;
+ else if(selectionStart == currentEnd && (selectionStart + selectionLength) == nextStart && selectionLength == 1)
+                               return false;
+               }
+ else if(selectionLength <= 0 && manager.inPrintPageRange(view.getCaretOffset() - 1) || (selectionLength <= 0 && (manager.getElementInRange(view.getCaretOffset() - 1) instanceof BrlOnlyMapElement)))
+                       return false;
+
+               return true;
+       }
+
+ protected boolean validEdit(TextMapElement currentElement, ViewStateObject stateObj, int selectionStart, int selectionLength){
+               int currentStart = stateObj.getCurrentStart();
+               int currentEnd = stateObj.getCurrentEnd();
+ if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){
+                       if(selectionLength <= 0)
+                               return false;
+ else if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
+                               return false;
+ else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
+                               return false;
+                       else if(selectionStart >= currentStart && selectionStart 
<= currentEnd)
+                               return false;
+               }
+
+               return true;
+       }
+}
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 17:09:49 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 19:08:12 2015 UTC
@@ -82,6 +82,7 @@

 public class TextView extends WPView {
        private ViewStateObject stateObj;
+       private TextActionValidator validator;
        private int currentChar;
        private int selectionStart, selectionLength;
        private int currentChanges = 0;
@@ -110,6 +111,7 @@
public TextView (Manager manager, SashForm sash, BBSemanticsTable table) {
                super (manager, sash, table);
                stateObj = new ViewStateObject();
+               validator = new TextActionValidator(manager, view);
                this.total = 0;
                this.spaceBeforeText = 0;
                this.spaceAfterText = 0;
@@ -152,7 +154,8 @@
editRecorder.recordLine(view.getLine(view.getLineAtOffset(view.getCaretOffset())), view.getLineAtOffset(view.getCaretOffset()));

                                if(readOnly){
- if((Character.isDigit(e.character) && !validEdit())|| (Character.isLetter(e.character) && !validEdit()) || e.keyCode == SWT.CR) + if((Character.isDigit(e.character) && !validator.validEdit(currentElement, stateObj, selectionStart, selectionLength))|| (Character.isLetter(e.character) + && !validator.validEdit(currentElement, stateObj, selectionStart, selectionLength)) || e.keyCode == SWT.CR)
                                                e.doit = false;
                                }

@@ -164,11 +167,11 @@
                                        e.doit = false;
                                }
else if(e.stateMask == SWT.MOD1 && e.keyCode == 'x' && (currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement)){
-                                       if(!validCut())
+ if(!validator.validCut(currentElement, stateObj, selectionStart, selectionLength))
                                                e.doit = false;
                                }
else if(e.stateMask == SWT.MOD1 && e.keyCode == 'v' && (currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement)){
-                                       if(!validPaste())
+ if(!validator.validPaste(currentElement, stateObj, selectionStart, selectionLength))
                                                e.doit = false;
                                }
                                else if(!readOnly && e.character == SWT.CR){
@@ -299,9 +302,9 @@
                                }

                                //Blocks text from crossing page boundaries in 
original markup
-                               if(e.keyCode == SWT.BS && !validBackspace())
+ if(e.keyCode == SWT.BS && !validator.validBackspace(currentElement, stateObj, selectionStart, selectionLength))
                                        e.doit = false;
-                               else if(e.keyCode == SWT.DEL && !validDelete())
+ else if(e.keyCode == SWT.DEL && !validator.validDelete(currentElement, stateObj, selectionStart, selectionLength))
                                        e.doit = false;

                                if(selectionLength > 0)
@@ -599,9 +602,8 @@
        }

        private void incrementNext(int offset){
-               int nextStart = stateObj.getNextStart();
-               if(nextStart != -1)
-                       nextStart += offset;
+               if(stateObj.getNextStart() != -1)
+                       stateObj.adjustNextStart(offset);
        }

        private void shiftLeft(int offset){
@@ -1643,12 +1645,12 @@
                else
editRecorder.recordLine(view.getLine(view.getLineAtOffset(view.getCaretOffset())), view.getLineAtOffset(view.getCaretOffset()));

-               if(validCut())
+ if(validator.validCut(currentElement, stateObj, selectionStart, selectionLength))
                        view.cut();
        }

        public void paste(){
-               if(validPaste())
+ if(validator.validPaste(currentElement, stateObj, selectionStart, selectionLength))
                        view.paste();
        }

@@ -2037,88 +2039,6 @@
        public boolean isMultiSelected() {
                return multiSelected;
        }
-
-       private boolean validCut(){
-               int currentStart = stateObj.getCurrentStart();
-               int currentEnd = stateObj.getCurrentEnd();
-               int nextStart = stateObj.getNextStart();
- if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ - if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
-                               return false;
- else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
-                               return false;
- else if(selectionStart == currentEnd && selectionLength == 1 && selectionStart + selectionLength == nextStart)
-                               return false;
-               }
-               return true;
-       }
-
-       private boolean validPaste(){
-               int currentStart = stateObj.getCurrentStart();
-               int currentEnd = stateObj.getCurrentEnd();
- if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ - if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
-                               return false;
- else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
-                               return false;
- else if(view.getSelectionRanges()[1] == 0 || (selectionStart >= currentStart && selectionStart <= currentEnd ))
-                               return false;
-               }
-               return true;
-       }
-
-       private boolean validDelete(){
-               int currentStart = stateObj.getCurrentStart();
-               int currentEnd = stateObj.getCurrentEnd();
-               int nextStart = stateObj.getNextStart();
- if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ - if((selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd) || selectionLength == 0)
-                               return false;
-                       else if(selectionLength <= 0 && view.getCaretOffset() 
== currentEnd)
-                               return false;
- else if(selectionStart == currentEnd && (selectionStart + selectionLength) == nextStart && selectionLength == 1)
-                               return false;
-               }
- else if(selectionLength <= 0 && manager.inPrintPageRange(view.getCaretOffset() + 1) || (selectionLength <= 0 && (manager.getElementInRange(view.getCaretOffset() + 1) instanceof BrlOnlyMapElement)))
-                       return false;
-
-               return true;
-       }
-
-       private boolean validBackspace(){
-               int currentStart = stateObj.getCurrentStart();
-               int currentEnd = stateObj.getCurrentEnd();
-               int nextStart = stateObj.getNextStart();
- if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){ - if(selectionStart >= currentStart && selectionStart + selectionLength <= currentEnd)
-                               return false;
-                       else if(selectionLength <= 0)
-                               return false;
- else if(selectionStart == currentEnd && (selectionStart + selectionLength) == nextStart && selectionLength == 1)
-                               return false;
-               }
- else if(selectionLength <= 0 && manager.inPrintPageRange(view.getCaretOffset() - 1) || (selectionLength <= 0 && (manager.getElementInRange(view.getCaretOffset() - 1) instanceof BrlOnlyMapElement)))
-                       return false;
-
-               return true;
-       }
-
-       private boolean validEdit(){
-               int currentStart = stateObj.getCurrentStart();
-               int currentEnd = stateObj.getCurrentEnd();
- if(currentElement instanceof PageMapElement || currentElement instanceof BrlOnlyMapElement){
-                       if(selectionLength <= 0)
-                               return false;
- else if(selectionStart == currentStart && selectionLength == (currentEnd - currentStart))
-                               return false;
- else if(selectionStart >= currentStart && selectionStart < currentEnd && selectionLength <= (currentEnd - selectionStart))
-                               return false;
-                       else if(selectionStart >= currentStart && selectionStart 
<= currentEnd)
-                               return false;
-               }
-
-               return true;
-       }

        public void setCurrentSelection(int start, int end){
                view.setSelection(start, end);

==============================================================================
Revision: dad42bd50841
Branch:   rt1447-MergeElements
Author:   Brandon Roller<brandon.r.roller@xxxxxxxxx>
Date:     Fri Feb 13 19:23:54 2015 UTC
Log:      Moved another global to stateObject
https://code.google.com/p/brailleblaster/source/detail?r=dad42bd50841

Modified:
 /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/views/wp/ViewStateObject.java

=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Fri Feb 13 18:07:07 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Fri Feb 13 19:23:54 2015 UTC
@@ -73,7 +73,6 @@

 public class BrailleView extends WPView {
        private ViewStateObject stateObj;
-       private int currentChar;
private ArrayList<BrailleMapElement> pageRanges = new ArrayList<BrailleMapElement>();
        private String charAtOffset;

@@ -112,7 +111,7 @@
                view.addVerifyKeyListener(verifyListener = new 
VerifyKeyListener(){
                        @Override
                        public void verifyKey(VerifyEvent e) {
-                               currentChar = e.keyCode;
+                               stateObj.setCurrentChar(e.keyCode);

//Handles single case where page is on last line and text is selected to last line and arrow down is pressed which does not move cursor if(manager.inBraillePageRange(view.getCaretOffset()) && e.keyCode == SWT.ARROW_DOWN && view.getLineAtOffset(view.getCaretOffset()) == view.getLineCount() - 1)
@@ -161,10 +160,10 @@
                        @Override
                        public void caretMoved(CaretEvent e) {
                                if(!getLock()){
- if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP || currentChar == SWT.PAGE_DOWN || currentChar == SWT.PAGE_UP){ + if(stateObj.getCurrentChar() == SWT.ARROW_DOWN || stateObj.getCurrentChar() == SWT.ARROW_LEFT || stateObj.getCurrentChar() == SWT.ARROW_RIGHT || stateObj.getCurrentChar() == SWT.ARROW_UP || stateObj.getCurrentChar() == SWT.PAGE_DOWN || stateObj.getCurrentChar() == SWT.PAGE_UP){ if(e.caretOffset >= stateObj.getCurrentEnd() || e.caretOffset < stateObj.getCurrentStart()){
-                                                       setCurrent();
-                                                       currentChar = ' ';
+                                                       setCurrent();
+                                                       
stateObj.setCurrentChar(' ');
                                                }
                                                
//if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){
                                                        
sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset()));
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 19:08:12 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Feb 13 19:23:54 2015 UTC
@@ -83,7 +83,6 @@
 public class TextView extends WPView {
        private ViewStateObject stateObj;
        private TextActionValidator validator;
-       private int currentChar;
        private int selectionStart, selectionLength;
        private int currentChanges = 0;
        private boolean textChanged, readOnly;
@@ -146,7 +145,7 @@
                                int currentStart = stateObj.getCurrentStart();
                                int currentEnd = stateObj.getCurrentEnd();
                                
stateObj.setOldCursorPosition(view.getCaretOffset());
-                               currentChar = e.keyCode;
+                               stateObj.setCurrentChar(e.keyCode);

                                if(selectionLength > 0)
editRecorder.recordLine(selectionStart, selectionStart + selectionLength);
@@ -359,7 +358,7 @@
                                        multiSelected = false;

                                if(!getLock()){
- if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP || currentChar == SWT.PAGE_DOWN || currentChar == SWT.PAGE_UP){ + if(stateObj.getCurrentChar() == SWT.ARROW_DOWN || stateObj.getCurrentChar() == SWT.ARROW_LEFT || stateObj.getCurrentChar() == SWT.ARROW_RIGHT || stateObj.getCurrentChar() == SWT.ARROW_UP || stateObj.getCurrentChar() == SWT.PAGE_DOWN || stateObj.getCurrentChar() == SWT.PAGE_UP){
                                                int currentStart = 
stateObj.getCurrentStart();
                                                int currentEnd = 
stateObj.getCurrentEnd();
                                                if(e.caretOffset >= currentEnd || 
e.caretOffset < currentStart){
@@ -367,7 +366,7 @@
                                                                sendUpdate();

                                                        
setCurrent(view.getCaretOffset());
-                                                       currentChar = ' ';
+                                                       
stateObj.setCurrentChar(' ');
                                                }
                                                
sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset()));
                                        }
@@ -1314,7 +1313,7 @@
                        setCurrent(view.getCaretOffset());
                        deleteSelection(e);
                }
-               else if(currentChar == SWT.BS){
+               else if(stateObj.getCurrentChar() == SWT.BS){
if(stateObj.getOldCursorPosition() == stateObj.getCurrentStart() && view.getCaretOffset() >= stateObj.getPreviousEnd())
                                deleteSpaceAndShift(view.getCaretOffset(), 
offset, e);
else if(stateObj.getOldCursorPosition() == stateObj.getCurrentStart() && view.getCaretOffset() < stateObj.getPreviousEnd()){
@@ -1331,7 +1330,7 @@
                                recordEvent(e, false);
                        }
                }
-               else if(currentChar == SWT.DEL){
+               else if(stateObj.getCurrentChar() == SWT.DEL){
                        offset = -1;

if(selectionStart + selectionLength != stateObj.getCurrentEnd() && stateObj.getOldCursorPosition() == stateObj.getCurrentEnd() && stateObj.getOldCursorPosition() < stateObj.getNextStart()){
@@ -2056,7 +2055,7 @@
                if(selectionArray[1] > 0){
                        setSelection(selectionArray[0], selectionArray[1]);
                        multiSelected=true;
-                       currentChar = ' ';
+                       stateObj.setCurrentChar(' ');
                        if(currentChanges > 0)
                                sendUpdate();
                }
=======================================
--- /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 17:09:49 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/ViewStateObject.java Fri Feb 13 19:23:54 2015 UTC
@@ -2,6 +2,7 @@

 public class ViewStateObject {
private int currentStart, currentEnd, previousEnd, nextStart, oldCursorPosition;
+       private int currentChar;

        public ViewStateObject(){
                setOldCursorPosition(-1);
@@ -58,4 +59,12 @@
        public void setOldCursorPosition(int oldCursorPosition) {
                this.oldCursorPosition = oldCursorPosition;
        }
+
+       public int getCurrentChar() {
+               return currentChar;
+       }
+
+       public void setCurrentChar(int currentChar) {
+               this.currentChar = currentChar;
+       }
 }

Other related posts:

  • » [brailleblaster] 6 new revisions pushed by brandon....@xxxxxxxxx on 2015-02-13 20:50 GMT - brailleblaster