1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package ifc.awt.tree;
29 
30 import com.sun.star.awt.tree.ExpandVetoException;
31 import com.sun.star.awt.tree.TreeExpansionEvent;
32 import com.sun.star.awt.tree.XMutableTreeNode;
33 import com.sun.star.awt.tree.XTreeControl;
34 import com.sun.star.awt.tree.XTreeEditListener;
35 import com.sun.star.awt.tree.XTreeExpansionListener;
36 import com.sun.star.awt.tree.XTreeNode;
37 import com.sun.star.lang.EventObject;
38 import com.sun.star.util.VetoException;
39 import lib.MultiMethodTest;
40 import lib.Status;
41 import lib.StatusException;
42 
43 /**
44  * Testing <code>com.sun.star.awt.tree.XTreeControl</code>
45  * interface methods :
46  * <ul>
47  *  <li><code> isNodeExpanded()</code></li>
48  *  <li><code> isNodeCollapsed()</code></li>
49  *  <li><code> makeNodeVisible()</code></li>
50  *  <li><code> isNodeVisible()</code></li>
51  *  <li><code> expandNode()</code></li>
52  *  <li><code> collapseNode()</code></li>
53  *  <li><code> addTreeExpansionListener()</code></li>
54  *  <li><code> removeTreeExpansionListener()</code></li>
55  *  <li><code> getNodeForLocation()</code></li>
56  *  <li><code> getClosestNodeForLocation()</code></li>
57  *  <li><code> isEditing()</code></li>
58  *  <li><code> stopEditing()</code></li>
59  *  <li><code> cancelEditing()</code></li>
60  *  <li><code> startEditingAtNode()</code></li>
61  *  <li><code> addTreeEditListener()</code></li>
62  *  <li><code> removeTreeEditListener()</code></li>
63  *  <li><code> DefaultExpandedGraphicURL()</code></li>
64  *  <li><code> DefaultCollapsedGraphicURL()</code></li>* </ul> <p>
65  * Test is <b> NOT </b> multithread compilant. <p>
66  *
67  * @see com.sun.star.awt.tree.XTreeControl
68  */
69 public class _XTreeControl extends MultiMethodTest {
70 
71     public XTreeControl oObj = null;
72 
73     private XMutableTreeNode mNewNode = null;
74 
75     private XMutableTreeNode mXNode = null;
76 
77     XTreeExpansionListener mTreeExpansionListener1 = new TreeExpansionListenerImpl1();
78 
79     XTreeExpansionListener mTreeExpansionListener2 = new TreeExpansionListenerImpl2();
80 
81     XTreeEditListener mTreeEditListener1 = new TreeEditListenerImpl1();
82 
83     XTreeEditListener mTreeEditListener2 = new TreeEditListenerImpl2();
84 
85     boolean mTreeExpanded1 = false;
86     boolean mTreeExpanding1 = false;
87     boolean mTreeCollapsed1 = false;
88     boolean mTreeCollapsing1 = false;
89 
90     boolean mTreeExpanded2 = false;
91     boolean mTreeExpanding2 = false;
92     boolean mTreeCollapsed2 = false;
93     boolean mTreeCollapsing2 = false;
94 
95     boolean mTreeNodeEditing1 = false;
96     boolean mTreeNodeEdit1 = false;
97 
98     boolean mTreeNodeEditing2 = false;
99     boolean mTreeNodeEdit2 = false;
100 
101     public static interface XTreeDataModelListenerEvent{
102         public void fireEvent();
103     }
104 
105     public class TreeExpansionListenerImpl1 implements XTreeExpansionListener{
106         public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) {
107             log.println("event at ExpansionListener 1: requestChildNodes");
108         }
109 
110         public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException {
111             log.println("event at ExpansionListener 1: treeExpanding");
112             mTreeExpanding1 = true;
113         }
114 
115         public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException {
116             log.println("event at ExpansionListener 1: treeCollapsing");
117             mTreeCollapsing1 = true;
118         }
119 
120         public void treeExpanded(TreeExpansionEvent treeExpansionEvent) {
121             log.println("event at ExpansionListener 1: treeExpanded");
122             mTreeExpanded1 = true;
123         }
124 
125         public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) {
126             log.println("event at ExpansionListener 1: treeCollapsed");
127             mTreeCollapsed1 = true;
128         }
129 
130         public void disposing(EventObject eventObject) {
131             log.println("event at ExpansionListener 1: disposing");
132         }
133     }
134 
135     public class TreeExpansionListenerImpl2 implements XTreeExpansionListener{
136         public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) {
137             log.println("event at ExpansionListener 2: requestChildNodes");
138         }
139 
140         public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException {
141             log.println("event at ExpansionListener 2: treeExpanding");
142             mTreeExpanding2 = true;
143         }
144 
145         public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException {
146             log.println("event at ExpansionListener 2: treeCollapsing");
147             mTreeCollapsing2 = true;
148         }
149 
150         public void treeExpanded(TreeExpansionEvent treeExpansionEvent) {
151             log.println("event at ExpansionListener 2: treeExpanded");
152             mTreeExpanded2 = true;
153         }
154 
155         public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) {
156             log.println("event at ExpansionListener 2: treeCollapsed");
157             mTreeCollapsed2 = true;
158         }
159 
160         public void disposing(EventObject eventObject) {
161             log.println("event at ExpansionListener 2: disposing");
162         }
163 
164     }
165 
166     public class TreeEditListenerImpl1 implements XTreeEditListener{
167         public void nodeEditing(XTreeNode xTreeNode) throws VetoException {
168             log.println("event at EditListener 1: nodeEditing");
169             mTreeNodeEditing1 = true;
170         }
171 
172         public void nodeEdited(XTreeNode xTreeNode, String string) {
173             log.println("event at EditListener 1: nodeEdited");
174             mTreeNodeEdit1 = true;
175         }
176 
177         public void disposing(EventObject eventObject) {
178             log.println("event at EditListener 1: disposing");
179         }
180     }
181 
182     public class TreeEditListenerImpl2 implements XTreeEditListener{
183         public void nodeEditing(XTreeNode xTreeNode) throws VetoException {
184             log.println("event at EditListener 2: nodeEditing");
185             mTreeNodeEditing2 = true;
186 
187         }
188 
189         public void nodeEdited(XTreeNode xTreeNode, String string) {
190             log.println("event at EditListener 2: nodeEdited");
191             mTreeNodeEdit2 = true;
192         }
193 
194         public void disposing(EventObject eventObject) {
195             log.println("event at EditListener 2: disposing");
196         }
197     }
198 
199     private void resetTreeExpandingListener(){
200         mTreeExpanded1 = false;
201         mTreeExpanded2 = false;
202         mTreeCollapsed1 = false;
203         mTreeCollapsed2 = false;
204         mTreeExpanding1 = false;
205         mTreeExpanding2 = false;
206         mTreeCollapsing1 = false;
207         mTreeCollapsing2 = false;
208     }
209 
210     private void resetEditListener(){
211         mTreeNodeEditing1 = false;
212         mTreeNodeEdit1 = false;
213         mTreeNodeEditing2 = false;
214         mTreeNodeEdit2 = false;
215     }
216 
217     public void before(){
218         mXNode = (XMutableTreeNode) tEnv.getObjRelation("XTreeControl_Node");
219         if (mXNode == null) {
220             throw new StatusException(Status.failed("ERROR: could not get object relation 'XTreeControl_Node'"));
221         }
222     }
223 
224     public void _isNodeExpanded() throws ExpandVetoException{
225 
226         boolean bOK = true;
227 
228         boolean isExpanded = false;
229 
230         try {
231             isExpanded = oObj.isNodeExpanded(mXNode);
232             log.println("node is expanded: " + isExpanded);
233 
234         } catch (com.sun.star.lang.IllegalArgumentException ex) {
235             bOK = false;
236             log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString());
237         }
238 
239         if (isExpanded)
240             try {
241 
242                 log.println("try to collapse node...");
243                 oObj.collapseNode(mXNode);
244 
245             } catch (ExpandVetoException ex) {
246                 bOK = false;
247                 log.println("ERROR: could not collapse node: " + ex.toString());
248             } catch (com.sun.star.lang.IllegalArgumentException ex) {
249                 bOK = false;
250                 log.println("ERROR: could not collapse node: " + ex.toString());
251             }
252         else
253             try {
254 
255                 log.println("try to expand node...");
256                 oObj.expandNode(mXNode);
257 
258             } catch (ExpandVetoException ex) {
259                 bOK = false;
260                 log.println("ERROR: could not expand node: " + ex.toString());
261             } catch (com.sun.star.lang.IllegalArgumentException ex) {
262                 bOK = false;
263                 log.println("ERROR: could not expand node: " + ex.toString());
264             }
265 
266         try {
267 
268             boolean isAlsoExpanded = oObj.isNodeExpanded(mXNode);
269 
270             bOK &= (isExpanded != isAlsoExpanded);
271 
272             log.println("node is expanded: " + isAlsoExpanded + " => " + bOK);
273 
274         } catch (com.sun.star.lang.IllegalArgumentException ex) {
275             bOK = false;
276             log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString());
277         }
278 
279         tRes.tested("isNodeExpanded()", bOK);
280 
281     }
282     public void _isNodeCollapsed(){
283 
284         boolean bOK = true;
285 
286         boolean isCollapsed = false;
287 
288         try {
289             isCollapsed = oObj.isNodeCollapsed(mXNode);
290             log.println("node is Collapsed: " + isCollapsed);
291 
292         } catch (com.sun.star.lang.IllegalArgumentException ex) {
293             bOK = false;
294             log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString());
295         }
296 
297         if ( ! isCollapsed)
298             try {
299 
300                 log.println("try to collapse node...");
301                 oObj.collapseNode(mXNode);
302 
303             } catch (ExpandVetoException ex) {
304                 bOK = false;
305                 log.println("ERROR: could not collapse node: " + ex.toString());
306             } catch (com.sun.star.lang.IllegalArgumentException ex) {
307                 bOK = false;
308                 log.println("ERROR: could not collapse node: " + ex.toString());
309             }
310         else
311             try {
312 
313                 log.println("try to expand node...");
314                 oObj.expandNode(mXNode);
315 
316             } catch (ExpandVetoException ex) {
317                 bOK = false;
318                 log.println("ERROR: could not expand node: " + ex.toString());
319             } catch (com.sun.star.lang.IllegalArgumentException ex) {
320                 bOK = false;
321                 log.println("ERROR: could not expand node: " + ex.toString());
322             }
323 
324         try {
325 
326             boolean isAlsoCollapsed = oObj.isNodeCollapsed(mXNode);
327 
328             bOK &= (isCollapsed != isAlsoCollapsed);
329 
330             log.println("node is Collapsed: " + isAlsoCollapsed + " => " + bOK);
331 
332         } catch (com.sun.star.lang.IllegalArgumentException ex) {
333             bOK = false;
334             log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString());
335         }
336 
337         tRes.tested("isNodeCollapsed()", bOK);
338 
339     }
340     public void _makeNodeVisible(){
341 
342         boolean bOK = true;
343         try {
344 
345             oObj.makeNodeVisible(mXNode);
346         } catch (ExpandVetoException ex) {
347             bOK = false;
348             log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString());
349         } catch (com.sun.star.lang.IllegalArgumentException ex) {
350             bOK = false;
351             log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString());
352         }
353         try {
354 
355             bOK &= oObj.isNodeVisible(mXNode);
356         } catch (com.sun.star.lang.IllegalArgumentException ex) {
357             bOK = false;
358             log.println("ERROR: could not call method 'isNodeVisible()' successfully: " + ex.toString());
359         }
360 
361         tRes.tested("makeNodeVisible()", bOK);
362 
363     }
364     public void _isNodeVisible(){
365 
366         this.requiredMethod("makeNodeVisible()");
367 
368         boolean bOK = true;
369         log.println("since required method 'makeNodeVisible()' uses method 'isNodeVisible()' this test is ok.");
370         tRes.tested("isNodeVisible()", bOK);
371 
372     }
373 
374     public void _expandNode(){
375 
376         this.requiredMethod("isNodeExpanded()");
377 
378         boolean bOK = true;
379         log.println("since required method 'isnodeExpanded()' uses method 'expandNode()' this test is ok.");
380         tRes.tested("expandNode()", bOK);
381 
382     }
383 
384     public void _collapseNode(){
385 
386         this.requiredMethod("isNodeCollapsed()");
387 
388         boolean bOK = true;
389         log.println("since required method 'isnodeCollapsed()' uses method 'expandNode()' this test is ok.");
390         tRes.tested("collapseNode()", bOK);
391 
392     }
393 
394     public void _addTreeExpansionListener(){
395 
396         boolean bOK = true;
397 
398         log.println("collapse Node to get an initial status...");
399         try {
400 
401             oObj.collapseNode(mXNode);
402         } catch (ExpandVetoException ex) {
403             bOK = false;
404             log.println("ERROR: could not collapse node: " + ex.toString());
405         } catch (com.sun.star.lang.IllegalArgumentException ex) {
406             bOK = false;
407             log.println("ERROR: could not collapse node: " + ex.toString());
408         }
409 
410         log.println("add mTreeExpansionListener1...");
411         oObj.addTreeExpansionListener(mTreeExpansionListener1);
412 
413         log.println("add mTreeExpansionListener2");
414         oObj.addTreeExpansionListener(mTreeExpansionListener2);
415 
416         resetTreeExpandingListener();
417 
418         log.println("expand Node...");
419         try {
420 
421             oObj.expandNode(mXNode);
422 
423         } catch (ExpandVetoException ex) {
424             bOK = false;
425             log.println("ERROR: could not expand node: " + ex.toString());
426         } catch (com.sun.star.lang.IllegalArgumentException ex) {
427             bOK = false;
428             log.println("ERROR: could not expand node: " + ex.toString());
429         }
430 
431         bOK &= mTreeExpanded1  & mTreeExpanded2  & ! mTreeCollapsed1  & ! mTreeCollapsed2
432              & mTreeExpanding1 & mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2;
433 
434         resetTreeExpandingListener();
435 
436         log.println("collapse Node...");
437         try {
438 
439             oObj.collapseNode(mXNode);
440         } catch (ExpandVetoException ex) {
441             bOK = false;
442             log.println("ERROR: could not collapse node: " + ex.toString());
443         } catch (com.sun.star.lang.IllegalArgumentException ex) {
444             bOK = false;
445             log.println("ERROR: could not collapse node: " + ex.toString());
446         }
447 
448         bOK &= ! mTreeExpanded1  & ! mTreeExpanded2  & mTreeCollapsed1  & mTreeCollapsed2
449              & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & mTreeCollapsing2;
450 
451         tRes.tested("addTreeExpansionListener()", bOK);
452 
453     }
454 
455     public void _removeTreeExpansionListener(){
456 
457         this.requiredMethod("addTreeExpansionListener()");
458 
459         boolean bOK = true;
460 
461         log.println("collapse Node to get an initial status...");
462         try {
463 
464             oObj.collapseNode(mXNode);
465         } catch (ExpandVetoException ex) {
466             bOK = false;
467             log.println("ERROR: could not collapse node: " + ex.toString());
468         } catch (com.sun.star.lang.IllegalArgumentException ex) {
469             bOK = false;
470             log.println("ERROR: could not collapse node: " + ex.toString());
471         }
472 
473         resetTreeExpandingListener();
474 
475         log.println("remove mTreeExpansionListener2 ...");
476         oObj.removeTreeExpansionListener(mTreeExpansionListener2);
477 
478         log.println("expand Node...");
479         try {
480 
481             oObj.expandNode(mXNode);
482 
483         } catch (ExpandVetoException ex) {
484             bOK = false;
485             log.println("ERROR: could not expand node: " + ex.toString());
486         } catch (com.sun.star.lang.IllegalArgumentException ex) {
487             bOK = false;
488             log.println("ERROR: could not expand node: " + ex.toString());
489         }
490 
491         bOK &= mTreeExpanded1  & ! mTreeExpanded2  & ! mTreeCollapsed1  & ! mTreeCollapsed2
492              & mTreeExpanding1 & ! mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2;
493 
494         resetTreeExpandingListener();
495 
496         log.println("collapse Node...");
497         try {
498 
499             oObj.collapseNode(mXNode);
500         } catch (ExpandVetoException ex) {
501             bOK = false;
502             log.println("ERROR: could not collapse node: " + ex.toString());
503         } catch (com.sun.star.lang.IllegalArgumentException ex) {
504             bOK = false;
505             log.println("ERROR: could not collapse node: " + ex.toString());
506         }
507 
508         bOK &= ! mTreeExpanded1  & ! mTreeExpanded2  & mTreeCollapsed1  & ! mTreeCollapsed2
509              & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & ! mTreeCollapsing2;
510 
511         log.println("remove mTreeExpansionListener2 ...");
512         oObj.removeTreeExpansionListener(mTreeExpansionListener2);
513 
514         tRes.tested("removeTreeExpansionListener()", bOK);
515 
516     }
517 
518     public void _getNodeForLocation(){
519 
520         boolean bOK = false;
521 
522 
523         tRes.tested("getNodeForLocation()", bOK);
524 
525     }
526 
527     public void _getClosestNodeForLocation(){
528 
529         boolean bOK = false;
530 
531         log.println("try to get Node for location 100,100");
532         XTreeNode myNode = oObj.getClosestNodeForLocation(100,100);
533 
534         bOK &= (myNode != null);
535 
536         tRes.tested("getClosestNodeForLocation()", bOK);
537 
538     }
539 
540     public void _isEditing(){
541 
542         boolean bOK = false;
543 
544         log.println("not ready because of i78701");
545 
546         tRes.tested("isEditing()", bOK);
547 
548     }
549 
550     public void _stopEditing(){
551 
552         boolean bOK = false;
553         log.println("not ready because of i78701");
554 
555 
556         tRes.tested("stopEditing()", bOK);
557 
558     }
559 
560     public void _cancelEditing(){
561 
562         boolean bOK = false;
563 
564         log.println("not ready because of i78701");
565 
566         tRes.tested("cancelEditing()", bOK);
567 
568     }
569 
570     public void _startEditingAtNode(){
571 
572         boolean bOK = false;
573 
574         log.println("not ready because of i78701");
575 
576         tRes.tested("startEditingAtNode()", bOK);
577 
578     }
579 
580     public void _addTreeEditListener(){
581 
582         boolean bOK = true;
583 
584         log.println("add EditListener 1....");
585         oObj.addTreeEditListener(mTreeEditListener1);
586 
587         log.println("add EditListener 2....");
588         oObj.addTreeEditListener(mTreeEditListener2);
589 
590         resetEditListener();
591 
592         try {
593 
594             oObj.startEditingAtNode(mXNode);
595         } catch (com.sun.star.lang.IllegalArgumentException ex) {
596             log.println("ERROR: could not start editing at node: " + ex.toString());
597             bOK = false;
598         }
599 
600         log.println("not ready because of i78701");
601         bOK = false;
602 
603 
604         tRes.tested("addTreeEditListener()", bOK);
605 
606     }
607 
608     public void _removeTreeEditListener(){
609 
610         boolean bOK = false;
611 
612         log.println("not ready because of i78701");
613 
614         tRes.tested("removeTreeEditListener()", bOK);
615 
616     }
617 
618     public void _DefaultExpandedGraphicURL(){
619 
620         boolean bOK = true;
621 
622         String current = oObj.getDefaultExpandedGraphicURL();
623         log.println("current DefaultExpandedGraphicURL: " + current);
624 
625         String changeUrl = null;
626 
627         if (current.equals("private:graphicrepository/sd/res/triangle_right.png"))
628              changeUrl = "private:graphicrepository/sd/res/triangle_down.png";
629         else changeUrl = "private:graphicrepository/sd/res/triangle_right.png";
630 
631         log.println("try to set '" + changeUrl + "' as new DefaultExpandedGraphicURL");
632 
633         oObj.setDefaultExpandedGraphicURL(changeUrl);
634 
635         String newUrl = oObj.getDefaultExpandedGraphicURL();
636 
637         log.println("new DefaultExpandedGraphicURL: " + newUrl);
638 
639         bOK &= ! newUrl.equals(current);
640 
641         tRes.tested("DefaultExpandedGraphicURL()", bOK);
642 
643     }
644 
645     public void _DefaultCollapsedGraphicURL(){
646 
647         boolean bOK = true;
648 
649         String current = oObj.getDefaultCollapsedGraphicURL();
650         log.println("current DefaultCollapsedGraphicURL: " + current);
651 
652         String changeUrl = null;
653 
654         if (current.equals("private:graphicrepository/sd/res/triangle_right.png"))
655              changeUrl = "private:graphicrepository/sd/res/triangle_down.png";
656         else changeUrl = "private:graphicrepository/sd/res/triangle_right.png";
657 
658         log.println("try to set '" + changeUrl + "' as new DefaultCollapsedGraphicURL");
659         oObj.setDefaultCollapsedGraphicURL(changeUrl);
660 
661         String newUrl = oObj.getDefaultCollapsedGraphicURL();
662 
663         log.println("new DefaultCollapsedGraphicURL: " + newUrl);
664 
665         bOK &= ! newUrl.equals(current);
666 
667         tRes.tested("DefaultCollapsedGraphicURL()", bOK);
668     }
669 }
670 
671 
672