| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| package ifc.awt.tree; |
| |
| import com.sun.star.awt.tree.ExpandVetoException; |
| import com.sun.star.awt.tree.TreeExpansionEvent; |
| import com.sun.star.awt.tree.XMutableTreeNode; |
| import com.sun.star.awt.tree.XTreeControl; |
| import com.sun.star.awt.tree.XTreeEditListener; |
| import com.sun.star.awt.tree.XTreeExpansionListener; |
| import com.sun.star.awt.tree.XTreeNode; |
| import com.sun.star.lang.EventObject; |
| import com.sun.star.util.VetoException; |
| import lib.MultiMethodTest; |
| import lib.Status; |
| import lib.StatusException; |
| |
| /** |
| * Testing <code>com.sun.star.awt.tree.XTreeControl</code> |
| * interface methods : |
| * <ul> |
| * <li><code> isNodeExpanded()</code></li> |
| * <li><code> isNodeCollapsed()</code></li> |
| * <li><code> makeNodeVisible()</code></li> |
| * <li><code> isNodeVisible()</code></li> |
| * <li><code> expandNode()</code></li> |
| * <li><code> collapseNode()</code></li> |
| * <li><code> addTreeExpansionListener()</code></li> |
| * <li><code> removeTreeExpansionListener()</code></li> |
| * <li><code> getNodeForLocation()</code></li> |
| * <li><code> getClosestNodeForLocation()</code></li> |
| * <li><code> isEditing()</code></li> |
| * <li><code> stopEditing()</code></li> |
| * <li><code> cancelEditing()</code></li> |
| * <li><code> startEditingAtNode()</code></li> |
| * <li><code> addTreeEditListener()</code></li> |
| * <li><code> removeTreeEditListener()</code></li> |
| * <li><code> DefaultExpandedGraphicURL()</code></li> |
| * <li><code> DefaultCollapsedGraphicURL()</code></li>* </ul> <p> |
| * Test is <b> NOT </b> multithread compilant. <p> |
| * |
| * @see com.sun.star.awt.tree.XTreeControl |
| */ |
| public class _XTreeControl extends MultiMethodTest { |
| |
| public XTreeControl oObj = null; |
| |
| private XMutableTreeNode mNewNode = null; |
| |
| private XMutableTreeNode mXNode = null; |
| |
| XTreeExpansionListener mTreeExpansionListener1 = new TreeExpansionListenerImpl1(); |
| |
| XTreeExpansionListener mTreeExpansionListener2 = new TreeExpansionListenerImpl2(); |
| |
| XTreeEditListener mTreeEditListener1 = new TreeEditListenerImpl1(); |
| |
| XTreeEditListener mTreeEditListener2 = new TreeEditListenerImpl2(); |
| |
| boolean mTreeExpanded1 = false; |
| boolean mTreeExpanding1 = false; |
| boolean mTreeCollapsed1 = false; |
| boolean mTreeCollapsing1 = false; |
| |
| boolean mTreeExpanded2 = false; |
| boolean mTreeExpanding2 = false; |
| boolean mTreeCollapsed2 = false; |
| boolean mTreeCollapsing2 = false; |
| |
| boolean mTreeNodeEditing1 = false; |
| boolean mTreeNodeEdit1 = false; |
| |
| boolean mTreeNodeEditing2 = false; |
| boolean mTreeNodeEdit2 = false; |
| |
| public static interface XTreeDataModelListenerEvent{ |
| public void fireEvent(); |
| } |
| |
| public class TreeExpansionListenerImpl1 implements XTreeExpansionListener{ |
| public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 1: requestChildNodes"); |
| } |
| |
| public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { |
| log.println("event at ExpansionListener 1: treeExpanding"); |
| mTreeExpanding1 = true; |
| } |
| |
| public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { |
| log.println("event at ExpansionListener 1: treeCollapsing"); |
| mTreeCollapsing1 = true; |
| } |
| |
| public void treeExpanded(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 1: treeExpanded"); |
| mTreeExpanded1 = true; |
| } |
| |
| public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 1: treeCollapsed"); |
| mTreeCollapsed1 = true; |
| } |
| |
| public void disposing(EventObject eventObject) { |
| log.println("event at ExpansionListener 1: disposing"); |
| } |
| } |
| |
| public class TreeExpansionListenerImpl2 implements XTreeExpansionListener{ |
| public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 2: requestChildNodes"); |
| } |
| |
| public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { |
| log.println("event at ExpansionListener 2: treeExpanding"); |
| mTreeExpanding2 = true; |
| } |
| |
| public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { |
| log.println("event at ExpansionListener 2: treeCollapsing"); |
| mTreeCollapsing2 = true; |
| } |
| |
| public void treeExpanded(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 2: treeExpanded"); |
| mTreeExpanded2 = true; |
| } |
| |
| public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) { |
| log.println("event at ExpansionListener 2: treeCollapsed"); |
| mTreeCollapsed2 = true; |
| } |
| |
| public void disposing(EventObject eventObject) { |
| log.println("event at ExpansionListener 2: disposing"); |
| } |
| |
| } |
| |
| public class TreeEditListenerImpl1 implements XTreeEditListener{ |
| public void nodeEditing(XTreeNode xTreeNode) throws VetoException { |
| log.println("event at EditListener 1: nodeEditing"); |
| mTreeNodeEditing1 = true; |
| } |
| |
| public void nodeEdited(XTreeNode xTreeNode, String string) { |
| log.println("event at EditListener 1: nodeEdited"); |
| mTreeNodeEdit1 = true; |
| } |
| |
| public void disposing(EventObject eventObject) { |
| log.println("event at EditListener 1: disposing"); |
| } |
| } |
| |
| public class TreeEditListenerImpl2 implements XTreeEditListener{ |
| public void nodeEditing(XTreeNode xTreeNode) throws VetoException { |
| log.println("event at EditListener 2: nodeEditing"); |
| mTreeNodeEditing2 = true; |
| |
| } |
| |
| public void nodeEdited(XTreeNode xTreeNode, String string) { |
| log.println("event at EditListener 2: nodeEdited"); |
| mTreeNodeEdit2 = true; |
| } |
| |
| public void disposing(EventObject eventObject) { |
| log.println("event at EditListener 2: disposing"); |
| } |
| } |
| |
| private void resetTreeExpandingListener(){ |
| mTreeExpanded1 = false; |
| mTreeExpanded2 = false; |
| mTreeCollapsed1 = false; |
| mTreeCollapsed2 = false; |
| mTreeExpanding1 = false; |
| mTreeExpanding2 = false; |
| mTreeCollapsing1 = false; |
| mTreeCollapsing2 = false; |
| } |
| |
| private void resetEditListener(){ |
| mTreeNodeEditing1 = false; |
| mTreeNodeEdit1 = false; |
| mTreeNodeEditing2 = false; |
| mTreeNodeEdit2 = false; |
| } |
| |
| public void before(){ |
| mXNode = (XMutableTreeNode) tEnv.getObjRelation("XTreeControl_Node"); |
| if (mXNode == null) { |
| throw new StatusException(Status.failed("ERROR: could not get object relation 'XTreeControl_Node'")); |
| } |
| } |
| |
| public void _isNodeExpanded() throws ExpandVetoException{ |
| |
| boolean bOK = true; |
| |
| boolean isExpanded = false; |
| |
| try { |
| isExpanded = oObj.isNodeExpanded(mXNode); |
| log.println("node is expanded: " + isExpanded); |
| |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString()); |
| } |
| |
| if (isExpanded) |
| try { |
| |
| log.println("try to collapse node..."); |
| oObj.collapseNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| else |
| try { |
| |
| log.println("try to expand node..."); |
| oObj.expandNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } |
| |
| try { |
| |
| boolean isAlsoExpanded = oObj.isNodeExpanded(mXNode); |
| |
| bOK &= (isExpanded != isAlsoExpanded); |
| |
| log.println("node is expanded: " + isAlsoExpanded + " => " + bOK); |
| |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString()); |
| } |
| |
| tRes.tested("isNodeExpanded()", bOK); |
| |
| } |
| public void _isNodeCollapsed(){ |
| |
| boolean bOK = true; |
| |
| boolean isCollapsed = false; |
| |
| try { |
| isCollapsed = oObj.isNodeCollapsed(mXNode); |
| log.println("node is Collapsed: " + isCollapsed); |
| |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString()); |
| } |
| |
| if ( ! isCollapsed) |
| try { |
| |
| log.println("try to collapse node..."); |
| oObj.collapseNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| else |
| try { |
| |
| log.println("try to expand node..."); |
| oObj.expandNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } |
| |
| try { |
| |
| boolean isAlsoCollapsed = oObj.isNodeCollapsed(mXNode); |
| |
| bOK &= (isCollapsed != isAlsoCollapsed); |
| |
| log.println("node is Collapsed: " + isAlsoCollapsed + " => " + bOK); |
| |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString()); |
| } |
| |
| tRes.tested("isNodeCollapsed()", bOK); |
| |
| } |
| public void _makeNodeVisible(){ |
| |
| boolean bOK = true; |
| try { |
| |
| oObj.makeNodeVisible(mXNode); |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString()); |
| } |
| try { |
| |
| bOK &= oObj.isNodeVisible(mXNode); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not call method 'isNodeVisible()' successfully: " + ex.toString()); |
| } |
| |
| tRes.tested("makeNodeVisible()", bOK); |
| |
| } |
| public void _isNodeVisible(){ |
| |
| this.requiredMethod("makeNodeVisible()"); |
| |
| boolean bOK = true; |
| log.println("since required method 'makeNodeVisible()' uses method 'isNodeVisible()' this test is ok."); |
| tRes.tested("isNodeVisible()", bOK); |
| |
| } |
| |
| public void _expandNode(){ |
| |
| this.requiredMethod("isNodeExpanded()"); |
| |
| boolean bOK = true; |
| log.println("since required method 'isnodeExpanded()' uses method 'expandNode()' this test is ok."); |
| tRes.tested("expandNode()", bOK); |
| |
| } |
| |
| public void _collapseNode(){ |
| |
| this.requiredMethod("isNodeCollapsed()"); |
| |
| boolean bOK = true; |
| log.println("since required method 'isnodeCollapsed()' uses method 'expandNode()' this test is ok."); |
| tRes.tested("collapseNode()", bOK); |
| |
| } |
| |
| public void _addTreeExpansionListener(){ |
| |
| boolean bOK = true; |
| |
| log.println("collapse Node to get an initial status..."); |
| try { |
| |
| oObj.collapseNode(mXNode); |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| |
| log.println("add mTreeExpansionListener1..."); |
| oObj.addTreeExpansionListener(mTreeExpansionListener1); |
| |
| log.println("add mTreeExpansionListener2"); |
| oObj.addTreeExpansionListener(mTreeExpansionListener2); |
| |
| resetTreeExpandingListener(); |
| |
| log.println("expand Node..."); |
| try { |
| |
| oObj.expandNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } |
| |
| bOK &= mTreeExpanded1 & mTreeExpanded2 & ! mTreeCollapsed1 & ! mTreeCollapsed2 |
| & mTreeExpanding1 & mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2; |
| |
| resetTreeExpandingListener(); |
| |
| log.println("collapse Node..."); |
| try { |
| |
| oObj.collapseNode(mXNode); |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| |
| bOK &= ! mTreeExpanded1 & ! mTreeExpanded2 & mTreeCollapsed1 & mTreeCollapsed2 |
| & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & mTreeCollapsing2; |
| |
| tRes.tested("addTreeExpansionListener()", bOK); |
| |
| } |
| |
| public void _removeTreeExpansionListener(){ |
| |
| this.requiredMethod("addTreeExpansionListener()"); |
| |
| boolean bOK = true; |
| |
| log.println("collapse Node to get an initial status..."); |
| try { |
| |
| oObj.collapseNode(mXNode); |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| |
| resetTreeExpandingListener(); |
| |
| log.println("remove mTreeExpansionListener2 ..."); |
| oObj.removeTreeExpansionListener(mTreeExpansionListener2); |
| |
| log.println("expand Node..."); |
| try { |
| |
| oObj.expandNode(mXNode); |
| |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not expand node: " + ex.toString()); |
| } |
| |
| bOK &= mTreeExpanded1 & ! mTreeExpanded2 & ! mTreeCollapsed1 & ! mTreeCollapsed2 |
| & mTreeExpanding1 & ! mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2; |
| |
| resetTreeExpandingListener(); |
| |
| log.println("collapse Node..."); |
| try { |
| |
| oObj.collapseNode(mXNode); |
| } catch (ExpandVetoException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| bOK = false; |
| log.println("ERROR: could not collapse node: " + ex.toString()); |
| } |
| |
| bOK &= ! mTreeExpanded1 & ! mTreeExpanded2 & mTreeCollapsed1 & ! mTreeCollapsed2 |
| & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & ! mTreeCollapsing2; |
| |
| log.println("remove mTreeExpansionListener2 ..."); |
| oObj.removeTreeExpansionListener(mTreeExpansionListener2); |
| |
| tRes.tested("removeTreeExpansionListener()", bOK); |
| |
| } |
| |
| public void _getNodeForLocation(){ |
| |
| boolean bOK = false; |
| |
| |
| tRes.tested("getNodeForLocation()", bOK); |
| |
| } |
| |
| public void _getClosestNodeForLocation(){ |
| |
| boolean bOK = false; |
| |
| log.println("try to get Node for location 100,100"); |
| XTreeNode myNode = oObj.getClosestNodeForLocation(100,100); |
| |
| bOK &= (myNode != null); |
| |
| tRes.tested("getClosestNodeForLocation()", bOK); |
| |
| } |
| |
| public void _isEditing(){ |
| |
| boolean bOK = false; |
| |
| log.println("not ready because of i78701"); |
| |
| tRes.tested("isEditing()", bOK); |
| |
| } |
| |
| public void _stopEditing(){ |
| |
| boolean bOK = false; |
| log.println("not ready because of i78701"); |
| |
| |
| tRes.tested("stopEditing()", bOK); |
| |
| } |
| |
| public void _cancelEditing(){ |
| |
| boolean bOK = false; |
| |
| log.println("not ready because of i78701"); |
| |
| tRes.tested("cancelEditing()", bOK); |
| |
| } |
| |
| public void _startEditingAtNode(){ |
| |
| boolean bOK = false; |
| |
| log.println("not ready because of i78701"); |
| |
| tRes.tested("startEditingAtNode()", bOK); |
| |
| } |
| |
| public void _addTreeEditListener(){ |
| |
| boolean bOK = true; |
| |
| log.println("add EditListener 1...."); |
| oObj.addTreeEditListener(mTreeEditListener1); |
| |
| log.println("add EditListener 2...."); |
| oObj.addTreeEditListener(mTreeEditListener2); |
| |
| resetEditListener(); |
| |
| try { |
| |
| oObj.startEditingAtNode(mXNode); |
| } catch (com.sun.star.lang.IllegalArgumentException ex) { |
| log.println("ERROR: could not start editing at node: " + ex.toString()); |
| bOK = false; |
| } |
| |
| log.println("not ready because of i78701"); |
| bOK = false; |
| |
| |
| tRes.tested("addTreeEditListener()", bOK); |
| |
| } |
| |
| public void _removeTreeEditListener(){ |
| |
| boolean bOK = false; |
| |
| log.println("not ready because of i78701"); |
| |
| tRes.tested("removeTreeEditListener()", bOK); |
| |
| } |
| |
| public void _DefaultExpandedGraphicURL(){ |
| |
| boolean bOK = true; |
| |
| String current = oObj.getDefaultExpandedGraphicURL(); |
| log.println("current DefaultExpandedGraphicURL: " + current); |
| |
| String changeUrl = null; |
| |
| if (current.equals("private:graphicrepository/sd/res/triangle_right.png")) |
| changeUrl = "private:graphicrepository/sd/res/triangle_down.png"; |
| else changeUrl = "private:graphicrepository/sd/res/triangle_right.png"; |
| |
| log.println("try to set '" + changeUrl + "' as new DefaultExpandedGraphicURL"); |
| |
| oObj.setDefaultExpandedGraphicURL(changeUrl); |
| |
| String newUrl = oObj.getDefaultExpandedGraphicURL(); |
| |
| log.println("new DefaultExpandedGraphicURL: " + newUrl); |
| |
| bOK &= ! newUrl.equals(current); |
| |
| tRes.tested("DefaultExpandedGraphicURL()", bOK); |
| |
| } |
| |
| public void _DefaultCollapsedGraphicURL(){ |
| |
| boolean bOK = true; |
| |
| String current = oObj.getDefaultCollapsedGraphicURL(); |
| log.println("current DefaultCollapsedGraphicURL: " + current); |
| |
| String changeUrl = null; |
| |
| if (current.equals("private:graphicrepository/sd/res/triangle_right.png")) |
| changeUrl = "private:graphicrepository/sd/res/triangle_down.png"; |
| else changeUrl = "private:graphicrepository/sd/res/triangle_right.png"; |
| |
| log.println("try to set '" + changeUrl + "' as new DefaultCollapsedGraphicURL"); |
| oObj.setDefaultCollapsedGraphicURL(changeUrl); |
| |
| String newUrl = oObj.getDefaultCollapsedGraphicURL(); |
| |
| log.println("new DefaultCollapsedGraphicURL: " + newUrl); |
| |
| bOK &= ! newUrl.equals(current); |
| |
| tRes.tested("DefaultCollapsedGraphicURL()", bOK); |
| } |
| } |
| |
| |