Revision: f26934b00ff7 Branch: rt1835-UndoRemoveElement Author: Brandon Roller<brandon.r.roller@xxxxxxxxx> Date: Mon Dec 1 16:01:25 2014 UTC Log: Refactored code for removing elements https://code.google.com/p/brailleblaster/source/detail?r=f26934b00ff7 Added:/src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java
Modified: /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java
/src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java /src/main/org/brailleblaster/perspectives/braille/messages/BBEvent.java /src/main/org/brailleblaster/perspectives/braille/messages/Message.java /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java ======================================= --- /dev/null+++ /src/main/org/brailleblaster/perspectives/braille/stylers/ElementRemover.java Mon Dec 1 16:01:25 2014 UTC
@@ -0,0 +1,75 @@ +package org.brailleblaster.perspectives.braille.stylers; + +import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.perspectives.braille.eventQueue.EventFrame;+import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
+import org.brailleblaster.perspectives.braille.mapping.maps.MapList; +import org.brailleblaster.perspectives.braille.messages.Message;+import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+import org.brailleblaster.perspectives.braille.views.tree.BBTree; +import org.brailleblaster.perspectives.braille.views.wp.BrailleView; +import org.brailleblaster.perspectives.braille.views.wp.TextView; + +public class ElementRemover { + Manager manager; + MapList list; + TextView text; + BrailleView braille; + BBTree tree; + ViewInitializer vi; + EventFrame eventFrame; + + public ElementRemover(Manager manager, MapList list, ViewInitializer vi){ + this.manager = manager; + this.list = list; + this.vi = vi; + text = manager.getText(); + braille = manager.getBraille(); + tree = manager.getTreeView(); + } + + public void removeNode(Message m){ + int index = (Integer)m.getValue("index"); + if(list.get(index).isMathML() ) + removeMathMLElement(m); + else + removeElement(m); + } + + private void removeElement(Message message){ + int index = (Integer)message.getValue("index"); + tree.removeItem(list.get(index), message); + manager.getDocument().updateDOM(list, message); + list.get(index).brailleList.clear(); + vi.remove(list, index); + + if(list.size() == 0){ + text.removeListeners(); + braille.removeListeners(); + tree.removeListeners(); + list.clearList(); + text.view.setEditable(false); + } + } + + private void removeMathMLElement(Message m){ + int index = (Integer)m.getValue("index"); + TextMapElement t = list.get(index); + m.put("start", t.start); + manager.getDocument().updateDOM(list, m); + braille.removeMathML(t); + text.removeMathML(m); + tree.removeMathML(t); + index = list.indexOf(t); + list.updateOffsets(index, m); + vi.remove(list, index); + + if(list.size() == 0){ + text.removeListeners(); + braille.removeListeners(); + tree.removeListeners(); + list.clearList(); + text.view.setEditable(false); + } + } +} =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Tue Nov 25 18:49:04 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Mon Dec 1 16:01:25 2014 UTC
@@ -73,6 +73,7 @@import org.brailleblaster.perspectives.braille.spellcheck.SpellCheckManager;
import org.brailleblaster.perspectives.braille.stylepanel.StyleManager; import org.brailleblaster.perspectives.braille.stylers.BoxlineHandler; +import org.brailleblaster.perspectives.braille.stylers.ElementRemover; import org.brailleblaster.perspectives.braille.stylers.HideActionHandler; import org.brailleblaster.search.*; import org.brailleblaster.perspectives.braille.viewInitializer.ViewFactory; @@ -265,12 +266,10 @@ PropertyFileManager pfm = BBIni.getPropertyFileManager(); String view = pfm.getProperty("editorView"); if(view != null){ - if(view.equals(text.getClass().getCanonicalName())){ + if(view.equals(text.getClass().getCanonicalName())) editorSash.setMaximizedControl(text.view); - } - else if(view.equals(braille.getClass().getCanonicalName())){ + else if(view.equals(braille.getClass().getCanonicalName())) editorSash.setMaximizedControl(braille.view); - } } } @@ -444,9 +443,6 @@ case REMOVE_NODE: handleRemoveNode(message); break; - case REMOVE_MATHML: - handleRemoveMathML(message); - break; case UPDATE_STATUSBAR: handleUpdateStatusBar(message); break; @@ -513,11 +509,8 @@ if(secList.get(i).getParent().equals(e)){ if(secList.get(i).isVisible()) list.findTextMapElements(message); - else { + else secList.get(i).getList().findTextMapElements(message); - //list = vi.resetViews(i); - //list.findTextMapElements(message); - } } } } @@ -662,7 +655,7 @@ private void handleUpdate(Message message){ message.put("selection", treeView.getSelection(list.getCurrent())); if(list.getCurrent().isMathML()){- handleRemoveMathML(Message.createRemoveMathMLMessage((Integer)message.getValue("offset"), list.getCurrent().end - list.getCurrent().start, list.getCurrent())); + handleRemoveNode(Message.createRemoveNodeMessage(list.getCurrentIndex(), list.getCurrent().end - list.getCurrent().start));
message.put("diff", 0); } else { @@ -725,14 +718,12 @@Styles style = styles.get(styles.getKeyFromAttribute(document.getParent(list.get(currentIndex).n, true)));
if(style.contains(StylesType.linesBefore)){- for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesBefore)) + 1; i++){ + for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesBefore)) + 1; i++)
insertionString += "\n"; - } } else if(style.contains(StylesType.linesAfter)){- for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesAfter)) + 1; i++){ + for(int i = 0; i < Integer.valueOf((String)style.get(StylesType.linesAfter)) + 1; i++)
insertionString += "\n"; - } } else { insertionString = "\n"; @@ -843,40 +834,8 @@ } private void handleRemoveNode(Message message){ - int index = (Integer)message.getValue("index"); - treeView.removeItem(list.get(index), message); - document.updateDOM(list, message); - list.get(index).brailleList.clear(); - vi.remove(list, index); - //list.remove(index); - - if(list.size() == 0){ - text.removeListeners(); - braille.removeListeners(); - treeView.removeListeners(); - list.clearList(); - text.view.setEditable(false); - } - } - - private void handleRemoveMathML(Message m){ - TextMapElement t = (TextMapElement)m.getValue("TextMapElement"); - document.updateDOM(list, m); - braille.removeMathML(t); - text.removeMathML(m); - treeView.removeMathML(t); - int index = list.indexOf(t); - list.updateOffsets(index, m); - vi.remove(list, index); - //list.remove(t); - - if(list.size() == 0){ - text.removeListeners(); - braille.removeListeners(); - treeView.removeListeners(); - list.clearList(); - text.view.setEditable(false); - } + ElementRemover er = new ElementRemover(this, list, vi); + er.removeNode(message); } private void handleUpdateStatusBar(Message message){ @@ -979,7 +938,6 @@ } } } -/** Prepares object needed by boxline handler to create boxline around a single element * @param message: Message object passed containing information from style table manager
@@ -1242,9 +1200,8 @@ } public void printPreview(){ - if(braille.view.getCharCount() > 0){ + if(braille.view.getCharCount() > 0) new PrintPreview(this.getDisplay(), document, this); - } }private void setCurrentOnRefresh(Sender sender, int offset, boolean isBraille){
@@ -1356,8 +1313,6 @@ if(index != -1) vi.bufferViews(index); - //if(arch.getOrigDocPath() == null && list.size() == 0) - // formatTemplateDocument(); } catch (IOException e) {new Notify("An error occurred while refreshing the document. Please save your work and try again.");
@@ -1539,8 +1494,7 @@ j=t.end+1; } - else - { + else { j=j+1; } } @@ -1891,5 +1845,4 @@ if(!BBIni.debugging()) new Notify(notify); } - } =======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Tue Oct 7 17:55:13 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Mon Dec 1 16:01:25 2014 UTC
@@ -58,10 +58,7 @@ updateNode(list, message); break; case REMOVE_NODE: - removeNode(list.get((Integer)message.getValue("index")), message); - break; - case REMOVE_MATHML:- removeMathML((TextMapElement)message.getValue("TextMapElement"), message);
+ removeNode(list, message); break; default: System.out.println("No available operations for this message type"); @@ -141,7 +138,6 @@ parent.insertChild(p, nodeIndex + 1);vi.addElementToSection(list, new TextMapElement(textOffset, textOffset, p.getChild(0)), index); - //list.add(index, new TextMapElement(textOffset, textOffset, p.getChild(0)));
Element brl = new Element("brl"); brl.appendChild(new Text("")); @@ -296,6 +292,38 @@ m.put("brailleLength", 0); m.put("newBrailleLength", insertionString.length()); } + + private void removeNode(MapList list, Message message){ + int index = (Integer)message.getValue("index"); + if(list.get(index).isMathML()) + removeMathML(list.get(index), message); + else + removeNode(list.get((Integer)message.getValue("index")), message); + } ++ /** Removes a node from the DOM, checks whether other children exists, if not the entire element is removed
+ * @param t : TextMapElement containing node to remove + * @param message : message to put element information + */ + private void removeNode(TextMapElement t, Message message){+ if(hasNonBrailleChildren(t.parentElement()) && !(t.n instanceof Element)){
+ Element e = (Element)t.brailleList.getFirst().n.getParent(); + t.parentElement().removeChild(e); + t.parentElement().removeChild(t.n); + } + else { + Element parent = t.parentElement(); + while(!parent.getAttributeValue("semantics").contains("style")){ + if(((Element)parent.getParent()).getChildElements().size() <= 1) + parent = (Element)parent.getParent(); + else + break; + } + + message.put("element", parent); + parent.getParent().removeChild(parent); + } + } /** Removes MathML from DOM * @param t : TextMapElemetn to remove @@ -308,9 +336,8 @@ int index = parent.indexOf(t.n); parent.removeChild(index);- while(index < parent.getChildCount() && parent.getChild(index) instanceof Element && ((Element)parent.getChild(index)).getLocalName().equals("brl")){ + while(index < parent.getChildCount() && parent.getChild(index) instanceof Element && ((Element)parent.getChild(index)).getLocalName().equals("brl"))
parent.removeChild(index); - } if(parent.getChildElements().size() == 0) parent.getParent().removeChild(parent); @@ -492,30 +519,6 @@ d = getXML(xml); return d; } -- /** Removes a node from the DOM, checks whether other children exists, if not the entire element is removed
- * @param t : TextMapElement containing node to remove - * @param message : message to put element information - */ - private void removeNode(TextMapElement t, Message message){- if(hasNonBrailleChildren(t.parentElement()) && !(t.n instanceof Element)){
- Element e = (Element)t.brailleList.getFirst().n.getParent(); - t.parentElement().removeChild(e); - t.parentElement().removeChild(t.n); - } - else { - Element parent = t.parentElement(); - while(!parent.getAttributeValue("semantics").contains("style")){ - if(((Element)parent.getParent()).getChildElements().size() <= 1) - parent = (Element)parent.getParent(); - else - break; - } - - message.put("element", parent); - parent.getParent().removeChild(parent); - } - } /** Checks if an element contains other elements other than brl * @param e : Element to check @@ -837,17 +840,14 @@ boxline.addAttribute(new Attribute("semantics","style,boxline")); for(int i = 0; i < parents.size(); i++){ Element parent = (Element)parents.get(i).getParent(); - // int index = parent.indexOf(parents.get(i)); if(!parents.contains(parent)) boxline.appendChild(parent.removeChild(parents.get(i))); } - //if(parent != null){ grandparent.insertChild(boxline, grandParentIndex); addNamespace(boxline); return boxline; - //} } return null; =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Tue Nov 25 18:49:04 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/RedoQueue.java Mon Dec 1 16:01:25 2014 UTC
@@ -3,8 +3,6 @@ import org.brailleblaster.document.BBDocument; import org.brailleblaster.perspectives.braille.Manager; import org.brailleblaster.perspectives.braille.mapping.maps.MapList; -import org.brailleblaster.perspectives.braille.messages.Message; -import org.brailleblaster.perspectives.braille.messages.Sender; import org.brailleblaster.perspectives.braille.stylers.HideActionHandler;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
=======================================--- /src/main/org/brailleblaster/perspectives/braille/messages/BBEvent.java Tue Apr 15 14:34:57 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/messages/BBEvent.java Mon Dec 1 16:01:25 2014 UTC
@@ -47,6 +47,5 @@ UPDATE_SCROLLBAR, UPDATE_STYLE, ADJUST_RANGE, - REMOVE_MATHML, SPLIT_TREE; } =======================================--- /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Mon Sep 8 17:22:10 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Mon Dec 1 16:01:25 2014 UTC
@@ -164,15 +164,6 @@ return m; } -- public static Message createRemoveMathMLMessage(int offset, int length, TextMapElement t){
- Message m = new Message(BBEvent.REMOVE_MATHML); - m.put("start", offset); - m.put("length", length); - m.put("TextMapElement", t); - - return m; - }public static Message createSplitTreeMessage(int firstElementIndex, int secondElementIndex, int currentIndex, int treeIndex){
Message m = new Message(BBEvent.SPLIT_TREE); =======================================--- /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Tue Nov 25 18:49:04 2014 UTC +++ /src/main/org/brailleblaster/perspectives/braille/views/wp/TextView.java Mon Dec 1 16:01:25 2014 UTC
@@ -88,6 +88,7 @@ private boolean textChanged, readOnly; private StyleRange range; private int[] selectionArray; + private SelectionAdapter selectionListener; private TraverseListener traverseListener; private SelectionAdapter scrollbarListener; @@ -98,16 +99,13 @@ private CaretListener caretListener; private MouseAdapter mouseListener; private PaintObjectListener paintObjListener; + private int originalStart, originalEnd; private TextMapElement currentElement; private EditMenu menu; - - int startSelection; - int endSelection; private boolean multiSelected; -public TextView (Manager manager, SashForm sash, BBSemanticsTable table) {
super (manager, sash, table); this.total = 0; @@ -480,7 +478,7 @@ } private void sendRemoveMathML(TextMapElement t){- Message removeMessage = Message.createRemoveMathMLMessage(t.start, -(t.end - t.start), t); + Message removeMessage = Message.createRemoveNodeMessage(manager.indexOf(t), -(t.end - t.start));
removeMessage.put("offset", currentChanges); manager.dispatch(removeMessage); currentChanges = 0;