Revision: 85276e6514aa Branch: WithBrailleFormatting Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Mon Jul 15 07:48:47 2013 Log: Synchronized scrollbars of text and braille view\ http://code.google.com/p/brailleblaster/source/detail?r=85276e6514aa&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/BBToolBar.java /src/main/org/brailleblaster/wordprocessor/DocumentManager.java /src/main/org/brailleblaster/wordprocessor/FontManager.java /src/main/org/brailleblaster/wordprocessor/Normalizer.java /src/main/org/brailleblaster/wordprocessor/WPManager.java =======================================--- /src/main/org/brailleblaster/abstractClasses/AbstractView.java Wed Jul 10 05:34:57 2013 +++ /src/main/org/brailleblaster/abstractClasses/AbstractView.java Mon Jul 15 07:48:47 2013
@@ -56,15 +56,16 @@ protected boolean locked; protected static int currentAlignment; protected static int topIndex; + protected Group group; public AbstractView() { }public AbstractView(Group group, int left, int right, int top, int bottom) {
+ this.group = group; view = new StyledText(group, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); setLayout(left, right, top, bottom); view.addModifyListener(viewMod); - this.charWidth = getFontWidth(); } // Better use a ModifyListener to set the change flag. @@ -145,10 +146,12 @@ protected Element getBrlNode(Node n){ Element e = (Element)n.getParent(); int index = e.indexOf(n); - if(index != e.getChildCount() - 1) - return (Element)e.getChild(index + 1); - else - return null; + if(index != e.getChildCount() - 1){ + if(((Element)e.getChild(index + 1)).getLocalName().equals("brl")) + return (Element)e.getChild(index + 1); + } + + return null; } protected int[] getIndexArray(Element e){ @@ -202,7 +205,7 @@ if(text.charAt(i) == '\n' && i != text.length() - 1){ i++; newPos = pos + i;- this.view.setLineIndent(this.view.getLineAtOffset(newPos), 1, this.view.getLineIndent(this.view.getLineAtOffset(newPos)) + (indent * getFontWidth())); + this.view.setLineIndent(this.view.getLineAtOffset(newPos), 1, this.view.getLineIndent(this.view.getLineAtOffset(newPos)) + (indent * this.charWidth));
} } } @@ -227,6 +230,10 @@ checkForLineBreak((Element)newParent.getParent(), newParent); } } + + public void setcharWidth(){ + this.charWidth = getFontWidth(); + } public void setTopIndex(int line){ setListenerLock(true); @@ -248,6 +255,15 @@ setLayout(left, right, top, bottom); view.getParent().layout(); } + + public void positionScrollbar(int topIndex){ + setListenerLock(true); + this.group.setRedraw(false); + this.view.setTopIndex(topIndex); + this.group.setRedraw(true); + this.group.getDisplay().getCurrent().update(); + setListenerLock(false); + } protected abstract void setViewData(Message message); public abstract void resetView(Group group); =======================================--- /src/main/org/brailleblaster/views/BrailleView.java Wed Jul 10 05:34:57 2013 +++ /src/main/org/brailleblaster/views/BrailleView.java Mon Jul 15 07:48:47 2013
@@ -56,6 +56,8 @@ import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.TraverseEvent; @@ -200,6 +202,21 @@ } } } + }); + + view.addPaintListener(new PaintListener(){ + @Override + public void paintControl(PaintEvent e) { + if(!getLock()){ + if(topIndex != view.getTopIndex()){ + topIndex = view.getTopIndex(); + Message scrollMessage = new Message(BBEvent.UPDATE_SCROLLBAR); + scrollMessage.put("sender", "braille"); + scrollMessage.put("offset", view.getOffsetAtLine(topIndex)); + dm.dispatch(scrollMessage); + } + } + } }); setListenerLock(false); =======================================--- /src/main/org/brailleblaster/views/TextView.java Wed Jul 10 05:34:57 2013 +++ /src/main/org/brailleblaster/views/TextView.java Mon Jul 15 07:48:47 2013
@@ -56,6 +56,8 @@ import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.TraverseEvent; @@ -92,7 +94,7 @@ private int originalStart, originalEnd; private String charAtOffset; - public TextView (Group documentWindow, BBSemanticsTable table) { + public TextView (Group documentWindow, BBSemanticsTable table) {super (documentWindow, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN);
this.stylesTable = table; this.total = 0; @@ -234,7 +236,6 @@ if(view.getLineAtOffset(view.getCaretOffset()) != currentLine){ sendStatusBarUpdate(dm); } - // System.out.println("Caret pos:\t" + view.getCaretOffset()); } }); @@ -290,7 +291,7 @@ } @Override - public void widgetSelected(SelectionEvent e) { + public void widgetSelected(SelectionEvent e) { if(!getLock()){ if(topIndex != view.getTopIndex()){ topIndex = view.getTopIndex(); @@ -301,7 +302,22 @@ } } }); - + + view.addPaintListener(new PaintListener(){ + @Override + public void paintControl(PaintEvent e) { + if(!getLock()){ + if(topIndex != view.getTopIndex()){ + topIndex = view.getTopIndex(); + Message scrollMessage = new Message(BBEvent.UPDATE_SCROLLBAR); + scrollMessage.put("offset", view.getOffsetAtLine(topIndex)); + dm.dispatch(scrollMessage); + } + } + } + + }); + setListenerLock(false); } @@ -340,7 +356,6 @@ dm.dispatch(message); setViewData(message); charAtOffset = null; - // System.out.println("Current:\t" + currentStart + " " + currentEnd); }private void sendDeleteSpaceMessage(DocumentManager dm, int offset, int key){
@@ -436,7 +451,7 @@ // for(int i = 0; i < this.spaceAfterText; i++) // view.append("\n");- list.add(new TextMapElement(this.spaceBeforeText + this.total, this.spaceBeforeText + this.total + textLength + this.spaceAfterText,n)); + list.add(new TextMapElement(this.spaceBeforeText + this.total, this.spaceBeforeText + this.total + textLength,n));
this.total += this.spaceBeforeText + textLength + this.spaceAfterText; // if(view.getCharCount() != this.total){ @@ -462,7 +477,6 @@ reformattedText = n.getValue();view.replaceTextRange(currentStart, currentEnd - currentStart, reformattedText); - // System.out.println(message.getValue("length") + " " + reformattedText.length() + " " + reformattedText.replace("\n","").length()); message.put("length", (reformattedText.length() + this.spaceAfterText) - (Integer)message.getValue("length"));
view.setLineIndent(view.getLineAtOffset(currentStart), 1, indent); checkStyleRange(range); @@ -544,7 +558,7 @@ int start = 0; int end = 0; int totalLength = 0; - + if(brl != null){ int[] indexes = getIndexArray(brl); if(indexes != null){ @@ -617,6 +631,7 @@ private void handleStyle(Styles style, Node n, String viewText){ // Element parent = (Element)n.getParent(); //checkForLineBreak(parent, n); + for (Entry<StylesType, String> entry : style.getEntrySet()) { switch(entry.getKey()){ case linesBefore: =======================================--- /src/main/org/brailleblaster/views/TreeView.java Wed Jul 10 05:34:57 2013 +++ /src/main/org/brailleblaster/views/TreeView.java Mon Jul 15 07:48:47 2013
@@ -85,6 +85,8 @@ this.tree = new Tree(view, SWT.VIRTUAL | SWT.NONE); view.setLayout(new FillLayout()); + view.getVerticalBar().dispose(); + view.getHorizontalBar().dispose(); view.addFocusListener(new FocusListener(){ @Override @@ -189,6 +191,7 @@ } } }); + setListenerLock(false); } =======================================--- /src/main/org/brailleblaster/wordprocessor/BBToolBar.java Mon Jul 15 06:22:25 2013 +++ /src/main/org/brailleblaster/wordprocessor/BBToolBar.java Mon Jul 15 07:48:47 2013
@@ -53,7 +53,7 @@ FormData location = new FormData(); location.left = new FormAttachment(0); location.right = new FormAttachment(40); - location.top = new FormAttachment(4); + location.top = new FormAttachment(1); toolBar.setLayoutData(location); // Path to dist folder. =======================================--- /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Mon Jul 15 06:34:56 2013 +++ /src/main/org/brailleblaster/wordprocessor/DocumentManager.java Mon Jul 15 07:48:47 2013
@@ -264,7 +264,7 @@ } private void initializeAllViews(String fileName, String filePath){ - //long start = System.currentTimeMillis(); +// long start = System.currentTimeMillis(); try{if(this.document.startDocument(filePath, BBIni.getDefaultConfigFile(), null)){
this.group.setRedraw(false); @@ -300,8 +300,8 @@ catch(Exception e){ e.printStackTrace(); } - //long end = System.currentTimeMillis(); - //System.out.println("TOTAL: " + (end - start)); +// long end = System.currentTimeMillis(); +// System.out.println("TOTAL: " + (end - start)); } private void initializeViews(Node current){ @@ -465,11 +465,11 @@ case UPDATE_SCROLLBAR: if(message.contains("sender")){ index = list.findClosestBraille(message); - this.text.setTopIndex(this.braille.view.getTopIndex()); + this.text.positionScrollbar(this.braille.view.getTopIndex()); } else{ index = list.findClosest(message, 0, list.size() - 1); - this.braille.setTopIndex(this.text.view.getTopIndex()); + this.braille.positionScrollbar(this.text.view.getTopIndex()); } break; default: =======================================--- /src/main/org/brailleblaster/wordprocessor/FontManager.java Mon May 27 17:42:45 2013 +++ /src/main/org/brailleblaster/wordprocessor/FontManager.java Mon Jul 15 07:48:47 2013
@@ -96,6 +96,8 @@ dm.text.view.setFont(daisyFont); + dm.text.setcharWidth(); + dm.braille.setcharWidth(); dm.braille.view.setFont(daisyFont); dm.braille.view.setEditable(false); =======================================--- /src/main/org/brailleblaster/wordprocessor/Normalizer.java Wed Jul 10 05:34:57 2013 +++ /src/main/org/brailleblaster/wordprocessor/Normalizer.java Mon Jul 15 07:48:47 2013
@@ -6,6 +6,7 @@ import org.w3c.dom.Document; +import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; @@ -67,7 +68,7 @@ else if(list.item(i) instanceof Text){ Text t = (Text)list.item(i); String text = t.getTextContent(); - text = text.replace("\n", ""); + text = text.replace("\n", " "); t.setTextContent(text); } } =======================================--- /src/main/org/brailleblaster/wordprocessor/WPManager.java Tue Jun 11 12:01:30 2013 +++ /src/main/org/brailleblaster/wordprocessor/WPManager.java Mon Jul 15 07:48:47 2013
@@ -79,7 +79,7 @@ this.location = new FormData(); this.location.left = new FormAttachment(0); this.location.right = new FormAttachment(100); - this.location.top = new FormAttachment (20); + this.location.top = new FormAttachment (13); this.location.bottom = new FormAttachment(98); this.folder.setLayoutData (this.location);