Try now. A boxline consists of two lines with a repeating pattern of braille dots above and below a piece of text. It's something that transcribers use a lot in text books. It is in the style panel. On Tue, Jul 29, 2014 at 1:22 PM, Vic Beckley <vic.beckley3@xxxxxxxxx> wrote: > Brandon, > > What are boxlines and how do you add them? > > Thanks for any info on this. > > > Best regards from Ohio, > > Vic > > > -----Original Message----- > From: brailleblaster-bounce@xxxxxxxxxxxxx > [mailto:brailleblaster-bounce@xxxxxxxxxxxxx] On Behalf Of > brailleblaster@xxxxxxxxxxxxxx > Sent: Tuesday, July 29, 2014 12:56 PM > To: brailleblaster@xxxxxxxxxxxxx > Subject: [brailleblaster] 6 new revisions pushed by brandon....@xxxxxxxxx > on > 2014-07-29 16:55 GMT > > 6 new revisions: > > Revision: dd8a9cda2e13 > Branch: default > Author: Brandon Roller <brandon.r.roller@xxxxxxxxx> > Date: Wed Jul 23 17:43:09 2014 UTC > Log: 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 UTC > Log: 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 UTC > Log: 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 UTC > Log: 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.j > ava > > /src/main/org/brailleblaster/perspectives/braille/stylepanel/EditPanel.java > > > /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.ja > va > /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.j > ava > Thu Jul 17 11:34:16 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.j > ava > 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 UI > final 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.ja > va > Thu Jul 3 16:07:57 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleManager.ja > va > 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 UTC > Log: 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.j > ava > /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.j > ava > Wed Jul 23 17:43:09 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.j > ava > 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 UTC > Log: 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/BrlOnlyMa > pElement.java > > > /src/main/org/brailleblaster/perspectives/braille/stylepanel/StyleTable.java > > > /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewInitia > lizer.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/BrlOnlyMa > pElement.java > Thu Jul 10 17:59:36 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/mapping/elements/BrlOnlyMa > pElement.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/ViewInitia > lizer.java > Thu Jul 17 19:46:53 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewInitia > lizer.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/ViewFactor > y.java > > ======================================= > --- > > /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewFactor > y.java > Thu Jul 3 16:07:57 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/viewInitializer/ViewFactor > y.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.j > ava > > ======================================= > --- /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 tree > 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)); > ======================================= > --- > > /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.j > ava > Fri Jul 25 18:18:06 2014 UTC > +++ > > /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.j > ava > 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 = ' '; > > >