Revision: 80b453f64c84 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Fri May 10 09:06:10 2013 Log: Added line number and word count to status bar http://code.google.com/p/brailleblaster/source/detail?r=80b453f64c84&repo=newdesign Modified: /src/main/org/brailleblaster/abstractClasses/AbstractView.java /src/main/org/brailleblaster/mapping/MapList.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/BBEvent.java /src/main/org/brailleblaster/wordprocessor/BBMenu.java /src/main/org/brailleblaster/wordprocessor/BBStatusBar.java /src/main/org/brailleblaster/wordprocessor/DocumentManager.java /src/main/org/brailleblaster/wordprocessor/WPManager.java =======================================--- /src/main/org/brailleblaster/abstractClasses/AbstractView.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/abstractClasses/AbstractView.java Fri May 10 09:06:10 2013
@@ -51,7 +51,7 @@ protected int total; protected int spaceBeforeText, spaceAfterText; public int positionFromStart; - public static int cursorOffset; + public static int cursorOffset, currentLine, words; public AbstractView() { } @@ -157,6 +157,29 @@ return null; } } + + public int getWordCount(){ + String text = view.getText(); + int wordCount = 0; + int i = 0; + while(i < text.length() && text.charAt(i) == ' '){ + i++; + } + + for(;i < text.length(); i++){ + if(text.charAt(i) == ' '){ + wordCount++; + while(i < text.length() && text.charAt(i) == ' '){ + i++; + } + } + } + + if(text.charAt(text.length() - 1) == ' ') + wordCount--; + + return wordCount; + } protected abstract void setViewData(Message message); } =======================================--- /src/main/org/brailleblaster/mapping/MapList.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/mapping/MapList.java Fri May 10 09:06:10 2013
@@ -13,7 +13,7 @@ private static final long serialVersionUID = 1L; DocumentManager dm; private TextMapElement current; - private int currentIndex; + private int currentIndex = -1; private int prevEnd, nextStart, prevBraille, nextBraille; public MapList(DocumentManager dm){ @@ -334,6 +334,20 @@ private int getNodeIndex(TextMapElement t){ return this.indexOf(t); } + + public void incrementCurrent(Message message){ + if(this.currentIndex < this.size() - 1){ + setCurrent(this.currentIndex + 1); + getCurrentNodeData(message); + } + } + + public void decrementCurrent(Message message){ + if(this.currentIndex > 0){ + setCurrent(this.currentIndex - 1); + getCurrentNodeData(message); + } + } public boolean hasBraille(int index){ if(this.get(index).brailleList.size() > 0) =======================================--- /src/main/org/brailleblaster/views/BrailleView.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/views/BrailleView.java Fri May 10 09:06:10 2013
@@ -143,6 +143,13 @@if(view.getCaretOffset() > currentEnd || view.getCaretOffset() < currentStart){
setCurrent(dm); } + + if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){ + Message message = new Message(BBEvent.UPDATE_STATUSBAR);+ message.put("line", "Line: " + String.valueOf(view.getLineAtOffset(view.getCaretOffset()) + 1) + " Words: " + words);
+ dm.dispatch(message); + currentLine = view.getLineAtOffset(view.getCaretOffset()); + } } }); @@ -362,7 +369,7 @@ private int checkPageRange(int position){ int offset = 0; for(int i = 0; i < this.pageRanges.size(); i++){ - if(position + offset >= this.pageRanges.get(i).start){ + if(position + offset > this.pageRanges.get(i).start){ offset += this.pageRanges.get(i).end - this.pageRanges.get(i).start; } } =======================================--- /src/main/org/brailleblaster/views/TextView.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/views/TextView.java Fri May 10 09:06:10 2013
@@ -165,6 +165,10 @@ setViewData(message);// if(oldCursorPosition == -1 || oldCursorPosition < currentStart || oldCursorPosition > currentEnd)
// view.setCaretOffset((Integer)message.getValue("start")); + Message statusMessage = new Message(BBEvent.UPDATE_STATUSBAR);+ statusMessage.put("line", "Line: " + String.valueOf(view.getLineAtOffset(view.getCaretOffset()) + 1) + " Words: " + words);
+ dm.dispatch(statusMessage); + currentLine = view.getLineAtOffset(view.getCaretOffset()); } @Override @@ -188,8 +192,7 @@ else { positionFromStart -= count; cursorOffset = count; - } - + } } }); @@ -206,6 +209,13 @@ } } } + if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){ + Message message = new Message(BBEvent.UPDATE_STATUSBAR); + words = getWordCount();+ message.put("line", "Line: " + String.valueOf(view.getLineAtOffset(view.getCaretOffset()) + 1) + " Words: " + words);
+ dm.dispatch(message); + currentLine = view.getLineAtOffset(view.getCaretOffset()); + } } }); =======================================--- /src/main/org/brailleblaster/views/TreeView.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/views/TreeView.java Fri May 10 09:06:10 2013
@@ -47,6 +47,8 @@ import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.events.TraverseEvent; +import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Tree; @@ -96,6 +98,19 @@ cursorOffset = 0; dm.dispatch(message); } + } + }); + + this.tree.addTraverseListener(new TraverseListener(){ + @Override + public void keyTraversed(TraverseEvent e) { + if(e.stateMask == SWT.MOD1 && e.keyCode == SWT.ARROW_DOWN){ + sendIncrementCurrent(dm); + e.doit = false; + } + else if(e.stateMask == SWT.MOD1 && e.keyCode == SWT.ARROW_UP){ + sendDecrementCurrent(dm); + } } }); =======================================--- /src/main/org/brailleblaster/wordprocessor/BBEvent.java Mon Apr 22 10:36:47 2013 +++ /src/main/org/brailleblaster/wordprocessor/BBEvent.java Fri May 10 09:06:10 2013
@@ -10,5 +10,6 @@ GET_CURRENT, ADJUST_ALIGNMENT, ADJUST_INDENT, + UPDATE_STATUSBAR, ADJUST_RANGE; } =======================================--- /src/main/org/brailleblaster/wordprocessor/BBMenu.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/wordprocessor/BBMenu.java Fri May 10 09:06:10 2013
@@ -490,11 +490,13 @@ }); nextElementItem = new MenuItem(editMenu, SWT.PUSH); - nextElementItem.setText(lh.localValue("&NexstElement")); - nextElementItem.setEnabled(false);+ nextElementItem.setText(lh.localValue("&NexstElement") + "\tCtrl + Down");
nextElementItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { //dm.placeholder(); + int index = wp.getFolder().getSelectionIndex(); + if(index != -1) + wp.getList().get(index).nextElement(); } }); assocSelectionItem = new MenuItem(editMenu, SWT.PUSH); =======================================--- /src/main/org/brailleblaster/wordprocessor/BBStatusBar.java Tue May 1 23:08:20 2012 +++ /src/main/org/brailleblaster/wordprocessor/BBStatusBar.java Fri May 10 09:06:10 2013
@@ -36,21 +36,19 @@ class BBStatusBar { -private Label statusBar; + private Label statusBar; -BBStatusBar (Shell documentWindow) { -statusBar = new Label (documentWindow, SWT.BORDER); -statusBar.setText ("This is the status bar."); -FormData location = new FormData(); -location.left = new FormAttachment(0); -location.right = new FormAttachment(100); -location.bottom = new FormAttachment(100); -statusBar.setLayoutData (location); -} - -void setText (String text) { -statusBar.setText (text); -} + BBStatusBar (Shell documentWindow) { + statusBar = new Label (documentWindow, SWT.BORDER); + FormData location = new FormData(); + location.left = new FormAttachment(0); + location.right = new FormAttachment(100); + location.bottom = new FormAttachment(100); + statusBar.setLayoutData (location); + } + void setText (String text) { + statusBar.setText (text); + } } =======================================--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Thu May 9 09:30:25 2013 +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Fri May 10 09:06:10 2013
@@ -34,11 +34,9 @@ import java.io.BufferedWriter; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.logging.Level; @@ -74,7 +72,6 @@ WPManager wp; TabItem item; Group group; - BBStatusBar statusBar; TreeView treeView; TextView text; BrailleView braille; @@ -114,6 +111,7 @@this.tabList = new Control[]{this.treeView.view, this.text.view, this.braille.view};
this.group.setTabList(this.tabList); + this.wp.getStatusBar().setText("Words: " + 0); logger = BBIni.getLogger(); @@ -255,6 +253,7 @@ this.text.hasChanged = false; this.braille.hasChanged = false; this.wp.checkToolbarSettings(); + this.wp.getStatusBar().setText("Words: " + this.text.getWordCount()); } else { System.out.println("The Document Base document tree is empty"); @@ -311,20 +310,12 @@ switch(message.type){ case INCREMENT: - index = list.getCurrentIndex(); - if(index < list.size() - 1){ - list.setCurrent(index + 1); - list.getCurrentNodeData(message); - this.treeView.setSelection(list.getCurrent(), message); - } + list.incrementCurrent(message); + this.treeView.setSelection(list.getCurrent(), message); break; case DECREMENT: - index = list.getCurrentIndex(); - if(index > 0){ - list.setCurrent(index - 1); - list.getCurrentNodeData(message); - this.treeView.setSelection(list.getCurrent(), message); - } + list.decrementCurrent(message); + this.treeView.setSelection(list.getCurrent(), message); break; case SET_CURRENT: list.checkList(); @@ -353,18 +344,14 @@ case GET_CURRENT: if(message.getValue("sender").equals("text")){ message.put("lastPosition", this.braille.positionFromStart); - message.put("element", list.getCurrent().n);- message.put("selection", this.treeView.getSelection(list.getCurrent()));
- list.getCurrentNodeData(message); - this.treeView.setSelection(list.getCurrent(), message); } else { message.put("lastPosition", this.text.positionFromStart); - message.put("element", list.getCurrent().n);- message.put("selection", this.treeView.getSelection(list.getCurrent()));
- list.getCurrentNodeData(message); - this.treeView.setSelection(list.getCurrent(), message); } + message.put("element", list.getCurrent().n);+ message.put("selection", this.treeView.getSelection(list.getCurrent()));
+ list.getCurrentNodeData(message); + this.treeView.setSelection(list.getCurrent(), message); break; case TEXT_DELETION: if((Integer)message.getValue("deletionType") == SWT.BS){ @@ -398,6 +385,9 @@ if(list.size() == 0) this.text.removeListeners(); break; + case UPDATE_STATUSBAR: + this.wp.getStatusBar().setText((String)message.getValue("line")); + break; case ADJUST_ALIGNMENT:this.braille.changeAlignment(list.getCurrent().brailleList.getFirst().start, (Integer)message.getValue("alignment"));
break; @@ -491,6 +481,19 @@ } } } + public void nextElement(){ + if(list.size() != 0 ){ + Message message = new Message(BBEvent.INCREMENT); + dispatch(message); + } + + if(text.view.isFocusControl()){ + text.view.setCaretOffset(list.getCurrent().start); + } + else if(braille.view.isFocusControl()){+ braille.view.setCaretOffset(list.getCurrent().brailleList.getFirst().start);
+ } + } public void textPrint(){PrintersManager pn = new PrintersManager(this.wp.getShell(), this.text.view);
=======================================--- /src/main/org/brailleblaster/wordprocessor/WPManager.java Wed Apr 24 13:54:19 2013 +++ /src/main/org/brailleblaster/wordprocessor/WPManager.java Fri May 10 09:06:10 2013
@@ -101,6 +101,13 @@ @Override public void widgetSelected(SelectionEvent e) { checkToolbarSettings(); + int index = folder.getSelectionIndex(); + if(managerList.get(index).text.view.getCharCount() > 0) { + int wordCount = managerList.get(index).text.getWordCount(); + statusBar.setText("Words: " + wordCount); + } + else + statusBar.setText("Words: " + 0); } });