KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > schema > model > impl > xdm > UndoRedoTest


1 /*
2  * MergeTest.java
3  * JUnit based test
4  *
5  * Created on October 28, 2005, 3:40 PM
6  */

7
8 package org.netbeans.modules.xml.schema.model.impl.xdm;
9
10 import java.util.ArrayList JavaDoc;
11 import javax.swing.event.UndoableEditEvent JavaDoc;
12 import javax.swing.event.UndoableEditListener JavaDoc;
13 import javax.swing.undo.CompoundEdit JavaDoc;
14 import javax.swing.undo.UndoManager JavaDoc;
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 /**
23  *
24  * @author Ayub Khan
25  */

26 public class UndoRedoTest extends TestCase {
27     
28     public UndoRedoTest(String JavaDoc testName) {
29         super(testName);
30     }
31     @Override JavaDoc
32             protected void setUp() throws Exception JavaDoc {
33         
34     }
35     
36     @Override JavaDoc
37             protected void tearDown() {
38         TestCatalogModel.getDefault().clearDocumentPool();
39     }
40     
41     class TestComponentListener implements ComponentListener {
42         ArrayList JavaDoc<ComponentEvent> accu = new ArrayList JavaDoc<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 JavaDoc<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 JavaDoc {
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 JavaDoc ur = new UndoManager JavaDoc();
76         model.addUndoableEditListener(ur);
77         
78         String JavaDoc original = doc.getText(0, doc.getLength());
79         //System.out.println("doc before add ComplexType"+doc.getText(0, doc.getLength()));
80
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         //System.out.println("doc after add ComplexType"+doc.getText(0, doc.getLength()));
88

89         String JavaDoc 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 JavaDoc afterInsert = doc.getText(0, doc.getLength());
92         //System.out.println("doc after insert simpleType"+doc.getText(290, 10));
93
doc.insertString(290, "\n", null);
94         model.sync();
95         doc.insertString(291, stStr, null);
96         model.sync();
97         
98         //System.out.println("doc after insert simpleType"+doc.getText(0, doc.getLength()));
99
ur.undo();
100         //System.out.println("doc after first undo"+doc.getText(0, doc.getLength()));
101
ur.undo();
102         assertEquals(afterInsert,doc.getText(0, doc.getLength()));
103         //System.out.println("doc after second undo"+doc.getText(0, doc.getLength()));
104
ur.undo();
105         //System.out.println("doc after third undo"+doc.getText(0, doc.getLength()));
106
assertEquals(original, doc.getText(0, doc.getLength()));
107         
108         ur.redo();
109         assertEquals(afterInsert,doc.getText(0, doc.getLength()));
110         //System.out.println("doc after first redo"+doc.getText(0, doc.getLength()));
111
ur.redo();
112         //System.out.println("doc after second redo"+doc.getText(0, doc.getLength()));
113
ur.redo();
114         //System.out.println("doc after third redo"+doc.getText(0, doc.getLength()));
115
}
116     
117     public void testIssue83963_1() throws Exception JavaDoc {
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 JavaDoc ur = new UndoManager JavaDoc();
125         model.addUndoableEditListener(ur);
126         doc.removeUndoableEditListener(ur);
127         
128         //System.out.println("doc before add ComplexType"+doc.getText(0, doc.getLength()));
129
GlobalComplexType gct = model.getFactory().createGlobalComplexType();
130         doc.insertString(271, "<complexType/>",null);
131         
132         //System.out.println("doc after add ComplexType"+doc.getText(0, doc.getLength()));
133

134         String JavaDoc 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         //System.out.println("doc after insert simpleType"+doc.getText(0, doc.getLength()));
143
ur.undo();
144         //System.out.println("doc after first undo"+doc.getText(0, doc.getLength()));
145
ur.undo();
146         //System.out.println("doc after second undo"+doc.getText(0, doc.getLength()));
147
ur.undo();
148         //System.out.println("doc after third undo"+doc.getText(0, doc.getLength()));
149

150         ur.redo();
151         //System.out.println("doc after first redo"+doc.getText(0, doc.getLength()));
152
ur.redo();
153         //System.out.println("doc after second redo"+doc.getText(0, doc.getLength()));
154
ur.redo();
155         //System.out.println("doc after third redo"+doc.getText(0, doc.getLength()));
156
}
157     private SchemaModel model;
158     
159 }
160
Popular Tags