6 new revisions: Revision: dd8a9cda2e13 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Wed Jul 23 17:43:09 2014 UTCLog: Added ability to dynaimically add boxlines to basic block elements suc...
http://code.google.com/p/brailleblaster/source/detail?r=dd8a9cda2e13 Revision: acadcacbef30 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Fri Jul 25 18:18:06 2014 UTCLog: Added boxlines to elements with lines before and after are now honored
http://code.google.com/p/brailleblaster/source/detail?r=acadcacbef30 Revision: ff7834cb4ac3 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Mon Jul 28 18:33:55 2014 UTCLog: Fixed bug with new boxline element not being added to section element
http://code.google.com/p/brailleblaster/source/detail?r=ff7834cb4ac3 Revision: c3669c7ebbf3 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 13:38:39 2014 UTC Log: Fixed bug in opening html based UTD files http://code.google.com/p/brailleblaster/source/detail?r=c3669c7ebbf3 Revision: 3123a0d696ae Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 15:38:12 2014 UTC Log: Committing changes before merge http://code.google.com/p/brailleblaster/source/detail?r=3123a0d696ae Revision: 73ad8f58eb4a Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 15:38:38 2014 UTC Log: merged with main branch http://code.google.com/p/brailleblaster/source/detail?r=73ad8f58eb4a ============================================================================== Revision: dd8a9cda2e13 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Wed Jul 23 17:43:09 2014 UTCLog: Added ability to dynaimically add boxlines to basic block elements such as a paragraph
http://code.google.com/p/brailleblaster/source/detail?r=dd8a9cda2e13 Added:/src/main/org/brailleblaster/perspectives/braille/stylepanel/StylePanel.java
Modified: /src/main/org/brailleblaster/document/SemanticFileHandler.java /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java
/src/main/org/brailleblaster/perspectives/braille/stylepanel/EditPanel.java/src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java
/src/main/org/brailleblaster/perspectives/braille/views/tree/XMLTree.java /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java ======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/StylePanel.java Wed Jul 23 17:43:09 2014 UTC
@@ -0,0 +1,102 @@ +package org.brailleblaster.perspectives.braille.stylepanel; + +import org.brailleblaster.localization.LocaleHandler;+import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; +import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
+import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Spinner; + +public abstract class StylePanel { + static LocaleHandler lh = new LocaleHandler(); + + private final static int LEFT_MARGIN = 0; + private final static int RIGHT_MARGIN = 15; + private final static int TOP_MARGIN = 50; + private final static int BOTTOM_MARGIN = 100; + + protected Group group; + protected StyleManager sm; + + public StylePanel(StyleManager sm, Group documentWindow){ + this.sm = sm; + this.group = new Group(documentWindow, SWT.FILL | SWT.BORDER); + this.group.setText(lh.localValue("editStyle"));+ setLayoutData(this.group, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN);
+ this.group.setLayout(new FormLayout()); + } ++ protected void setLayoutData(Control c, int left, int right, int top, int bottom){
+ FormData location = new FormData(); + + location.left = new FormAttachment(left); + location.right = new FormAttachment(right); + location.top = new FormAttachment(top); + location.bottom = new FormAttachment(bottom); + + c.setLayoutData(location); + } + + protected void resetLayout(){ + group.pack(); + group.getParent().layout(); + } ++ protected Label makeLabel(String text, int left, int right, int top, int bottom){
+ Label l = new Label(group, SWT.BORDER | SWT.CENTER); + l.setText(text); + setLayoutData(l, left, right, top, bottom); + + return l; + } + + protected Spinner makeSpinner(int left, int right, int top, int bottom){ + Spinner sp = new Spinner(group, SWT.BORDER); + setLayoutData(sp, left, right, top, bottom); + return sp; + } + + protected void setSpinnerData(Spinner sp, Styles style, StylesType type){ + if(style.contains(type)) + sp.setSelection(Integer.valueOf((String)style.get(type))); + else + sp.setSelection(0); + } ++ protected Combo makeCombo(String [] values, int left, int right, int top, int bottom){
+ Combo cb = new Combo(group, SWT.BORDER); + cb.setItems(values); + setLayoutData(cb, left, right, top, bottom); + + return cb; + } + + protected void showTable(){ + group.setVisible(true); + } + + protected void hideTable(){ + group.setVisible(false); + } + + protected Group getGroup(){ + return group; + } + + protected void dispose(){ + group.dispose(); + } + + protected boolean isVisible(){ + if(!group.isDisposed() && group.isVisible()) + return true; + else + return false; + } +} =======================================--- /src/main/org/brailleblaster/document/SemanticFileHandler.java Thu Jul 17 11:34:16 2014 UTC +++ /src/main/org/brailleblaster/document/SemanticFileHandler.java Wed Jul 23 17:43:09 2014 UTC
@@ -6,6 +6,7 @@ import java.io.FileReader; import java.io.IOException; import java.util.HashMap; +import java.util.Map.Entry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -185,4 +186,16 @@ public String getDefault(String elementName){ return defaults.get(elementName); } + + public String getElementBySemantic(String semantic){ + return getKeyByValue(semantic); + } + + private String getKeyByValue(String sem) { + for (Entry<String, String> entry : defaults.entrySet()) { + if (entry.getValue().equals(sem)) + return entry.getKey(); + } + return null; + } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Thu Jul 17 20:03:48 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Wed Jul 23 17:43:09 2014 UTC
@@ -55,6 +55,7 @@import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
import org.brailleblaster.perspectives.braille.document.BrailleDocument;+import org.brailleblaster.perspectives.braille.mapping.elements.BrlOnlyMapElement;
import org.brailleblaster.perspectives.braille.mapping.elements.Range;import org.brailleblaster.perspectives.braille.mapping.elements.SectionElement; import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
@@ -742,8 +743,7 @@ if (arch.getCurrentConfig().equals("epub.cfg")){text.insertNewNode(list.get(posList.get(posList.size() - 1)).end,"aside");
} - else{ - + else{text.insertNewNode(list.get(posList.get(posList.size() - 1)).end,"prodnote");
} @@ -816,7 +816,7 @@document.changeSemanticAction(message, list.getCurrent().parentElement());
message.put("style", styles.get(styles.getKeyFromAttribute(parent)));ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getCurrentIndex(), parent, true);
- + int start = list.indexOf(itemList.get(0)); int end = list.indexOf(itemList.get(itemList.size() - 1)); int origPos = list.get(list.getNodeIndex(itemList.get(0))).start; @@ -838,6 +838,7 @@ message.put("brailleNext", -1); } + //else { text.adjustStyle(message, itemList); braille.adjustStyle(message, itemList); @@ -847,11 +848,53 @@list.shiftOffsetsFromIndex(end + 1, (Integer)message.getValue("linesAfterOffset"), (Integer)message.getValue("linesAfterOffset"), origPos);
treeView.adjustItemStyle(list.getCurrent()); + //} + + if(((Styles)message.getValue("Style")).getName().equals("boxline")) + createBoxline(parent, message, itemList); + group.setRedraw(true); } else new Notify(lh.localValue("nothingToApply")); } ++ private void createBoxline(Element p, Message m, ArrayList<TextMapElement> itemList){
+ Element wrapper = document.wrapElement(p, "boxline"); + if(wrapper != null){ + //document.translateElement(wrapper); + int startPos = list.indexOf(itemList.get(0));+ BrlOnlyMapElement b1 = new BrlOnlyMapElement(p.getParent().getChild(0), (Element)p.getParent()); + b1.setOffsets(list.get(startPos).start, list.get(startPos).start + b1.textLength()); + b1.setBrailleOffsets(list.get(startPos).brailleList.getFirst().start, list.get(startPos).brailleList.getFirst().start + b1.getText().length());
+ list.add(startPos, b1); ++ text.insertText(itemList.get(0).start, list.get(startPos).getText() + "\n"); + braille.insertText(itemList.get(0).brailleList.getFirst().start, list.get(startPos).brailleList.getFirst().value() + "\n"); + list.shiftOffsetsFromIndex(startPos + 1, list.get(startPos).getText().length() + 1, list.get(startPos).brailleList.getFirst().value().length() + 1, list.get(startPos + 1).start);
+ + int endPos = list.indexOf(itemList.get(itemList.size() - 1)) + 1;+ BrlOnlyMapElement b2 = new BrlOnlyMapElement(p.getParent().getChild(p.getParent().getChildCount() - 1), (Element)p.getParent()); + b2.setOffsets(list.get(endPos - 1).end + 1, list.get(endPos - 1).end + 1 + b2.textLength()); + b2.setBrailleOffsets(list.get(endPos - 1).brailleList.getLast().end + 1, list.get(endPos - 1).brailleList.getLast().end + 1 + b2.getText().length());
+ list.add(endPos, b2); ++ text.insertText(itemList.get(itemList.size() - 1).end, "\n" + list.get(endPos).getText()); + braille.insertText(itemList.get(itemList.size() - 1).brailleList.getLast().end, "\n" + list.get(endPos).brailleList.getFirst().value()); + list.shiftOffsetsFromIndex(endPos + 1, list.get(endPos).getText().length() + 1, list.get(endPos).brailleList.getFirst().value().length() + 1, list.get(endPos).start);
+ + for(int i = 0; i < itemList.size(); i++) + treeView.removeItem(itemList.get(i), new Message(null)); ++ treeView.newTreeItem(list.get(startPos), treeView.getSelectionIndex(), 0); + handleSetCurrent(Message.createSetCurrentMessage(Sender.TREE, list.get(list.getCurrentIndex() + 1).start, false));
+ dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); + + for(int i = 0; i < list.size(); i++){+ System.out.println("Start: " + list.get(i).start + "\tEnd: " + list.get(i).end + "\t" + list.get(i).getClass());
+ } + } + } public void saveAs(){BBFileDialog dialog = new BBFileDialog(wp.getShell(), SWT.SAVE, arch.getFileTypes(), arch.getFileExtensions());
=======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Thu Jul 17 11:34:16 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Wed Jul 23 17:43:09 2014 UTC
@@ -12,6 +12,7 @@ import nu.xom.Element; import nu.xom.Elements; import nu.xom.Node; +import nu.xom.ParentNode; import nu.xom.ParsingException; import nu.xom.Text; @@ -650,6 +651,32 @@ } } + return null; + } + + + public Element wrapElement(Element e, String type){ + if(type.equals("boxline")){ + Element boxline = new Element(semHandler.getElementBySemantic(type)); + Element sb1 = new Element("brl"); + sb1.appendChild(new Text("777777777777777")); + + Element sb2 = new Element("brl"); + sb2.appendChild(new Text("GGGGGGGGGGGGGGG")); + + boxline.addAttribute(new Attribute("semantics","style,boxline")); + boxline.appendChild(sb1); + boxline.appendChild(sb2); + + ParentNode parent = e.getParent(); + int index = parent.indexOf(e); + boxline.insertChild(parent.removeChild(e), 1); + //boxline.appendChild(parent.removeChild(e)); + parent.insertChild(boxline, index); + addNamespace(boxline); + return boxline; + } + return null; } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylepanel/EditPanel.java Fri Apr 4 15:29:56 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/EditPanel.java Wed Jul 23 17:43:09 2014 UTC
@@ -1,30 +1,18 @@ package org.brailleblaster.perspectives.braille.stylepanel; -import org.brailleblaster.localization.LocaleHandler;import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
import org.brailleblaster.util.Notify; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.Text; -public class EditPanel { - static LocaleHandler lh = new LocaleHandler(); - - private final static int LEFT_MARGIN = 0; - private final static int RIGHT_MARGIN = 15; - private final static int TOP_MARGIN = 50; - private final static int BOTTOM_MARGIN = 100; - +public class EditPanel extends StylePanel { //For use in making localized UIfinal private String [] emphasisList = {lh.localValue("bold"), lh.localValue("italic"), lh.localValue("underline")};
//For determining combo box position in relation to liblouis value @@ -38,8 +26,6 @@ protected static final int RIGHT = 2; protected Styles originalStyle; - protected Group group; - protected StyleManager sm; protected Text styleName;private Label styleLabel, linesBeforeLabel, linesAfterLabel, marginLabel, indentLabel, alignmentLabel, emphasisLabel;
@@ -47,12 +33,8 @@protected Spinner linesBeforeSpinner, linesAfterSpinner, marginSpinner, indentSpinner;
public EditPanel(StyleManager sm, Group documentWindow, Styles style){ - this.sm = sm; + super(sm, documentWindow); originalStyle = style; - this.group = new Group(documentWindow, SWT.FILL | SWT.BORDER); - this.group.setText(lh.localValue("editStyle"));- setLayoutData(this.group, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN);
- this.group.setLayout(new FormLayout()); styleLabel = makeLabel(lh.localValue("styleName"), 0, 50, 0, 10); styleName = new Text(group, SWT.BORDER); @@ -96,50 +78,7 @@ emphasisCombo.setToolTipText(lh.localValue("emphasisTooltip")); }- protected void setLayoutData(Control c, int left, int right, int top, int bottom){
- FormData location = new FormData(); - - location.left = new FormAttachment(left); - location.right = new FormAttachment(right); - location.top = new FormAttachment(top); - location.bottom = new FormAttachment(bottom); - - c.setLayoutData(location); - } - protected void resetLayout(){ - group.pack(); - group.getParent().layout(); - } -- private Label makeLabel(String text, int left, int right, int top, int bottom){
- Label l = new Label(group, SWT.BORDER | SWT.CENTER); - l.setText(text); - setLayoutData(l, left, right, top, bottom); - - return l; - } - - private Spinner makeSpinner(int left, int right, int top, int bottom){ - Spinner sp = new Spinner(group, SWT.BORDER); - setLayoutData(sp, left, right, top, bottom); - return sp; - } - - protected void setSpinnerData(Spinner sp, Styles style, StylesType type){ - if(style.contains(type)) - sp.setSelection(Integer.valueOf((String)style.get(type))); - else - sp.setSelection(0); - } -- private Combo makeCombo(String [] values, int left, int right, int top, int bottom){
- Combo cb = new Combo(group, SWT.BORDER); - cb.setItems(values); - setLayoutData(cb, left, right, top, bottom); - - return cb; - } protected Styles getNewStyle(){ Styles newStyle; @@ -150,7 +89,6 @@ else newStyle = sm.getSemanticsTable().getNewStyle(styleName.getText()); - int selectionIndex = emphasisCombo.getSelectionIndex(); if(selectionIndex != -1){ if(selectionIndex == BOLD) @@ -197,27 +135,9 @@ } } + @Override protected void showTable(){ group.setVisible(true); styleName.setFocus(); } - - protected void hideTable(){ - group.setVisible(false); - } - - protected Group getGroup(){ - return group; - } - - protected void dispose(){ - group.dispose(); - } - - protected boolean isVisible(){ - if(!group.isDisposed() && group.isVisible()) - return true; - else - return false; - } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Thu Jul 3 16:07:57 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.java Wed Jul 23 17:43:09 2014 UTC
@@ -50,7 +50,7 @@ public class StyleManager{ private StyleTable table; - private EditPanel editor; + private StylePanel editor; private String configFile; Manager dm; TextMapElement t; @@ -83,7 +83,10 @@ lastSelection = table.getTable().getSelectionIndex(); String style = table.getTable().getSelection()[0].getText(1); this.table.dispose();- editor = new EditStyleView(this, dm.getGroup(), semanticsTable.get(style));
+ if(semanticsTable.get(style).getName().equals("boxline"))+ editor = new EditBoxLineView(this, dm.getGroup(), semanticsTable.get(style));
+ else+ editor = new EditStyleView(this, dm.getGroup(), semanticsTable.get(style));
dm.setTabList(); } @@ -102,6 +105,7 @@ public void apply(String item){ Message m = new Message(BBEvent.UPDATE_STYLE); Styles style = semanticsTable.get(item); + if(style != null){ m.put("Style", style); dm.dispatch(m); =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/tree/XMLTree.java Thu Jul 17 19:46:53 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/tree/XMLTree.java Wed Jul 23 17:43:09 2014 UTC
@@ -200,7 +200,7 @@ @Override public void newTreeItem(TextMapElement t, int index, int offset){ - Element parentElement = (Element)t.n.getParent(); + Element parentElement = (Element)t.parentElement(); while(parentElement.getAttributeValue("semantics").contains("action")){ parentElement = (Element)parentElement.getParent(); } =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Mon Jul 21 19:30:53 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/BrailleView.java Wed Jul 23 17:43:09 2014 UTC
@@ -467,22 +467,25 @@ String textBefore = ""; Styles style = (Styles)m.getValue("style"); Styles previousStyle = (Styles)m.getValue("previousStyle"); + boolean boxline = style.getName().equals("boxline"); + if(!boxline){ setListenerLock(true);- view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); - view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT); + view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); + view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT);
- if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
- removeLinesBefore(m); -- if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
- removeLinesAfter(m);+ if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
+ removeLinesBefore(m);+ if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
+ removeLinesAfter(m); + } start = (Integer)m.getValue("start"); end = (Integer)m.getValue("end"); int prev = (Integer)m.getValue("braillePrev"); int next = (Integer)m.getValue("brailleNext"); + if(!boxline){ for (Entry<StylesType, Object> entry : style.getEntrySet()) { switch(entry.getKey()){ case linesBefore: @@ -530,6 +533,7 @@ } } setListenerLock(false); + } } private int getPrev(Message m){ =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Jul 21 19:30:53 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Wed Jul 23 17:43:09 2014 UTC
@@ -307,6 +307,8 @@ if(view.getLineAtOffset(view.getCaretOffset()) != currentLine) sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset())); + + System.out.println("Pos:\t" + view.getCaretOffset()); } }); @@ -501,6 +503,7 @@Message message = Message.createSetCurrentMessage(Sender.TEXT, pos, false);
manager.dispatch(message); setViewData(message);+ System.out.println("Start:\t" + currentStart + " CurrentEnd:\t" + currentEnd);
} private void sendDeleteSpaceMessage(int start, int offset){ @@ -824,7 +827,7 @@handleLineWrap(start, reformattedText, margin, style.contains(StylesType.firstLineIndent));
} - if(isFirst(n) && style.contains(StylesType.firstLineIndent))+ if(!(list.get(listIndex) instanceof BrlOnlyMapElement) && isFirst(n) && style.contains(StylesType.firstLineIndent))
setFirstLineIndent(start, style); if(style.contains(StylesType.format)) @@ -1513,86 +1516,89 @@//Get previous style for comparison on adding or removing lines before or after
Styles style = (Styles)m.getValue("style"); Styles previousStyle = (Styles)m.getValue("previousStyle"); - + boolean boxline = style.getName().equals("boxline"); + setListenerLock(true); //Reset indent, alignment, and emphasis- view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); - view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT);
- setFontStyleRange(start, end - start, new StyleRange()); + if(!boxline){+ view.setLineIndent(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), 0); + view.setLineAlignment(view.getLineAtOffset(start), getLineNumber(start, view.getTextRange(start, (end - start))), SWT.LEFT);
+ setFontStyleRange(start, end - start, new StyleRange());- if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
- removeLinesBefore(m);+ if(!style.contains(StylesType.linesBefore) && previousStyle.contains(StylesType.linesBefore))
+ removeLinesBefore(m);- if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
- removeLinesAfter(m);+ if(!style.contains(StylesType.linesAfter) && previousStyle.contains(StylesType.linesAfter))
+ removeLinesAfter(m); + } + start = (Integer)m.getValue("start"); end = (Integer)m.getValue("end"); int prev = (Integer)m.getValue("prev"); int next = (Integer)m.getValue("next"); - - for (Entry<StylesType, Object> entry : style.getEntrySet()) { - switch(entry.getKey()){ - case linesBefore: - int linesBeforeOffset; - if(start != prev){ - view.replaceTextRange(prev, (start - prev), ""); - length = start - prev; - } - spaces = Integer.valueOf((String)entry.getValue()); + if(!boxline){ + for (Entry<StylesType, Object> entry : style.getEntrySet()) { + switch(entry.getKey()){ + case linesBefore: + int linesBeforeOffset; + if(start != prev){ + view.replaceTextRange(prev, (start - prev), ""); + length = start - prev; + } + spaces = Integer.valueOf((String)entry.getValue()); - textBefore = makeInsertionString(spaces,'\n'); - linesBeforeOffset = spaces - length; + textBefore = makeInsertionString(spaces,'\n'); + linesBeforeOffset = spaces - length; - insertBefore(start - (start - prev), textBefore); - m.put("linesBeforeOffset", linesBeforeOffset); - start += linesBeforeOffset; - end += linesBeforeOffset; - if(next != -1) - next += linesBeforeOffset; - break; - case linesAfter: - length = 0; - int linesAfterOffset; - if(end != next && next != 0){ - view.replaceTextRange(end, (next - end), ""); - length = next - end; - } + insertBefore(start - (start - prev), textBefore); + m.put("linesBeforeOffset", linesBeforeOffset); + start += linesBeforeOffset; + end += linesBeforeOffset; + if(next != -1) + next += linesBeforeOffset; + break; + case linesAfter: + length = 0; + int linesAfterOffset; + if(end != next && next != 0){ + view.replaceTextRange(end, (next - end), ""); + length = next - end; + } - spaces = Integer.valueOf((String)entry.getValue()); - textBefore = makeInsertionString(spaces,'\n'); - insertBefore(end, textBefore); - linesAfterOffset = spaces - length; - m.put("linesAfterOffset", linesAfterOffset); - break; - case format: - setAlignment(start, end, style); - break; - case firstLineIndent:- if(Integer.valueOf((String)entry.getValue()) > 0 || style.contains(StylesType.leftMargin))
- setFirstLineIndent(start, style); - break; - case leftMargin: - if(style.contains(StylesType.firstLineIndent))- handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), true);
- else- handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), false);
- break; + spaces = Integer.valueOf((String)entry.getValue()); + textBefore = makeInsertionString(spaces,'\n'); + insertBefore(end, textBefore); + linesAfterOffset = spaces - length; + m.put("linesAfterOffset", linesAfterOffset); + break; + case format: + setAlignment(start, end, style); + break; + case firstLineIndent:+ if(Integer.valueOf((String)entry.getValue()) > 0 || style.contains(StylesType.leftMargin))
+ setFirstLineIndent(start, style); + break; + case leftMargin: + if(style.contains(StylesType.firstLineIndent))+ handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), true);
+ else+ handleLineWrap(start, view.getTextRange(start, (end - start)), Integer.valueOf((String)entry.getValue()), false);
+ break; + default: + break; + } - default: - break; - } - - int offset = (Integer)m.getValue("offset"); + int offset = (Integer)m.getValue("offset");- //inline elements may have different emphasis, so all must be check seperately
- for(int i = 0; i < list.size(); i++){- Styles nodeStyle = stylesTable.makeStylesElement(list.get(i).parentElement(), list.get(i).n);
- if(nodeStyle.contains(StylesType.emphasis))- setFontStyleRange(list.get(i).start + offset, (list.get(i).end + offset) - (list.get(i).start + offset), (StyleRange)nodeStyle.get(StylesType.emphasis)); + //inline elements may have different emphasis, so all must be check seperately
+ for(int i = 0; i < list.size(); i++){+ Styles nodeStyle = stylesTable.makeStylesElement(list.get(i).parentElement(), list.get(i).n);
+ if(nodeStyle.contains(StylesType.emphasis))+ setFontStyleRange(list.get(i).start + offset, (list.get(i).end + offset) - (list.get(i).start + offset), (StyleRange)nodeStyle.get(StylesType.emphasis));
+ } } - + setListenerLock(false); } - setListenerLock(false); } //private helper method used by adjust style ============================================================================== Revision: acadcacbef30 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Fri Jul 25 18:18:06 2014 UTCLog: Added boxlines to elements with lines before and after are now honored
http://code.google.com/p/brailleblaster/source/detail?r=acadcacbef30 Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java
/src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Wed Jul 23 17:43:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Fri Jul 25 18:18:06 2014 UTC
@@ -813,7 +813,9 @@ Element parent = document.getParent(list.getCurrent().n, true);message.put("previousStyle", styles.get(styles.getKeyFromAttribute(parent))); - document.changeSemanticAction(message, list.getCurrent().parentElement());
+ if(!((Styles)message.getValue("Style")).getName().equals("boxline"))+ document.changeSemanticAction(message, list.getCurrent().parentElement());
+ message.put("style", styles.get(styles.getKeyFromAttribute(parent)));ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getCurrentIndex(), parent, true);
@@ -862,25 +864,48 @@private void createBoxline(Element p, Message m, ArrayList<TextMapElement> itemList){
Element wrapper = document.wrapElement(p, "boxline"); if(wrapper != null){ - //document.translateElement(wrapper); + Element boxline = document.translateElement((Element)wrapper.copy()); int startPos = list.indexOf(itemList.get(0));- BrlOnlyMapElement b1 = new BrlOnlyMapElement(p.getParent().getChild(0), (Element)p.getParent()); - b1.setOffsets(list.get(startPos).start, list.get(startPos).start + b1.textLength()); - b1.setBrailleOffsets(list.get(startPos).brailleList.getFirst().start, list.get(startPos).brailleList.getFirst().start + b1.getText().length());
+ + int start, brailleStart;+ if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesBefore)){
+ start = (Integer)m.getValue("prev"); + brailleStart = (Integer)m.getValue("braillePrev"); + } + else { + start = itemList.get(0).start; + brailleStart = itemList.get(0).brailleList.getFirst().start; + } + + wrapper.insertChild(boxline.removeChild(0), 0);+ BrlOnlyMapElement b1 = new BrlOnlyMapElement(wrapper.getChild(0), (Element)wrapper);
+ b1.setOffsets(start, start + b1.textLength());+ b1.setBrailleOffsets(brailleStart, brailleStart + b1.getText().length());
list.add(startPos, b1);- text.insertText(itemList.get(0).start, list.get(startPos).getText() + "\n"); - braille.insertText(itemList.get(0).brailleList.getFirst().start, list.get(startPos).brailleList.getFirst().value() + "\n");
+ text.insertText(start, list.get(startPos).getText() + "\n");+ braille.insertText(brailleStart, list.get(startPos).brailleList.getFirst().value() + "\n"); list.shiftOffsetsFromIndex(startPos + 1, list.get(startPos).getText().length() + 1, list.get(startPos).brailleList.getFirst().value().length() + 1, list.get(startPos + 1).start);
int endPos = list.indexOf(itemList.get(itemList.size() - 1)) + 1;- BrlOnlyMapElement b2 = new BrlOnlyMapElement(p.getParent().getChild(p.getParent().getChildCount() - 1), (Element)p.getParent()); - b2.setOffsets(list.get(endPos - 1).end + 1, list.get(endPos - 1).end + 1 + b2.textLength()); - b2.setBrailleOffsets(list.get(endPos - 1).brailleList.getLast().end + 1, list.get(endPos - 1).brailleList.getLast().end + 1 + b2.getText().length());
+ int end, brailleEnd;+ if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesAfter)){
+ end = (Integer)m.getValue("next") + b1.getText().length() + 1;+ brailleEnd = (Integer)m.getValue("brailleNext") + b1.getText().length() + 1;
+ } + else { + end = list.get(endPos - 1).end;+ brailleEnd = itemList.get(itemList.size() - 1).brailleList.getLast().end;
+ } + + wrapper.appendChild(boxline.removeChild(boxline.getChildCount() - 1));+ BrlOnlyMapElement b2 = new BrlOnlyMapElement(wrapper.getChild(wrapper.getChildCount() - 1), (Element)wrapper);
+ b2.setOffsets(end + 1, end + 1 + b2.textLength());+ b2.setBrailleOffsets(brailleEnd + 1, brailleEnd + 1 + b2.getText().length());
list.add(endPos, b2); -- text.insertText(itemList.get(itemList.size() - 1).end, "\n" + list.get(endPos).getText()); - braille.insertText(itemList.get(itemList.size() - 1).brailleList.getLast().end, "\n" + list.get(endPos).brailleList.getFirst().value());
+ + text.insertText(end, "\n" + list.get(endPos).getText());+ braille.insertText(brailleEnd, "\n" + list.get(endPos).brailleList.getFirst().value()); list.shiftOffsetsFromIndex(endPos + 1, list.get(endPos).getText().length() + 1, list.get(endPos).brailleList.getFirst().value().length() + 1, list.get(endPos).start);
for(int i = 0; i < itemList.size(); i++) @@ -889,10 +914,6 @@treeView.newTreeItem(list.get(startPos), treeView.getSelectionIndex(), 0); handleSetCurrent(Message.createSetCurrentMessage(Sender.TREE, list.get(list.getCurrentIndex() + 1).start, false));
dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); - - for(int i = 0; i < list.size(); i++){- System.out.println("Start: " + list.get(i).start + "\tEnd: " + list.get(i).end + "\t" + list.get(i).getClass());
- } } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Wed Jul 23 17:43:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Fri Jul 25 18:18:06 2014 UTC
@@ -393,7 +393,9 @@ String xml = getXMLString(e.toXML().toString()); d = getXML(xml); Element parent = d.getRootElement(); - return (Element)parent.removeChild(0); + Element transElement = (Element)parent.removeChild(0); + addNamespace(transElement); + return transElement; } private void removeNode(TextMapElement t, Message message){ @@ -657,23 +659,13 @@ public Element wrapElement(Element e, String type){ if(type.equals("boxline")){ - Element boxline = new Element(semHandler.getElementBySemantic(type)); - Element sb1 = new Element("brl"); - sb1.appendChild(new Text("777777777777777")); - - Element sb2 = new Element("brl"); - sb2.appendChild(new Text("GGGGGGGGGGGGGGG")); - + Element boxline = new Element(semHandler.getElementBySemantic(type)); boxline.addAttribute(new Attribute("semantics","style,boxline")); - boxline.appendChild(sb1); - boxline.appendChild(sb2); - ParentNode parent = e.getParent(); int index = parent.indexOf(e); - boxline.insertChild(parent.removeChild(e), 1); - //boxline.appendChild(parent.removeChild(e)); + boxline.appendChild(parent.removeChild(e)); parent.insertChild(boxline, index); - addNamespace(boxline); + addNamespace(boxline); return boxline; } =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Wed Jul 23 17:43:09 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Jul 25 18:18:06 2014 UTC
@@ -307,8 +307,6 @@ if(view.getLineAtOffset(view.getCaretOffset()) != currentLine) sendStatusBarUpdate(view.getLineAtOffset(view.getCaretOffset())); - - System.out.println("Pos:\t" + view.getCaretOffset()); } }); @@ -503,7 +501,6 @@Message message = Message.createSetCurrentMessage(Sender.TEXT, pos, false);
manager.dispatch(message); setViewData(message);- System.out.println("Start:\t" + currentStart + " CurrentEnd:\t" + currentEnd);
} private void sendDeleteSpaceMessage(int start, int offset){ ============================================================================== Revision: ff7834cb4ac3 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Mon Jul 28 18:33:55 2014 UTCLog: Fixed bug with new boxline element not being added to section element
http://code.google.com/p/brailleblaster/source/detail?r=ff7834cb4ac3 Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/mapping/elements/BrlOnlyMapElement.java /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleTable.java /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewInitializer.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Fri Jul 25 18:18:06 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Mon Jul 28 18:33:55 2014 UTC
@@ -881,7 +881,7 @@BrlOnlyMapElement b1 = new BrlOnlyMapElement(wrapper.getChild(0), (Element)wrapper);
b1.setOffsets(start, start + b1.textLength());b1.setBrailleOffsets(brailleStart, brailleStart + b1.getText().length());
- list.add(startPos, b1); + vi.addElementToSection(list, b1, startPos); text.insertText(start, list.get(startPos).getText() + "\n");braille.insertText(brailleStart, list.get(startPos).brailleList.getFirst().value() + "\n");
@@ -902,7 +902,7 @@BrlOnlyMapElement b2 = new BrlOnlyMapElement(wrapper.getChild(wrapper.getChildCount() - 1), (Element)wrapper);
b2.setOffsets(end + 1, end + 1 + b2.textLength());b2.setBrailleOffsets(brailleEnd + 1, brailleEnd + 1 + b2.getText().length());
- list.add(endPos, b2); + vi.addElementToSection(list, b2, endPos); text.insertText(end, "\n" + list.get(endPos).getText());braille.insertText(brailleEnd, "\n" + list.get(endPos).brailleList.getFirst().value());
=======================================--- /src/main/org/brailleblaster/perspectives/braille/mapping/elements/BrlOnlyMapElement.java Thu Jul 10 17:59:36 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/mapping/elements/BrlOnlyMapElement.java Mon Jul 28 18:33:55 2014 UTC
@@ -35,9 +35,9 @@ public Element parentElement(){ return this.parent; } + public void setBrailleOffsets(int start, int end){ this.brailleList.getFirst().start = start; this.brailleList.getFirst().end = end; } - } =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleTable.java Thu Jul 3 16:07:57 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleTable.java Mon Jul 28 18:33:55 2014 UTC
@@ -380,8 +380,7 @@ disposeFont(editButton); disposeFont(deleteButton); disposeFont(applyButton); - group.dispose(); - + group.dispose(); } private void disposeFont(Button b){ =======================================--- /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewInitializer.java Thu Jul 17 19:46:53 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewInitializer.java Mon Jul 28 18:33:55 2014 UTC
@@ -278,6 +278,47 @@ return position; } ++ /** Adds a new TextMapElement to both the list containing all element in the views and the section map list + * @param list: the visible list containing map elements in the text and braille views
+ * @param t: element to insert+ * @param index: index at which element is being put in visible MapList, also used to determine which section to also add element
+ */+ public void addElementToSection(MapList list, TextMapElement t, int index){
+ int sectionIndex; + //if index is list size then element is appended and not inserted + if(index == list.size()) + sectionIndex = findSectionIndex(list.get(index - 1)); + else + sectionIndex = findSectionIndex(list.get(index)); + + if(sectionIndex != -1){ + SectionElement section = sectionList.get(sectionIndex); + int listIndex; + if(index == list.size()) + section.getList().indexOf(section.getList().add(t)); + else { + listIndex = section.getList().indexOf(section.getList().get(index)); + section.getList().add(listIndex, t); + } + list.add(index, t); + } + } + + /** Used to find a section element by view initializer methods + * @param t: text map element used to find section + * @return int with index value of section in the sectionlist + */ + private int findSectionIndex(TextMapElement t){ + int index = findFirst(); + for(int i = index; i < sectionList.size(); i++){ + if(sectionList.get(i).getList().contains(t)) + return i; + } + + return -1; + } + public ArrayList<SectionElement> getSectionList() { return sectionList; ============================================================================== Revision: c3669c7ebbf3 Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 13:38:39 2014 UTC Log: Fixed bug in opening html based UTD files http://code.google.com/p/brailleblaster/source/detail?r=c3669c7ebbf3 Modified:/src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewFactory.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewFactory.java Thu Jul 3 16:07:57 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewFactory.java Tue Jul 29 13:38:39 2014 UTC
@@ -3,6 +3,7 @@ import org.brailleblaster.archiver.Archiver; import org.brailleblaster.archiver.EPub3Archiver; import org.brailleblaster.archiver.TextArchiver; +import org.brailleblaster.archiver.UTDArchiver; import org.brailleblaster.archiver.WebArchiver; import org.brailleblaster.perspectives.braille.document.BrailleDocument; import org.brailleblaster.perspectives.braille.views.tree.BBTree; @@ -11,7 +12,7 @@ public class ViewFactory {public static ViewInitializer createUpdater(Archiver arch, BrailleDocument doc, TextView text, BrailleView braille, BBTree tree){
- if(arch instanceof EPub3Archiver)+ if(arch instanceof EPub3Archiver || (arch instanceof UTDArchiver && arch.getCurrentConfig().equals("epub.cfg")))
return new EPubInitializer(doc, text, braille, tree); else if(arch instanceof WebArchiver || arch instanceof TextArchiver) return new WebInitializer(doc, text, braille, tree); ============================================================================== Revision: 3123a0d696ae Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 15:38:12 2014 UTC Log: Committing changes before merge http://code.google.com/p/brailleblaster/source/detail?r=3123a0d696ae Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java
=======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Mon Jul 28 18:33:55 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Tue Jul 29 15:38:12 2014 UTC
@@ -861,12 +861,18 @@ new Notify(lh.localValue("nothingToApply")); }+ /** Wraps a block level element in the appropriate tag then translates and adds boxline brl top and bottom nodes + * @param p: parent of text nodes, the block element to be wrapped in a boxline
+ * @param m: message passed to views containing offset positions + * @param itemList: arraylist containing text nodes of the block element + */private void createBoxline(Element p, Message m, ArrayList<TextMapElement> itemList){
Element wrapper = document.wrapElement(p, "boxline"); if(wrapper != null){ Element boxline = document.translateElement((Element)wrapper.copy()); int startPos = list.indexOf(itemList.get(0)); + //find start position int start, brailleStart;if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesBefore)){
start = (Integer)m.getValue("prev"); @@ -877,16 +883,19 @@ brailleStart = itemList.get(0).brailleList.getFirst().start; } + //insert top boxline wrapper.insertChild(boxline.removeChild(0), 0);BrlOnlyMapElement b1 = new BrlOnlyMapElement(wrapper.getChild(0), (Element)wrapper);
b1.setOffsets(start, start + b1.textLength());b1.setBrailleOffsets(brailleStart, brailleStart + b1.getText().length());
vi.addElementToSection(list, b1, startPos); + //set text text.insertText(start, list.get(startPos).getText() + "\n");braille.insertText(brailleStart, list.get(startPos).brailleList.getFirst().value() + "\n"); list.shiftOffsetsFromIndex(startPos + 1, list.get(startPos).getText().length() + 1, list.get(startPos).brailleList.getFirst().value().length() + 1, list.get(startPos + 1).start);
+ //find end position int endPos = list.indexOf(itemList.get(itemList.size() - 1)) + 1; int end, brailleEnd;if(m.contains("previousStyle") && ((Styles)m.getValue("previousStyle")).contains(StylesType.linesAfter)){
@@ -898,19 +907,23 @@brailleEnd = itemList.get(itemList.size() - 1).brailleList.getLast().end;
} + //insert bottom boxline wrapper.appendChild(boxline.removeChild(boxline.getChildCount() - 1));BrlOnlyMapElement b2 = new BrlOnlyMapElement(wrapper.getChild(wrapper.getChildCount() - 1), (Element)wrapper);
b2.setOffsets(end + 1, end + 1 + b2.textLength());b2.setBrailleOffsets(brailleEnd + 1, brailleEnd + 1 + b2.getText().length());
vi.addElementToSection(list, b2, endPos); + //set text text.insertText(end, "\n" + list.get(endPos).getText());braille.insertText(brailleEnd, "\n" + list.get(endPos).brailleList.getFirst().value()); list.shiftOffsetsFromIndex(endPos + 1, list.get(endPos).getText().length() + 1, list.get(endPos).brailleList.getFirst().value().length() + 1, list.get(endPos).start);
+ //remove items from tree for(int i = 0; i < itemList.size(); i++) treeView.removeItem(itemList.get(i), new Message(null)); + //add aside or sidebar to treetreeView.newTreeItem(list.get(startPos), treeView.getSelectionIndex(), 0); handleSetCurrent(Message.createSetCurrentMessage(Sender.TREE, list.get(list.getCurrentIndex() + 1).start, false));
dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); =======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Fri Jul 25 18:18:06 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Tue Jul 29 15:38:12 2014 UTC
@@ -656,7 +656,6 @@ return null; } - public Element wrapElement(Element e, String type){ if(type.equals("boxline")){ Element boxline = new Element(semHandler.getElementBySemantic(type)); ============================================================================== Revision: 73ad8f58eb4a Branch: default Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> Date: Tue Jul 29 15:38:38 2014 UTC Log: merged with main branch http://code.google.com/p/brailleblaster/source/detail?r=73ad8f58eb4a Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Fri Jul 25 18:18:06 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Tue Jul 29 15:38:38 2014 UTC
@@ -103,6 +103,8 @@ private PaintObjectListener paintObjListener; private int originalStart, originalEnd; private TextMapElement currentElement; + int startSelection; + int endSelection;public TextView (Manager manager, Group documentWindow, BBSemanticsTable table) { super (manager, documentWindow, LEFT_MARGIN, RIGHT_MARGIN, TOP_MARGIN, BOTTOM_MARGIN, table);
@@ -117,7 +119,16 @@ view.addSelectionListener(selectionListener = new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { + selectionArray = view.getSelectionRanges(); + //Added this part for start and end of text selection + for (int i = 0; i < selectionArray.length-1; i++) { + startSelection=selectionArray[i]; + endSelection=selectionArray[i]+selectionArray[i+1]; + + + } + System.out.println(startSelection+" "+endSelection); if(selectionArray[1] > 0){ setSelection(selectionArray[0], selectionArray[1]); currentChar = ' ';