Revision: 8bffcec112ef Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Wed May 15 08:35:22 2013 Log: Fixed minor cursor bug http://code.google.com/p/brailleblaster/source/detail?r=8bffcec112ef&repo=newdesign Modified: /src/main/org/brailleblaster/abstractClasses/AbstractView.java /src/main/org/brailleblaster/views/BrailleView.java /src/main/org/brailleblaster/views/TextView.java /src/main/org/brailleblaster/views/TreeView.java /src/main/org/brailleblaster/wordprocessor/DocumentManager.java =======================================--- /src/main/org/brailleblaster/abstractClasses/AbstractView.java Mon May 13 08:46:10 2013 +++ /src/main/org/brailleblaster/abstractClasses/AbstractView.java Wed May 15 08:35:22 2013
@@ -52,6 +52,7 @@ protected int spaceBeforeText, spaceAfterText; public int positionFromStart, cursorOffset; public static int currentLine, words; + protected boolean locked; public AbstractView() { } @@ -180,6 +181,14 @@ return wordCount; } + + protected void setListenerLock(boolean setting){ + this.locked = setting; + } + + protected boolean getLock(){ + return this.locked; + } protected abstract void setViewData(Message message); } =======================================--- /src/main/org/brailleblaster/views/BrailleView.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/views/BrailleView.java Wed May 15 08:35:22 2013
@@ -125,8 +125,10 @@ view.addCaretListener(new CaretListener(){ @Override public void caretMoved(CaretEvent e) {- if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){
- setCurrent(dm); + if(!getLock()){+ if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){
+ setCurrent(dm); + } } if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){ @@ -153,6 +155,8 @@ } } }); + + setListenerLock(false); } private void setCurrent(DocumentManager dm){ @@ -341,7 +345,9 @@ String insertionString = (String)message.getValue("newBrailleText"); if(t.brailleList.getFirst().start != -1){ + setListenerLock(true);view.replaceTextRange(t.brailleList.getFirst().start, total, insertionString);
+ setListenerLock(false); view.setLineIndent(startLine, 1, lineIndent); if(t.brailleList.getFirst().start < view.getCharCount()){ @@ -354,7 +360,9 @@ } public void removeWhitespace(int start, int length){ + setListenerLock(true); view.replaceTextRange(start, Math.abs(length), ""); + setListenerLock(false); } public void changeAlignment(int startPosition, int alignment){ @@ -366,9 +374,11 @@ } public void updateCursorPosition(Message message){ + setListenerLock(true); setViewData(message); setCursorPosition(message); setPositionFromStart(); + setListenerLock(false); } private void setPositionFromStart(){ =======================================--- /src/main/org/brailleblaster/views/TextView.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/views/TextView.java Wed May 15 08:35:22 2013
@@ -67,7 +67,7 @@private int currentStart, currentEnd, previousEnd, nextStart, selectionStart, selectionLength;
private int currentChanges = 0; private int escapeChars; - private boolean textChanged, reformatting; + private boolean textChanged; private BBSemanticsTable stylesTable; private StyleRange range; private int[] selectionArray; @@ -131,7 +131,7 @@ setSelection(-1, -1); }- if(oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0){ + if(oldCursorPosition == currentStart && oldCursorPosition != previousEnd && e.character == SWT.BS && view.getLineIndent(view.getLineAtOffset(currentStart)) != 0 && currentStart != currentEnd){
Message message = new Message(BBEvent.ADJUST_INDENT); message.put("sender", "text"); message.put("indent", 0); @@ -145,7 +145,7 @@view.addExtendedModifyListener(modListener = new ExtendedModifyListener(){
@Override public void modifyText(ExtendedModifyEvent e) { - if(reformatting == false){ + if(!getLock()){ if(e.length > 0){ handleTextEdit(dm, e); } @@ -189,7 +189,7 @@ view.addCaretListener(caretListener = new CaretListener(){ @Override public void caretMoved(CaretEvent e) { - if(reformatting == false){ + if(!getLock()){if(currentChar == SWT.ARROW_DOWN || currentChar == SWT.ARROW_LEFT || currentChar == SWT.ARROW_RIGHT || currentChar == SWT.ARROW_UP){
if(e.caretOffset >= currentEnd || e.caretOffset < currentStart){ if(textChanged == true){ @@ -199,6 +199,7 @@ } } } + if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){ Message message = new Message(BBEvent.UPDATE_STATUSBAR); words = getWordCount(); @@ -253,6 +254,8 @@ } } }); + + setListenerLock(false); } public void removeListeners(){ @@ -370,7 +373,7 @@ public void reformatText(Node n, Message message, DocumentManager dm){ int pos = view.getCaretOffset(); - reformatting = true; + setListenerLock(true); int indent = view.getLineIndent(view.getLineAtOffset(currentStart)); StyleRange range = getStyleRange(); @@ -385,7 +388,7 @@ this.spaceAfterText = 0; this.spaceBeforeText = 0; this.escapeChars = 0; - reformatting = false; + setListenerLock(false); } private String appendToView(Node n){ @@ -578,7 +581,7 @@private void handleTextDeletion(DocumentManager dm, ExtendedModifyEvent e){
int offset = view.getCaretOffset() - oldCursorPosition; - + setListenerLock(true); if(selectionLength > 0){ view.setCaretOffset(selectionStart); setCurrent(dm); @@ -635,6 +638,7 @@ setCurrent(dm); } } + setListenerLock(false); } private void deleteSelection(DocumentManager dm){ @@ -770,9 +774,11 @@ } public void updateCursorPosition(Message message){ + setListenerLock(true); setViewData(message); setCursorPosition(message); setPositionFromStart(); + setListenerLock(false); } private void setCursorPosition(Message message){ =======================================--- /src/main/org/brailleblaster/views/TreeView.java Mon May 13 08:46:10 2013 +++ /src/main/org/brailleblaster/views/TreeView.java Wed May 15 08:35:22 2013
@@ -56,7 +56,6 @@ public class TreeView extends AbstractView { - public Tree tree; public TreeView(final DocumentManager dm, Group documentWindow){ @@ -70,7 +69,7 @@ } @Override public void focusLost(FocusEvent e) { - // TODO Auto-generated method stub + } }); @@ -81,28 +80,41 @@ } @Override - public void widgetSelected(SelectionEvent e) { - Tree t = (Tree)e.getSource(); - TreeItem [] items = t.getSelection(); + public void widgetSelected(SelectionEvent e) { + if(!getLock()){ + Tree t = (Tree)e.getSource(); + TreeItem [] items = t.getSelection(); - if(items[0].getData() != null){ - ArrayList<TextMapElement>list = getList(items[0]); - TextMapElement temp = list.get(0); - Message message = new Message(BBEvent.SET_CURRENT); - message.put("sender", "tree"); - message.put("offset", temp.start); - if(items[0].getText().equals("brl")){ - message.put("isBraille", true); - message.put("offset", temp.brailleList.getFirst().start); + if(items[0].getData() != null){ + ArrayList<TextMapElement>list = getList(items[0]); + TextMapElement temp = list.get(0); + Message message = new Message(BBEvent.SET_CURRENT); + message.put("sender", "tree"); + message.put("offset", temp.start); + if(items[0].getText().equals("brl")){ + message.put("isBraille", true); + message.put("offset", temp.brailleList.getFirst().start); + } + cursorOffset = 0; + dm.dispatch(message); } - cursorOffset = 0; - dm.dispatch(message); - - Message cursorMessage = new Message(BBEvent.UPDATE_CURSORS); - cursorMessage.put("sender", "tree"); - dm.dispatch(cursorMessage); } } + }); + + this.tree.addFocusListener(new FocusListener(){ + @Override + public void focusGained(FocusEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void focusLost(FocusEvent e) { + Message cursorMessage = new Message(BBEvent.UPDATE_CURSORS); + cursorMessage.put("sender", "tree"); + dm.dispatch(cursorMessage); + } }); this.tree.addTraverseListener(new TraverseListener(){ @@ -128,6 +140,7 @@ view.setLayout(new FillLayout()); this.tree.pack(); + setListenerLock(false); } public void setRoot(Element e){ @@ -155,13 +168,16 @@ } public void setSelection(TextMapElement t, Message m){ + setListenerLock(true); searchTree(this.getRoot(), t, m); if(m.getValue("item") != null){ this.tree.setSelection(((TreeItem)m.getValue("item"))); } + setListenerLock(false); } public void removeItem(TextMapElement t, Message m){ + setListenerLock(true); searchTree(this.getRoot(), t, m); if((TreeItem)m.getValue("item") != null){ TreeItem item = (TreeItem)m.getValue("item"); @@ -172,6 +188,7 @@ item.dispose(); } } + setListenerLock(false); } private void searchTree(TreeItem item, TextMapElement t, Message m){ @@ -196,14 +213,17 @@ } public TextMapElement getSelection(TextMapElement t){ + setListenerLock(true); TreeItem [] arr = this.tree.getSelection(); if(arr.length > 0 && arr[0].getData() != null){ ArrayList<TextMapElement>list = getList(arr[0]); for(int i = 0; i < list.size(); i++) - if(list.get(i).equals(t)) + if(list.get(i).equals(t)){ + setListenerLock(false); return (TextMapElement)list.get(i); + } } - + setListenerLock(false); return null; } =======================================--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Tue May 14 11:11:04 2013 +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Wed May 15 08:35:22 2013
@@ -327,9 +327,14 @@ list.getCurrentNodeData(message); this.text.updateCursorPosition(message); } - else { - this.text.view.setCaretOffset(list.getCurrent().start);- this.braille.view.setCaretOffset(list.getCurrent().brailleList.getFirst().start);
+ else if(message.getValue("sender").equals("tree")){ + message.put("lastPosition", this.text.positionFromStart); + message.put("offset", this.text.cursorOffset); + list.getCurrentNodeData(message); + this.braille.updateCursorPosition(message); + message.put("lastPosition", this.braille.positionFromStart); + message.put("offset", this.braille.cursorOffset); + this.text.updateCursorPosition(message); } break; case SET_CURRENT: