You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/08/02 02:40:23 UTC

svn commit: r1368324 - in /incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test: OpenOffice.java vcl/Tester.java vcl/client/Constant.java vcl/widgets/VclTreeListBox.java

Author: liuzhe
Date: Thu Aug  2 00:40:23 2012
New Revision: 1368324

URL: http://svn.apache.org/viewvc?rev=1368324&view=rev
Log:
#120384# - Create VclTreeListBox for WINDOW_TREELISTBOX controls. 
Patch By: Li Lin Yi
Review By: Liu Zhe

Added:
    incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/widgets/VclTreeListBox.java
Modified:
    incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/OpenOffice.java
    incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/Tester.java
    incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/client/Constant.java

Modified: incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/OpenOffice.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/OpenOffice.java?rev=1368324&r1=1368323&r2=1368324&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/OpenOffice.java (original)
+++ incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/OpenOffice.java Thu Aug  2 00:40:23 2012
@@ -121,14 +121,14 @@ public class OpenOffice {
 		
 		versionProps = FileUtil.loadProperties(versionFile);
 		addArgs(id);
-		addArgs("-nofirststartwizard", "-norestore", "-quickstart=no");
-		addRegistryModifications("<item oor:path=\"/org.openoffice.Office.Common/Misc\"><prop oor:name=\"UseSystemFileDialog\" oor:op=\"fuse\"><value>false</value></prop></item>",
-				"<item oor:path=\"/org.openoffice.Office.Common/Security/Scripting\"><prop oor:name=\"MacroSecurityLevel\" oor:op=\"fuse\"><value>0</value></prop></item>");
 	}
 
 	public static OpenOffice getDefault() {
 		if (defaultInstance == null) {
 			defaultInstance = new OpenOffice();
+			defaultInstance.addArgs("-nofirststartwizard", "-norestore", "-quickstart=no");
+			defaultInstance.addRegistryModifications("<item oor:path=\"/org.openoffice.Office.Common/Misc\"><prop oor:name=\"UseSystemFileDialog\" oor:op=\"fuse\"><value>false</value></prop></item>",
+					"<item oor:path=\"/org.openoffice.Office.Common/Security/Scripting\"><prop oor:name=\"MacroSecurityLevel\" oor:op=\"fuse\"><value>0</value></prop></item>");
 		}
 
 		return defaultInstance;
@@ -230,6 +230,7 @@ public class OpenOffice {
 	public void kill() {
 		SystemUtil.killProcess(".*soffice.*" + id + ".*");
 		process = null;
+		SystemUtil.sleep(1);
 	}
 
 	/**

Modified: incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/Tester.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/Tester.java?rev=1368324&r1=1368323&r2=1368324&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/Tester.java (original)
+++ incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/Tester.java Thu Aug  2 00:40:23 2012
@@ -40,7 +40,7 @@ public class Tester {
 	static {
 		try {
 			robot = new Robot();
-		    robot.setAutoDelay(5);
+		    robot.setAutoDelay(10);
 		    robot.setAutoWaitForIdle(true);
 		} catch (AWTException e) {
 			e.printStackTrace();

Modified: incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/client/Constant.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/client/Constant.java?rev=1368324&r1=1368323&r2=1368324&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/client/Constant.java (original)
+++ incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/client/Constant.java Thu Aug  2 00:40:23 2012
@@ -362,6 +362,10 @@ public interface Constant {
 	public static final char M_IsEditing = (M_WITH_RETURN | 58);
 
 	public static final char M_IsItemEnabled = (M_WITH_RETURN | 59);
+	
+	// For TreeListBox
+	public static final char M_Collapse = (M_WITH_RETURN | 60);
+	public static final char M_Expand = (M_WITH_RETURN | 61);
 
 	// Symphony Special
 	public static final char M_GetHelpText = (M_WITH_RETURN | 90);

Added: incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/widgets/VclTreeListBox.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/widgets/VclTreeListBox.java?rev=1368324&view=auto
==============================================================================
--- incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/widgets/VclTreeListBox.java (added)
+++ incubator/ooo/trunk/main/test/testcommon/source/org/openoffice/test/vcl/widgets/VclTreeListBox.java Thu Aug  2 00:40:23 2012
@@ -0,0 +1,387 @@
+/**************************************************************
+ * 
+ * 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 org.openoffice.test.vcl.widgets;
+import org.openoffice.test.vcl.client.Constant;
+
+
+public class VclTreeListBox extends VclControl {
+
+	/**
+	 * Construct the tree with its String ID
+	 * @param id
+	 */
+	public VclTreeListBox(String id) {
+		super(id);
+	}
+	
+	
+	public VclTreeListBox(VclApp app, String id) {
+		super(app, id);
+	}
+
+	/**
+	 * Returns the number of entries in a TreeListBox. Namely all the expanded node.
+	 * 
+	 * @return Number of list box entries. Error if the return value is -1.
+	 */
+	public int getItemCount() {
+		return ((Long)invoke(Constant.M_GetItemCount)).intValue();
+	}
+
+	/**
+	 * Get the text of the specified entry in the tree list box
+	 * Notice: index,col starting from 0. <br>
+	 * In some tree list box, there is a hidden column, so if you can get the item text, pls add 1 to the column
+	 * @param row
+	 * @param col
+	 * @return
+	 */
+	public String getItemText(int row, int col) {
+		return (String) invoke(Constant.M_GetItemText, new Object[]{row + 1, col + 1});
+	}
+
+	/**
+	 * Returns the text of the first string column of the row at the given index
+	 * Notice: index starting from 0
+	 * @param index
+	 * @return
+	 */
+	public String getItemText(int index) {
+		return (String) invoke(Constant.M_GetItemText, new Object[] {index + 1});
+	}
+	
+	/**
+	 * Returns the number of selected entries in a TreeListbox(you can select
+	 * more than one entry).
+	 * 
+	 * @return The number of selected entries. Error is the return value is -1.
+	 */
+	public int getSelCount() {
+		return ((Long)invoke(Constant.M_GetSelCount)).intValue();
+	}
+
+	/**
+	 * Returns the index number of the selected entry in the TreeListBox.
+	 * Notice: index starting from 0
+	 * @return The index number of selected entries. Error is the return value
+	 *         is -1.
+	 */
+	public int getSelIndex() {
+		int index = ((Long) invoke(Constant.M_GetSelIndex)).intValue();
+		return index - 1;
+	}
+
+	/**
+	 * Returns the text of the first string column of the first selected entry
+	 * 
+	 * @return
+	 */
+	public String getSelText() {
+		return (String) invoke(Constant.M_GetSelText, new Object[]{1});
+	}
+
+	/**
+	 * Returns the text of the n-th column of the first selected entry.
+	 * If the column is not a string, a VCLException will be throwed.
+	 * @param col the column index starting from 0
+	 * @return
+	 */
+	public String getSelText(int col) {
+		return (String) invoke(Constant.M_GetSelText, new Object[]{col + 1});	
+	}
+
+	/**
+	 * Returns the text of the n-th column of the n-th selected entry.
+	 * @param index the selected entry index  starting from 0
+	 * @param col the column index  starting from 0
+	 * @return
+	 */
+	public String getSelText(int index, int col) {
+		return invoke(Constant.M_GetSelText, new Object[]{(index + 1), (col + 1)}).toString();
+	}
+
+	
+	/**
+	 * Select the entry at the given index
+	 * @param index starting from 0
+	 */
+	public void select(int index) {
+		invoke(Constant.M_Select, new Object[]{index+1});
+	}
+
+	/**
+	 * Unselect the entry at the given index
+	 * @param index starting from 0
+	 */
+	public void unselect(int index) {
+		invoke(Constant.M_Select, new Object[]{index + 1, false});
+	}
+	
+	/**
+	 * Collapse the specified entry
+	 * Notice: index starting from 0
+	 * @param index the node index
+	 */
+	public void collapse(int index) {
+//		select(index);
+//		Tester.typeKeys("<left>");
+		invoke(Constant.M_Collapse, new Object[]{index + 1, false});
+	}
+	
+	/**
+	 * Expand the specified entry
+	 * Notice: index starting from 0
+	 * @param index the entry index
+	 */
+	public void expand(int index) {
+//		select(index);
+//		Tester.typeKeys("<right>");
+		invoke(Constant.M_Expand, new Object[]{index + 1, false});
+	}
+	
+    /** 
+     * Select the node via its text
+     * @param str
+     * @return the index of the node
+     */
+    public void select(String str) {
+    	select(str, 0);
+	}
+    
+    /**
+     * Select the entry with the given string and after the given index
+     * @param str
+     * @param start
+     */
+    public void select(String str, int start) {
+    	int len = getItemCount();
+		for (int i = start; i < len; i++) {
+			String text = getItemText(i);
+			if (str.equals(text)) {
+				select(i);
+				return;
+			}
+		}
+    	throw new RuntimeException(str + " is not found in the tree");
+    }
+    
+    
+	/**
+	 * Return the text of all items 
+	 * @return A String[] includes all items text
+	 */
+	public String[] getAllItemsText() {
+		int len = getItemCount();
+		String[] ret = new String[len];
+		for (int i = 0; i < len; i++) {
+			ret[i] = getItemText(i);
+		}
+		return ret;
+	}
+	
+	/**
+	 * Check if the list box has the specified item
+	 * @param str
+	 * @return
+	 */
+	public boolean hasItem(String str) {
+		int len = getItemCount();
+		for (int i = 0; i < len; i++) {
+			String text = getItemText(i);
+			if (str.equals(text))
+				return true;
+		}
+		return false;
+	}
+	/**
+	 * 
+	 * @return
+	 */
+	public boolean isChecked(int row) {
+		return ((Boolean)invoke(Constant.M_IsChecked, new Object[]{new Integer(row+1)})).booleanValue();
+	}
+	
+	public boolean isChecked(int row, int col) {
+		return ((Boolean)invoke(Constant.M_IsChecked, new Object[]{new Integer(row+1), new Integer(col+1)})).booleanValue();
+	}
+	
+	/**
+	 * @param 
+	 * @return
+	 */
+	public boolean isShowing(String str) {
+		boolean ret = false;
+		int len = getItemCount();
+		for (int i = 0; i < len; i++) {
+			String text = getItemText(i);
+			if (str.equals(text)) {
+				ret = true;
+			}
+		}
+		return ret;
+	}
+	
+	/**
+	 * Check if the selected node is tristate
+	 * @return
+	 */
+	public boolean isTristate(int row) {
+		return ((Boolean)invoke(Constant.M_IsTristate, new Object[]{new Integer(row+1)})).booleanValue();
+	}
+	
+	public boolean isTristate(int row, int col) {
+		return ((Boolean)invoke(Constant.M_IsTristate, new Object[]{new Integer(row+1), new Integer(col+1)})).booleanValue();
+	}
+	
+	/**
+	 * Check if the selected node is tristate
+	 * @return
+	 */
+	public boolean isTristate() {
+		return ((Boolean)invoke(Constant.M_IsTristate)).booleanValue();
+	}
+	
+	/**
+	 * Get the state of the selected node
+	 * @return
+	 */
+	public int getState() {
+		return ((Long)invoke(Constant.M_GetState)).intValue();
+	}
+	
+	/**
+	 * Get the state of the selected node
+	 * @return
+	 */
+	public int getState(int row) {
+		return ((Long)invoke(Constant.M_GetState, new Object[]{new Integer(row+1)})).intValue();
+	}
+	
+	public int getState(int row, int col) {
+		return ((Long)invoke(Constant.M_GetState, new Object[]{new Integer(row+1), new Integer(col+1)})).intValue();
+	}
+	
+	/**
+	 * check the selected node 
+	 *
+	 */
+	public void check()  {
+		invoke(Constant.M_Check);
+	}
+	
+	public void check(int row)  {
+		invoke(Constant.M_Check, new Object[]{new Integer(row+1)});
+	}
+	
+	public void check(int row, int col)  {
+		invoke(Constant.M_Check, new Object[]{new Integer(row+1), new Integer(col+1)});
+	}
+	
+	/**
+	 * uncheck the selected node
+	 *
+	 */
+	public void unCheck() {
+		invoke(Constant.M_UnCheck);
+	}
+	
+	public void unCheck(int row) {
+		invoke(Constant.M_UnCheck, new Object[]{new Integer(row+1)});
+	}
+	
+	public void unCheck(int row, int col) {
+		invoke(Constant.M_UnCheck, new Object[]{new Integer(row+1), new Integer(col+1)});
+	}
+	
+	/**
+	 * Set the selected node to tristate
+	 *
+	 */
+    public void triState() {
+    	invoke(Constant.M_TriState);
+	}
+    
+    
+    public void triState(int row) {
+    	invoke(Constant.M_TriState, new Object[]{new Integer(row+1)});
+	}
+    
+    public void triState(int row, int col) {
+    	invoke(Constant.M_TriState, new Object[]{new Integer(row+1), new Integer(col+1)});
+	}
+    
+    /**
+	 * Collapse all nodes in the tree list box.
+	 *
+	 */
+	public void collapseAll() {//?after expandAll, can not collapse the first node
+		for (int i = 0; i <  getItemCount(); i++) {
+			collapse(i);
+		}
+	}
+	
+	/**
+	 * Expand all nodes in the tree list box
+	 *
+	 */
+	public void expandAll() {
+		for (int i = 0; i <  getItemCount(); i++) {
+			expand(i);
+		}
+	}
+	
+	/**
+	 * Select the specified node by path. 
+	 * @param path The node path likes "Node1->Node2->Node3"
+	 * @return true if the node exists, false otherwise
+	 */
+	public void selectByPath(String path) {
+		collapseAll();
+		String[] items = path.split("->");
+		int i = 0;
+		for (String s : items) {
+			int len = getItemCount();
+			for (; i < len; i++) {
+				String text = getItemText(i);
+				if (s.equals(text)) {
+					expand(i);
+					break;
+				}
+			}
+			if (i == len) {
+				throw new RuntimeException("Menu item '" + path + "' is not found in the tree");
+			}
+		}
+	}
+	
+	/**
+	 * Get the column type of the given row
+	 * @param row
+	 * @param col
+	 * @return
+	 */
+	public int getItemType(int row, int col) {
+		return (Integer)invoke(Constant.M_GetItemType, new Object[]{row + 1, col + 1});
+	}
+}