1 7 8 package org.netbeans.modules.xml.schema.model.impl.xdm; 9 10 import java.util.ArrayList ; 11 import javax.swing.event.UndoableEditEvent ; 12 import javax.swing.event.UndoableEditListener ; 13 import javax.swing.undo.CompoundEdit ; 14 import javax.swing.undo.UndoManager ; 15 import junit.framework.*; 16 import org.netbeans.editor.BaseDocument; 17 import org.netbeans.modules.xml.schema.model.*; 18 import org.netbeans.modules.xml.xam.ComponentEvent; 19 import org.netbeans.modules.xml.xam.ComponentListener; 20 import org.netbeans.modules.xml.xam.dom.DocumentComponent; 21 22 26 public class UndoRedoTest extends TestCase { 27 28 public UndoRedoTest(String testName) { 29 super(testName); 30 } 31 @Override 32 protected void setUp() throws Exception { 33 34 } 35 36 @Override 37 protected void tearDown() { 38 TestCatalogModel.getDefault().clearDocumentPool(); 39 } 40 41 class TestComponentListener implements ComponentListener { 42 ArrayList <ComponentEvent> accu = new ArrayList <ComponentEvent>(); 43 public void valueChanged(ComponentEvent evt) { 44 accu.add(evt); 45 } 46 public void childrenAdded(ComponentEvent evt) { 47 accu.add(evt); 48 } 49 public void childrenDeleted(ComponentEvent evt) { 50 accu.add(evt); 51 } 52 public void reset() { accu.clear(); } 53 public int getEventCount() { return accu.size(); } 54 public java.util.List <ComponentEvent> getEvents() { return accu; } 55 56 private void assertEvent(ComponentEvent.EventType type, DocumentComponent source) { 57 for (ComponentEvent e : accu) { 58 if (e.getEventType().equals(type) && 59 e.getSource() == source) { 60 return; 61 } 62 } 63 assertTrue("Expect component change event " + type +" on source " + source + 64 ". Instead received: " + accu, false); 65 } 66 } 67 68 public void testIssue83963() throws Exception { 69 SchemaModel model = Util.loadSchemaModel("resources/undoredo.xsd"); 70 BaseDocument doc = (BaseDocument) model.getModelSource(). 71 getLookup().lookup(BaseDocument.class); 72 Schema s = model.getSchema(); 73 TestComponentListener listener = new TestComponentListener(); 74 model.addComponentListener(listener); 75 UndoManager ur = new UndoManager (); 76 model.addUndoableEditListener(ur); 77 78 String original = doc.getText(0, doc.getLength()); 79 GlobalComplexType gct = model.getFactory().createGlobalComplexType(); 81 model.startTransaction(); 82 s.addComplexType(gct); 83 model.endTransaction(); 84 model.removeUndoableEditListener(ur); 85 doc.addUndoableEditListener(ur); 86 87 89 String stStr = " <xsd:simpleType name=\"lend\">\n <xsd:list>\n <xsd:simpleType>\n <xsd:restriction base=\"xsd:string\"/>\n </xsd:simpleType>\n </xsd:list>\n </xsd:simpleType>"; 90 91 String afterInsert = doc.getText(0, doc.getLength()); 92 doc.insertString(290, "\n", null); 94 model.sync(); 95 doc.insertString(291, stStr, null); 96 model.sync(); 97 98 ur.undo(); 100 ur.undo(); 102 assertEquals(afterInsert,doc.getText(0, doc.getLength())); 103 ur.undo(); 105 assertEquals(original, doc.getText(0, doc.getLength())); 107 108 ur.redo(); 109 assertEquals(afterInsert,doc.getText(0, doc.getLength())); 110 ur.redo(); 112 ur.redo(); 114 } 116 117 public void testIssue83963_1() throws Exception { 118 SchemaModel model = Util.loadSchemaModel("resources/undoredo.xsd"); 119 BaseDocument doc = (BaseDocument) model.getModelSource(). 120 getLookup().lookup(BaseDocument.class); 121 Schema s = model.getSchema(); 122 TestComponentListener listener = new TestComponentListener(); 123 model.addComponentListener(listener); 124 UndoManager ur = new UndoManager (); 125 model.addUndoableEditListener(ur); 126 doc.removeUndoableEditListener(ur); 127 128 GlobalComplexType gct = model.getFactory().createGlobalComplexType(); 130 doc.insertString(271, "<complexType/>",null); 131 132 134 String stStr = " <xsd:simpleType name=\"lend\">\n <xsd:list>\n <xsd:simpleType>\n <xsd:restriction base=\"xsd:string\"/>\n </xsd:simpleType>\n </xsd:list>\n </xsd:simpleType>"; 135 model.sync(); 136 137 doc.insertString(285, "\n", null); 138 model.sync(); 139 doc.insertString(286, stStr, null); 140 model.sync(); 141 142 ur.undo(); 144 ur.undo(); 146 ur.undo(); 148 150 ur.redo(); 151 ur.redo(); 153 ur.redo(); 155 } 157 private SchemaModel model; 158 159 } 160 | Popular Tags |