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