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(); elsechanges= (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 @@ elseeditRecorder.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; + } }