You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
(51) |
May
(96) |
Jun
(178) |
Jul
(287) |
Aug
(185) |
Sep
(122) |
Oct
(19) |
Nov
(103) |
Dec
(65) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
(123) |
Feb
(79) |
Mar
(59) |
Apr
(146) |
May
(177) |
Jun
(77) |
Jul
(39) |
Aug
(36) |
Sep
(31) |
Oct
(39) |
Nov
(32) |
Dec
(10) |
| 2006 |
Jan
(36) |
Feb
(6) |
Mar
(18) |
Apr
(19) |
May
|
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2007 |
Jan
(92) |
Feb
(25) |
Mar
(81) |
Apr
(64) |
May
(48) |
Jun
(41) |
Jul
(21) |
Aug
(26) |
Sep
(33) |
Oct
(86) |
Nov
(24) |
Dec
(1) |
| 2008 |
Jan
(27) |
Feb
(28) |
Mar
(7) |
Apr
(7) |
May
(26) |
Jun
(12) |
Jul
(5) |
Aug
(2) |
Sep
(15) |
Oct
(6) |
Nov
(4) |
Dec
(5) |
| 2009 |
Jan
(9) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
| 2011 |
Jan
(14) |
Feb
(6) |
Mar
(8) |
Apr
(10) |
May
(2) |
Jun
(1) |
Jul
(13) |
Aug
(12) |
Sep
(7) |
Oct
(2) |
Nov
(5) |
Dec
(4) |
| 2012 |
Jan
(9) |
Feb
(5) |
Mar
(7) |
Apr
(7) |
May
(10) |
Jun
(4) |
Jul
(12) |
Aug
(9) |
Sep
(4) |
Oct
(7) |
Nov
(10) |
Dec
(5) |
| 2013 |
Jan
(11) |
Feb
(5) |
Mar
(3) |
Apr
(3) |
May
(3) |
Jun
(3) |
Jul
(2) |
Aug
(3) |
Sep
(2) |
Oct
|
Nov
|
Dec
(2) |
| 2014 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(3) |
Sep
(4) |
Oct
(2) |
Nov
(3) |
Dec
(1) |
| 2015 |
Jan
(4) |
Feb
(1) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2016 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(20) |
Jul
(18) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Ray B. <no-...@no...> - 2017-07-29 13:40:38
|
Ray Ban EVERYTHING THE LAST DAY'S TAKE 90 % OFF FAST SHIPPING AND FREE RETURNS SHOPPING RAY BAN NOW TOP SALES http://bellabionda.de/?urls=Ray_Ban |
|
From: Ray B. S. <no-...@no...> - 2017-07-01 10:54:16
|
You received this email because you have placed an order at our website. To unsubscribe, click the link below. Our promises: - Free delivery and returns with no minimum spend - 100 days to return or exchange an item - Same-day dispatch for orders placed before 7 Days.* - Complete security with 100% secure order processing - Customer satisfaction is our top priority Whether you're on a shopping spree, buying a gift, or looking for a practical pair of Ray Ban, you're sure to find what you're after in Ray Ban online store huge selection. Discover our women's, men's, and travel collections featuring thousands of styles for every taste available even in hard-to-find gift! *Twenty-four hours a day, dependent upon payment validation *See terms and conditions Copyright 2015-2018 Ray Ban Outlet Store.Powered by Ray Ban. . http://bellabionda.de/?urls=Ray_Ban |
|
From: 学术论文征稿 <zcl...@ye...> - 2016-02-29 06:07:02
|
------
本机构长期代发职称论文,期刊学术论文。省级、国家级、北大核心、南大核心会议等等均可操作
投稿邮箱:157...@qq...
北大核心期刊部分代写代发、文章转让!
2016,从一款更专业的手机邮箱应用开始>> |
|
From: 张编辑 <ate...@16...> - 2015-10-26 05:45:03
|
咨询Q:2514370867
代写代发/北大核心/南大核心/北核过稿转让/普刊 各专业方向均可发表。
【操作稳妥 官网电话查稿确认 开杂志社发票 全国最低价发表 】
文科类:中外文学、语言、法律、哲学、思政、教育、艺术设计、图书馆、档案、历史相关、新闻传播 、电视传媒等等
理科类:财务经济、税务、经济管理类、物流、计算机、体育、机械、化工、汽车等等
9月账单数额怎么那么高?用网易有钱APP,每月开支轻松掌握! |
|
From: <gda...@us...> - 2015-09-24 09:58:32
|
Revision: 2872
http://sourceforge.net/p/abbot/svn/2872
Author: gdavison
Date: 2015-09-24 09:58:29 +0000 (Thu, 24 Sep 2015)
Log Message:
-----------
Fix metadata, add zip-doc step
Modified Paths:
--------------
abbot/trunk/abbot.xml
abbot/trunk/build.xml
abbot/trunk/costello.xml
Added Paths:
-----------
abbot/trunk/sonatype.sh
Modified: abbot/trunk/abbot.xml
===================================================================
--- abbot/trunk/abbot.xml 2015-09-18 15:32:56 UTC (rev 2871)
+++ abbot/trunk/abbot.xml 2015-09-24 09:58:29 UTC (rev 2872)
@@ -1,10 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
- <groupId>net.sourceforge.abbot</groupId>
+ <groupId>abbot</groupId>
<artifactId>abbot</artifactId>
<version>1.4.0</version>
- <description>Java GUI Test Framework</description>
+ <name>Abbot Java GUI Test Library</name>
+ <description>Abbot provides a wrapper around java.awt.Robot to make testing AWT and Swing Applications easier</description>
+ <url>http://abbot.sf.net/</url>
+
+
+ <licenses>
+ <license>
+ <name>EPL</name>
+ <url>https://www.eclipse.org/legal/epl-v10.html</url>
+ </license>
+ </licenses>
+
+
+ <developers>
+ <developer>
+ <name>Gerard Davisonr</name>
+ <email>ger...@or...</email>
+ <organization>Oralce</organization>
+ <organizationUrl>http://www.oracle.com</organizationUrl>
+ </developer>
+ </developers>
+
+
+<scm>
+ <connection>scm:svn://svn.code.sf.net/p/abbot/svn/trunkabbot/trunk/</connection>
+ <developerConnection>scm:svn://svn.code.sf.net/p/abbot/svn/trunkabbot/trunk/</developerConnection>
+ <url>http://sourceforge.net/p/abbot/svn/HEAD/tree/abbot/trunk/</url>
+</scm>
+
<dependencies>
<dependency>
<groupId>junit</groupId>
@@ -12,4 +40,7 @@
<version>4.8.2</version>
</dependency>
</dependencies>
+
+
+
</project>
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2015-09-18 15:32:56 UTC (rev 2871)
+++ abbot/trunk/build.xml 2015-09-24 09:58:29 UTC (rev 2872)
@@ -282,6 +282,17 @@
<fileset dir="${ext.src}"><patternset refid="example-contents"/></fileset>
</jar>
</target>
+
+ <!-- Build just the src zips for use by IDE tools -->
+
+ <target name="zip-doc"
+ depends="javadoc"
+ description="Creates a zip of abbot javadoc"
+ unless="-jar">
+ <jar jarfile="${build}/abbot-doc.zip" filesonly="true">
+ <fileset dir="${doc}/api"></fileset>
+ </jar>
+ </target>
<target name="compile-tests" depends="compile">
<javac classpathref="test.classpath"
Modified: abbot/trunk/costello.xml
===================================================================
--- abbot/trunk/costello.xml 2015-09-18 15:32:56 UTC (rev 2871)
+++ abbot/trunk/costello.xml 2015-09-24 09:58:29 UTC (rev 2872)
@@ -1,13 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
- <groupId>net.sourceforge.abbot</groupId>
+ <groupId>abbot</groupId>
<artifactId>costello</artifactId>
<version>1.4.0</version>
- <description>Java GUI Test Tool</description>
+ <name>Abbot Java GUI Test Authoring Tool</name>
+ <description>Costello allows the user to record Abbot tests by example.</description>
+ <url>http://abbot.sf.net/</url>
+
+
+ <licenses>
+ <license>
+ <name>EPL</name>
+ <url>https://www.eclipse.org/legal/epl-v10.html</url>
+ </license>
+ </licenses>
+
+
+ <developers>
+ <developer>
+ <name>Gerard Davisonr</name>
+ <email>ger...@or...</email>
+ <organization>Oralce</organization>
+ <organizationUrl>http://www.oracle.com</organizationUrl>
+ </developer>
+ </developers>
+
+
+<scm>
+ <connection>scm:svn://svn.code.sf.net/p/abbot/svn/trunkabbot/trunk/</connection>
+ <developerConnection>scm:svn://svn.code.sf.net/p/abbot/svn/trunkabbot/trunk/</developerConnection>
+ <url>http://sourceforge.net/p/abbot/svn/HEAD/tree/abbot/trunk/</url>
+</scm>
+
+
<dependencies>
<dependency>
- <groupId>net.sourceforge.abbot</groupId>
+ <groupId>abbot</groupId>
<artifactId>abbot</artifactId>
<version>1.4.0</version>
</dependency>
Added: abbot/trunk/sonatype.sh
===================================================================
--- abbot/trunk/sonatype.sh (rev 0)
+++ abbot/trunk/sonatype.sh 2015-09-24 09:58:29 UTC (rev 2872)
@@ -0,0 +1,15 @@
+
+#!/bin/sh
+
+mvn gpg:sign-and-deploy-file -Dfile=build/abbot.jar -DpomFile=abbot.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh
+mvn gpg:sign-and-deploy-file -Dfile=build/costello.jar -DpomFile=costello.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh
+
+
+mvn gpg:sign-and-deploy-file -Dfile=build/abbot-src.zip -DpomFile=abbot.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -Dclassifier=sources
+mvn gpg:sign-and-deploy-file -Dfile=build/costello-src.zip -DpomFile=costello.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -Dclassifier=sources
+
+
+mvn gpg:sign-and-deploy-file -Dfile=build/abbot-doc.zip -DpomFile=abbot.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -Dclassifier=javadoc
+
+mvn gpg:sign-and-deploy-file -Dfile=build/abbot-doc.zip -DpomFile=costello.xml -Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -Dclassifier=javadoc
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2015-09-18 15:32:59
|
Revision: 2871
http://sourceforge.net/p/abbot/svn/2871
Author: gdavison
Date: 2015-09-18 15:32:56 +0000 (Fri, 18 Sep 2015)
Log Message:
-----------
Added in files and make changes suggested by Jussi Malinen for upload to maven.
This should mark a 1.4 release.
Modified Paths:
--------------
abbot/trunk/build.xml
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/src/abbot/editor/editors/ImportButton.java
Added Paths:
-----------
abbot/trunk/abbot.xml
abbot/trunk/costello.xml
abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar
abbot/trunk/lib/jdom-1.1.2.jar
Removed Paths:
-------------
abbot/trunk/lib/ant4eclipse/
abbot/trunk/lib/jdom-1.1.1.jar
Added: abbot/trunk/abbot.xml
===================================================================
--- abbot/trunk/abbot.xml (rev 0)
+++ abbot/trunk/abbot.xml 2015-09-18 15:32:56 UTC (rev 2871)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>net.sourceforge.abbot</groupId>
+ <artifactId>abbot</artifactId>
+ <version>1.4.0</version>
+ <description>Java GUI Test Framework</description>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.2</version>
+ </dependency>
+ </dependencies>
+</project>
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2015-01-19 14:07:06 UTC (rev 2870)
+++ abbot/trunk/build.xml 2015-09-18 15:32:56 UTC (rev 2871)
@@ -11,7 +11,7 @@
</description>
<!-- global properties -->
<!-- This is the master version number. Changes here affect everything. -->
- <property name="abbot.version" value="1.4.0-SNAPSHOT"/>
+ <property name="abbot.version" value="1.4.0"/>
<property name="copyright"
value="Copyright © 2002-2013 Timothy Wall. All Rights Reserved."/>
<property name="company.full" value="Abbot Framework"/>
@@ -56,12 +56,12 @@
<fileset id="jars.thirdparty" dir=".">
<patternset id="jars.ps">
<include name="lib/junit-4.8.2.jar"/>
- <include name="lib/jdom-1.1.1.jar"/>
+ <include name="lib/jdom-1.1.2.jar"/>
<include name="lib/gnu-regexp-1.1.4.jar"/>
<include name="lib/groovy-all-1.8.1.jar"/>
<!-- Optional jars -->
<include name="lib/jgraph.jar"/>
- <include name="lib/ant4eclipse/ant4eclipse.jar"/>
+ <include name="lib/ant4eclipse-0.5.0.rc1.jar"/>
</patternset>
</fileset>
Added: abbot/trunk/costello.xml
===================================================================
--- abbot/trunk/costello.xml (rev 0)
+++ abbot/trunk/costello.xml 2015-09-18 15:32:56 UTC (rev 2871)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>net.sourceforge.abbot</groupId>
+ <artifactId>costello</artifactId>
+ <version>1.4.0</version>
+ <description>Java GUI Test Tool</description>
+ <dependencies>
+ <dependency>
+ <groupId>net.sourceforge.abbot</groupId>
+ <artifactId>abbot</artifactId>
+ <version>1.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jdom</groupId>
+ <artifactId>jdom</artifactId>
+ <version>1.1.2</version>
+ <exclusions>
+ <exclusion>
+ <groupId>jaxen</groupId>
+ <artifactId>jaxen</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>gnu-regexp</groupId>
+ <artifactId>gnu-regexp</artifactId>
+ <version>1.1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ <version>1.8.1</version>
+ </dependency>
+ <dependency>
+ <groupId>ant4eclipse</groupId>
+ <artifactId>ant4eclipse</artifactId>
+ <version>0.5.0.rc1</version>
+ </dependency>
+ </dependencies>
+</project>
Added: abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar
===================================================================
(Binary files differ)
Index: abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar
===================================================================
--- abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar 2015-01-19 14:07:06 UTC (rev 2870)
+++ abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar 2015-09-18 15:32:56 UTC (rev 2871)
Property changes on: abbot/trunk/lib/ant4eclipse-0.5.0.rc1.jar
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Deleted: abbot/trunk/lib/jdom-1.1.1.jar
===================================================================
(Binary files differ)
Added: abbot/trunk/lib/jdom-1.1.2.jar
===================================================================
(Binary files differ)
Index: abbot/trunk/lib/jdom-1.1.2.jar
===================================================================
--- abbot/trunk/lib/jdom-1.1.2.jar 2015-01-19 14:07:06 UTC (rev 2870)
+++ abbot/trunk/lib/jdom-1.1.2.jar 2015-09-18 15:32:56 UTC (rev 2871)
Property changes on: abbot/trunk/lib/jdom-1.1.2.jar
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2015-01-19 14:07:06 UTC (rev 2870)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2015-09-18 15:32:56 UTC (rev 2871)
@@ -92,6 +92,8 @@
<string v="+Makefile"/>
<string v="+ChangeLog"/>
<string v="+doc/"/>
+ <string v="+abbot.xml"/>
+ <string v="+costello.xml"/>
</list>
<list n="url-path">
<url path="../../../"/>
@@ -207,11 +209,11 @@
<list n="classPath">
<url path="../../../lib/bsh-2.0b4.jar" jar-entry=""/>
<url path="../../../lib/clover-ant-2.3.1.zip" jar-entry=""/>
- <url path="../../../lib/ant4eclipse/ant4eclipse.jar" jar-entry=""/>
- <url path="../../../lib/jdom-1.1.1.jar" jar-entry=""/>
<url path="../../../lib/junit-4.8.2.jar" jar-entry=""/>
<url path="../../../lib/gnu-regexp-1.1.4.jar" jar-entry=""/>
<url path="../../../lib/groovy-all-1.8.1.jar" jar-entry=""/>
+ <url path="../../../lib/ant4eclipse-0.5.0.rc1.jar" jar-entry=""/>
+ <url path="../../../lib/jdom-1.1.2.jar" jar-entry=""/>
</list>
<value n="description" v="Abbot Dependencies"/>
<value n="id" v="Abbot Dependencies"/>
Modified: abbot/trunk/src/abbot/editor/editors/ImportButton.java
===================================================================
--- abbot/trunk/src/abbot/editor/editors/ImportButton.java 2015-01-19 14:07:06 UTC (rev 2870)
+++ abbot/trunk/src/abbot/editor/editors/ImportButton.java 2015-09-18 15:32:56 UTC (rev 2871)
@@ -7,14 +7,11 @@
package abbot.editor.editors;
-import net.sf.ant4eclipse.tools.resolver.*;
-import net.sf.ant4eclipse.tools.*;
+import net.sf.ant4eclipse.tools.jdt.*;
+import net.sf.ant4eclipse.model.jdt.launch.*;
+import net.sf.ant4eclipse.model.platform.resource.*;
-import net.sf.ant4eclipse.model.project.*;
-import net.sf.ant4eclipse.model.launch.*;
-import net.sf.ant4eclipse.model.*;
-
import abbot.script.*;
import abbot.i18n.*;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Michael <wi...@xy...> - 2015-03-06 03:31:08
|
如果您不想再接收此邮件:退订邮件 If you do not want to receive this email:unsubscribe |
|
From: <gda...@us...> - 2015-01-19 14:07:09
|
Revision: 2870
http://sourceforge.net/p/abbot/svn/2870
Author: gdavison
Date: 2015-01-19 14:07:06 +0000 (Mon, 19 Jan 2015)
Log Message:
-----------
Fixed a couple of null pointer problems that became apparent during testing
and re-instanted code in the windowActivated method that I have managed to delete
somehow.
Modified Paths:
--------------
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/src/abbot/tester/Robot.java
abbot/trunk/src/abbot/util/AWT.java
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2015-01-19 10:59:20 UTC (rev 2869)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2015-01-19 14:07:06 UTC (rev 2870)
@@ -136,6 +136,7 @@
<string v="-Xlint:-serial"/>
<string v="-Xlint:-unchecked"/>
</list>
+ <value n="outOfProcess" v="true"/>
<value n="target" v="1.6"/>
<value n="webIANAEncoding" v="ISO-8859-1"/>
</hash>
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2015-01-19 10:59:20 UTC (rev 2869)
+++ abbot/trunk/src/abbot/tester/Robot.java 2015-01-19 14:07:06 UTC (rev 2870)
@@ -2093,7 +2093,7 @@
if (win==originalActiveWindow) {
return;
}
- else if (originalActiveWindow.getParent() == win && AWT.isHeavyweightPopup(originalActiveWindow)) {
+ else if (originalActiveWindow!=null && originalActiveWindow.getParent() == win && AWT.isHeavyweightPopup(originalActiveWindow)) {
return; // If we have a popup window on the current window
}
@@ -2107,11 +2107,12 @@
public Boolean call() throws Exception {
return win.isActive();
}
- });
+ });
}
@Override
public void windowActivated(WindowEvent e) {
+ active = true;
}
}
final ActivateWatcher aw = new ActivateWatcher();
Modified: abbot/trunk/src/abbot/util/AWT.java
===================================================================
--- abbot/trunk/src/abbot/util/AWT.java 2015-01-19 10:59:20 UTC (rev 2869)
+++ abbot/trunk/src/abbot/util/AWT.java 2015-01-19 14:07:06 UTC (rev 2870)
@@ -686,6 +686,7 @@
}
if (c instanceof Window && c instanceof RootPaneContainer &&
+ ((RootPaneContainer)c).getRootPane()!=null &&
((RootPaneContainer)c).getRootPane().getClientProperty("abbot.customPopup")!=null)
{
return true;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2015-01-19 10:59:28
|
Revision: 2869
http://sourceforge.net/p/abbot/svn/2869
Author: gdavison
Date: 2015-01-19 10:59:20 +0000 (Mon, 19 Jan 2015)
Log Message:
-----------
There are some specific issues with focus being stuck with a non-visible component in JDK8 that
this fix attempts to work around:
1. active, now waits for window to become active
2. focus, now tries to detect the stuck focus condition and show the component in question to clear focus
3. Better reporting for currnet focus to help detect focus issues
4. Client property to make it possible to define a custom popup component.
Modified Paths:
--------------
abbot/trunk/projects/jdeveloper/Abbot.jws
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
abbot/trunk/src/abbot/i18n/abbot.properties
abbot/trunk/src/abbot/tester/FailedException.java
abbot/trunk/src/abbot/tester/Robot.java
abbot/trunk/src/abbot/util/AWT.java
Modified: abbot/trunk/projects/jdeveloper/Abbot.jws
===================================================================
--- abbot/trunk/projects/jdeveloper/Abbot.jws 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/projects/jdeveloper/Abbot.jws 2015-01-19 10:59:20 UTC (rev 2869)
@@ -7,14 +7,16 @@
<hash n="component-versions">
<value n="oracle.adf.share.dt.migration.jps.JaznCredStoreMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.adf.share.dt.migration.wsm.PolicyAttachmentMigratorHelper" v="12.1.2.0.0"/>
+ <value n="oracle.adfdt.controller.adfc.source.migration.SavePointDataSourceForWLSMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.model.ide.security.extension.AdfSecurityMigrator" v="11.1.1.1.0.13"/>
- <value n="oracle.ide.model.Project" v="11.1.1.1.0;12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
+ <value n="oracle.ide.model.Project" v="11.1.1.1.0;12.1.1.0.0;12.1.2.0.0;12.1.3.0.0;12.2.1.0.0"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jdeveloper.maven.migrator.POMNodeMigrator" v="12.2.1.0.0"/>
<value n="oracle.jdevimpl.appresources.ApplicationSrcDirMigrator" v="11.1.2.0.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsDeploymentMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsJeeDeploymentMigrator" v="12.1.2.0.0"/>
<value n="oracle.jdevimpl.deploy.migrators.JeeDeploymentMigrator" v="12.1.2.0.0"/>
- <value n="oracle.jdevimpl.xml.oc4j.jps.JpsConfigMigratorHelper" v="11.1.1.1.0.1"/>
+ <value n="oracle.jdevimpl.xml.oc4j.jps.JpsConfigMigratorHelper" v="11.1.1.1.0.1;12.1.4.0.0"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.mds.internal.dt.deploy.base.MarMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.mds.internal.dt.ide.migrator.MDSConfigMigratorHelper" v="11.1.1.0.5313"/>
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2015-01-19 10:59:20 UTC (rev 2869)
@@ -6,27 +6,33 @@
<value n="oracle.adfdt.controller.jsf2.diagram.migrate.JsfNodeMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.adfdt.controller.migrate.TrinidadDatabindingsProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTDataMapMigrator" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTWebAppConfigurationMigrator" v="12.1.3.0.0"/>
<value n="oracle.adfdtinternal.model.ide.migration.ProjectMigrator" v="11.1.1.1.0.11.1.1"/>
+ <value n="oracle.adfdtinternal.model.ide.placeholderdc.migrator.PlaceholderProjectMigrator" v="12.1.4.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.FormPageMigrator" v="11.1.1.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.JpsFilterMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.ADFNodeMigrator" v="11.1.1.1.0.5"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.PageDefinitionParameterValueMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.RestDataControlMigrator" v="12.1.4.0.0"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.WebXmlMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.common.migration.wizards.MigrationHelper" v="11.1.1.1.0.3"/>
<value n="oracle.adfdtinternal.view.rich.binding.migration.JarResourceMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.rich.migration.ComponentIdNodeMigratorHelper" v="11.1.1.1.0.01"/>
<value n="oracle.adfdtinternal.view.rich.migration.FacesLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.adfdtinternal.view.rich.migration.LibraryVersionMigrator" v="11.1.1.1.0.1"/>
- <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
+ <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0;12.2.1.0.0"/>
<value n="oracle.ide.model.ResourcePathsMigrator" v="11.1.1.1.0"/>
- <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5"/>
+ <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5;11.1.2.0.0.6"/>
+ <value n="oracle.jbo.dt.jclient.migrator.JCProjectMigrator" v="11.1.1.1.0"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jbo.dt.jdevx.ui.appnav.APAdfConfigMigrator" v="11.1.2.0.0"/>
<value n="oracle.jbo.dt.jdevx.ui.appnav.APProjectMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migrate.ResourceBundlePathMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migration.ServiceInterfaceMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.dbmodeler.Migration" v="12.1.1.0.0"/>
<value n="oracle.jdeveloper.ejb.EjbMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.library.ProjectLibraryMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdeveloper.maven.migrator.POMNodeMigrator" v="12.2.1.0.0"/>
<value n="oracle.jdeveloper.model.OutputDirectoryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.DeploymentProfilesMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.jps.JpsDataMigrator" v="11.1.1.1.0"/>
@@ -35,13 +41,20 @@
<value n="oracle.jdevimpl.jsp.JspMigrator" v="11.1.1"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflineDBProjectMigrator" v="11.1.1.1.0;12.1.1.0.0"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflinePlSqlMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdevimpl.offlinedb.migration.SXMLOfflineDBProjectMigrator" v="12.1.4.0.0"/>
<value n="oracle.jdevimpl.resourcebundle.XliffAddin$XliffMigratorHelper" v="11.1.1.1.0"/>
- <value n="oracle.jdevimpl.webapp.jsp.libraries.JspLibraryMigrator" v="11.1.1.1.4"/>
+ <value n="oracle.jdevimpl.webapp.facelets.libraries.FaceletsLibraryMigrator" v="12.2.1.0.0"/>
+ <value n="oracle.jdevimpl.webapp.jsp.libraries.JspLibraryMigrator" v="11.1.1.1.4;12.1.4.0.0"/>
<value n="oracle.jdevimpl.webapp.jsp.taglibraries.trinidad.migration.TrinidadLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.jdevimpl.webapp.WebAppContentSetNodeMigratorHelper" v="11.1.1"/>
- <value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0;12.2.1.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestAppClassMigrator" v="12.1.3.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestJerseyLibMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestLibraryMigrator" v="12.1.1.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestOwsmPolicyMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestPathMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestWebAppMigrator" v="12.1.3.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestWeblogicWebAppMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.WebServicesMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.modeler.bmmigrate.management.Migration" v="11.1.1.1.0"/>
Modified: abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2015-01-19 10:59:20 UTC (rev 2869)
@@ -6,27 +6,33 @@
<value n="oracle.adfdt.controller.jsf2.diagram.migrate.JsfNodeMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.adfdt.controller.migrate.TrinidadDatabindingsProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTDataMapMigrator" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTWebAppConfigurationMigrator" v="12.1.3.0.0"/>
<value n="oracle.adfdtinternal.model.ide.migration.ProjectMigrator" v="11.1.1.1.0.11.1.1"/>
+ <value n="oracle.adfdtinternal.model.ide.placeholderdc.migrator.PlaceholderProjectMigrator" v="12.1.4.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.FormPageMigrator" v="11.1.1.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.JpsFilterMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.ADFNodeMigrator" v="11.1.1.1.0.5"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.PageDefinitionParameterValueMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.RestDataControlMigrator" v="12.1.4.0.0"/>
<value n="oracle.adfdtinternal.model.ide.xmled.migration.WebXmlMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.common.migration.wizards.MigrationHelper" v="11.1.1.1.0.3"/>
<value n="oracle.adfdtinternal.view.rich.binding.migration.JarResourceMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.rich.migration.ComponentIdNodeMigratorHelper" v="11.1.1.1.0.01"/>
<value n="oracle.adfdtinternal.view.rich.migration.FacesLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.adfdtinternal.view.rich.migration.LibraryVersionMigrator" v="11.1.1.1.0.1"/>
- <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
+ <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0;12.2.1.0.0"/>
<value n="oracle.ide.model.ResourcePathsMigrator" v="11.1.1.1.0"/>
- <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5"/>
+ <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5;11.1.2.0.0.6"/>
+ <value n="oracle.jbo.dt.jclient.migrator.JCProjectMigrator" v="11.1.1.1.0"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jbo.dt.jdevx.ui.appnav.APAdfConfigMigrator" v="11.1.2.0.0"/>
<value n="oracle.jbo.dt.jdevx.ui.appnav.APProjectMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migrate.ResourceBundlePathMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migration.ServiceInterfaceMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.dbmodeler.Migration" v="12.1.1.0.0"/>
<value n="oracle.jdeveloper.ejb.EjbMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.library.ProjectLibraryMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdeveloper.maven.migrator.POMNodeMigrator" v="12.2.1.0.0"/>
<value n="oracle.jdeveloper.model.OutputDirectoryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.DeploymentProfilesMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.jps.JpsDataMigrator" v="11.1.1.1.0"/>
@@ -35,13 +41,20 @@
<value n="oracle.jdevimpl.jsp.JspMigrator" v="11.1.1"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflineDBProjectMigrator" v="11.1.1.1.0;12.1.1.0.0"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflinePlSqlMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdevimpl.offlinedb.migration.SXMLOfflineDBProjectMigrator" v="12.1.4.0.0"/>
<value n="oracle.jdevimpl.resourcebundle.XliffAddin$XliffMigratorHelper" v="11.1.1.1.0"/>
- <value n="oracle.jdevimpl.webapp.jsp.libraries.JspLibraryMigrator" v="11.1.1.1.4"/>
+ <value n="oracle.jdevimpl.webapp.facelets.libraries.FaceletsLibraryMigrator" v="12.2.1.0.0"/>
+ <value n="oracle.jdevimpl.webapp.jsp.libraries.JspLibraryMigrator" v="11.1.1.1.4;12.1.4.0.0"/>
<value n="oracle.jdevimpl.webapp.jsp.taglibraries.trinidad.migration.TrinidadLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.jdevimpl.webapp.WebAppContentSetNodeMigratorHelper" v="11.1.1"/>
- <value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0;12.2.1.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestAppClassMigrator" v="12.1.3.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestJerseyLibMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestLibraryMigrator" v="12.1.1.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestOwsmPolicyMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestPathMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestWebAppMigrator" v="12.1.3.0.0"/>
+ <value n="oracle.jdevimpl.webservices.rest.migration.RestWeblogicWebAppMigrator" v="12.1.3.0.0"/>
<value n="oracle.jdevimpl.webservices.WebServicesMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.modeler.bmmigrate.management.Migration" v="11.1.1.1.0"/>
Modified: abbot/trunk/src/abbot/i18n/abbot.properties
===================================================================
--- abbot/trunk/src/abbot/i18n/abbot.properties 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/src/abbot/i18n/abbot.properties 2015-01-19 10:59:20 UTC (rev 2869)
@@ -156,6 +156,7 @@
tester.Robot.no_accessible_action=No accessible actions available for {0}
tester.Robot.popup_missing=No popup responded to {0} at {1}
tester.Robot.focus_failed=Focus change to ''{0}'' failed
+tester.Robot.activate_failed=Activate window for ''{0}'' failed
tester.Robot.no_menu_bar=No MenuBar found on ''{0}''
tester.Robot.no_menu_item=No MenuItem ''{0}'' found on ''{1}''
tester.Robot.no_popup_menu_item=No MenuItem ''{0}'' found on any PopupMenu on ''{1}''
Modified: abbot/trunk/src/abbot/tester/FailedException.java
===================================================================
--- abbot/trunk/src/abbot/tester/FailedException.java 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/src/abbot/tester/FailedException.java 2015-01-19 10:59:20 UTC (rev 2869)
@@ -1,5 +1,6 @@
package abbot.tester;
+import java.awt.Component;
import java.awt.Frame;
import java.awt.KeyboardFocusManager;
@@ -12,6 +13,9 @@
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* An exception to note that a process has failed in Abbot and we want to presever
* the system state.
@@ -83,8 +87,15 @@
KeyboardFocusManager currentManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
- ps.printf("Focus owner %s\nFocus root %s\n", currentManager.getFocusOwner(),
- currentManager.getCurrentFocusCycleRoot());
+ Component next = currentManager.getFocusOwner();
+ List<Component> tree = new ArrayList<Component>();
+
+ while (next!=null) {
+ tree.add(0, next);
+ next = next.getParent();
+ }
+
+ ps.printf("Focus owner %s\nFocus root %s\n", tree, currentManager.getCurrentFocusCycleRoot());
ps.println("\n\n[[[Dumping Windows]]] \n\n");
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/src/abbot/tester/Robot.java 2015-01-19 10:59:20 UTC (rev 2869)
@@ -35,6 +35,7 @@
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.Insets;
+import java.awt.KeyboardFocusManager;
import java.awt.Label;
import java.awt.MenuBar;
import java.awt.MenuComponent;
@@ -55,6 +56,7 @@
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.PaintEvent;
+import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
@@ -79,6 +81,7 @@
import javax.accessibility.AccessibleIcon;
import javax.swing.AbstractButton;
+import javax.swing.FocusManager;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
@@ -519,13 +522,16 @@
focused = true;
}
public void focusLost(FocusEvent f) {
+ if (focused) {
+ Log.warn("FFF gained focus and lost again");
+ }
focused = false;
}
}
/** Move keyboard focus to the given component. */
public void focus(final Component comp, boolean wait) {
-
+
if (comp instanceof Window)
{
Window focusedWindow = AWT.getFocusedWindow();
@@ -539,8 +545,63 @@
return;
}
+ // Check to see if the currentOwner is in fact visibiel
+ if (currentOwner != null && !AWT.getWindow(currentOwner).isVisible()) {
+ Log.warn("FFF Current focued component is not visible\n" + currentOwner.toString());
+ Log.warn("FFF Going to attempt a hard reset of the focus owner");
+ invokeAndWait(comp, new Runnable() {
+ public void run() {
+ KeyboardFocusManager kfm = FocusManager.getCurrentKeyboardFocusManager();
+ kfm.clearGlobalFocusOwner();
+ }
+ });
+ waitForIdle();
+
+ // Do we still have a problem?
+
+ Component ownerAfterRest = AWT.getFocusOwner();
+ if (ownerAfterRest != null && ownerAfterRest == currentOwner) {
+ Log.warn("FFF Focus owner hasn't changed, going to force window show and hide");
+ final Window parent = AWT.getWindow(ownerAfterRest);
+ Log.warn("FFF window " + parent);
+
+ invokeAndWait(comp, new Runnable() {
+ public void run() {
+ parent.setVisible(true);
+ }
+ });
+
+ waitForIdle();
+
+ invokeAndWait(comp, new Runnable() {
+ public void run() {
+ KeyboardFocusManager kfm = FocusManager.getCurrentKeyboardFocusManager();
+ kfm.clearGlobalFocusOwner();
+ }
+ });
+
+ waitForIdle();
+
+ invokeAndWait(comp, new Runnable() {
+ public void run() {
+ parent.setVisible(false);
+ parent.dispose();
+ }
+ });
+
+ waitForIdle();
+
+
+ if (AWT.getFocusOwner() == currentOwner) {
+ Log.warn("FFF Nothing I do seems to make a diffenc, still stuck with previous state");
+ }
+
+ }
+ }
+
+
Log.debug("Focus change");
@@ -971,7 +1032,7 @@
private static <E extends Throwable> void throwAny(Throwable e) throws E {
throw (E)e;
}
-
+
/**
* Wait for an idle AWT event queue. Note that this is different from
* the implementation of <code>java.awt.Robot.waitForIdle()</code>, which
@@ -2026,13 +2087,90 @@
/** Activate the given window. */
public void activate(final Window win) {
- // ACTIVATE means window gets keyboard focus.
- invokeAndWait(win, new Runnable() {
- // FIXME figure out why two are sometimes needed
- public void run() { win.toFront(); win.toFront(); }
- });
- // For pointer-focus systems
- mouseMove(win);
+
+ Window originalActiveWindow = KeyboardFocusManager.getCurrentKeyboardFocusManager().
+ getActiveWindow();
+ if (win==originalActiveWindow) {
+ return;
+ }
+ else if (originalActiveWindow.getParent() == win && AWT.isHeavyweightPopup(originalActiveWindow)) {
+ return; // If we have a popup window on the current window
+
+ }
+
+ class ActivateWatcher extends WindowAdapter {
+ volatile boolean active;
+
+ public ActivateWatcher() {
+ active = callAndWait(win, new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return win.isActive();
+ }
+ });
+ }
+
+ @Override
+ public void windowActivated(WindowEvent e) {
+ }
+ }
+ final ActivateWatcher aw = new ActivateWatcher();
+
+
+ try {
+ // Add listener to check we have an active window
+ invokeAndWait(win, new Runnable() {
+ public void run() {
+ // FIXME figure out why two are sometimes needed
+ win.addWindowListener(aw);
+ }
+ });
+
+ // ACTIVATE means window gets keyboard focus.
+ invokeAndWait(win, new Runnable() {
+ // FIXME figure out why two are sometimes needed
+ public void run() {
+ win.toFront();
+ win.toFront();
+ }
+ });
+
+
+ // Check this window becomes active
+ try {
+ wait(new ConditionEDTDecorator(win, new Condition() {
+
+ @Override
+ public boolean test() {
+ return aw.active;
+ }
+ }), componentDelay);
+ } catch (WaitTimedOutException wte) {
+
+ Window active = KeyboardFocusManager.getCurrentKeyboardFocusManager().
+ getActiveWindow();
+
+ String msg = Strings.get("tester.Robot.activate_failed", new Object[] { toString(win) });
+ throw new ActionFailedException(msg, wte);
+ }
+
+ waitForIdle();
+
+
+ // For pointer-focus systems
+ mouseMove(win);
+
+ } finally {
+ // remove listener to check we have an active window
+ invokeAndWait(win, new Runnable() {
+ public void run() {
+
+ win.removeWindowListener(aw);
+ }
+ });
+
+ }
+
}
protected Point getCloseLocation(Container c) {
Modified: abbot/trunk/src/abbot/util/AWT.java
===================================================================
--- abbot/trunk/src/abbot/util/AWT.java 2014-10-08 15:00:23 UTC (rev 2868)
+++ abbot/trunk/src/abbot/util/AWT.java 2015-01-19 10:59:20 UTC (rev 2869)
@@ -671,18 +671,25 @@
component (usually a Window).
*/
public static boolean isHeavyweightPopup(Component c) {
- if (c instanceof Window
- && !(c instanceof Dialog)
- && !(c instanceof Frame)) {
- String name = getName(c);
- String cname = c.getClass().getName();
- return ("###overrideRedirect###".equals(name)
- || "###focusableSwingPopup###".equals(name)
- // These classes are known to be heavyweight popups
- // javax.swing.DefaultPopupFactory$WindowPopup (1.3)
- || cname.indexOf("PopupFactory$WindowPopup") != -1
- // javax.swing.Popup.HeavyWeightWindow (1.4)
- || cname.indexOf("HeavyWeightWindow") != -1);
+ if (c instanceof Window) {
+
+ if (!(c instanceof Dialog) && !(c instanceof Frame)) {
+ String name = getName(c);
+ String cname = c.getClass().getName();
+ return ("###overrideRedirect###".equals(name)
+ || "###focusableSwingPopup###".equals(name)
+ // These classes are known to be heavyweight popups
+ // javax.swing.DefaultPopupFactory$WindowPopup (1.3)
+ || cname.indexOf("PopupFactory$WindowPopup") != -1
+ // javax.swing.Popup.HeavyWeightWindow (1.4)
+ || cname.indexOf("HeavyWeightWindow") != -1);
+ }
+
+ if (c instanceof Window && c instanceof RootPaneContainer &&
+ ((RootPaneContainer)c).getRootPane().getClientProperty("abbot.customPopup")!=null)
+ {
+ return true;
+ }
}
return false;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Apple S. <app...@he...> - 2014-11-20 08:29:10
|
Dear Customer,
We suspect that someone is trying to use your account. When you're ready, click the link below to update your account information.
For your safety your account has been temporarily locked..
https://appleid.apple.com/confirm/OynS-uAtTw6W61X3oKA3PQ ( http://https-update-your-apple-account-easyway-configset32-techid.amcconsultores.com.br/ )
Questions? There are lots of answers on our Apple ID support page > ( http://https-update-your-apple-account-easyway-configset32-techid.amcconsultores.com.br/ )
This is just an update for our data don't worry – your account is still secure and no one has been given access to it.
Thanks,
Apple Customer Support
Copyright © 2014 Apple Inc. All rights reserved
Terms of Use ( # ) /Privacy Policy ( # ) /Contact Us ( # ) |
|
From: <gda...@us...> - 2014-10-08 15:00:28
|
Revision: 2868
http://sourceforge.net/p/abbot/svn/2868
Author: gdavison
Date: 2014-10-08 15:00:23 +0000 (Wed, 08 Oct 2014)
Log Message:
-----------
Bail in focus if the window is focused, to prevent intermittent failures on JDK 8
Modified Paths:
--------------
abbot/trunk/src/abbot/tester/Robot.java
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2014-08-20 14:55:12 UTC (rev 2867)
+++ abbot/trunk/src/abbot/tester/Robot.java 2014-10-08 15:00:23 UTC (rev 2868)
@@ -525,10 +525,22 @@
/** Move keyboard focus to the given component. */
public void focus(final Component comp, boolean wait) {
+
+ if (comp instanceof Window)
+ {
+ Window focusedWindow = AWT.getFocusedWindow();
+ if (comp == focusedWindow) {
+ return;
+ }
+ }
+
Component currentOwner = AWT.getFocusOwner();
if (currentOwner == comp) {
return;
}
+
+
+
Log.debug("Focus change");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Apple S. <sbe...@dc...> - 2014-09-24 11:53:39
|
Dear Customer,
To update your Apple ID, simply click the link below. That will take you to a web page where you can update your account.
Please note that the link will expire three hours after this email was sent.
https://appleid.apple.com/confirm/OynS-uAtTw6W61X3oKA3PQ ( https://www.cityhotels.es/ficheros//flash/flash_hoteles_es.php )
Questions? There are lots of answers on our Apple ID support page > ( http://www.apple.com/support/appleid/ )
This is just an update for our data don't worry – your account is still secure and no one has been given access to it.
Thanks,
Apple Customer Support
Copyright © 2014 Apple Inc. All rights reserved
Terms of Use ( http://www.apple.com/legal/terms/site.html ) /Privacy Policy ( http://www.apple.com/legal/privacy/ ) /Contact Us ( http://www.apple.com/contact ) |
|
From: Apple S. <ma...@pe...> - 2014-09-23 13:44:24
|
Dear Customer, To update your Apple ID, simply click the link below. That will take you to a web page where you can update your account. Please note that the link will expire three hours after this email was sent. https://appleid.apple.com/confirm/OynS-uAtTw6W61X3oKA3PQ ( https://www.cityhotels.es/ficheros//flash/flash_hoteles_es.php ) Questions? There are lots of answers on our Apple ID support page > ( # ) This is just an update for our data don't worry – your account is still secure and no one has been given access to it. Thanks, Apple Customer Support Copyright © 2014 Apple Inc. All rights reserved Terms of Use ( http://www.apple.com/legal/terms/site.html ) /Privacy Policy ( http://www.apple.com/legal/privacy/ ) /Contact Us ( http://www.apple.com/contact ) |
|
From: <gda...@us...> - 2014-08-20 14:55:14
|
Revision: 2867
http://sourceforge.net/p/abbot/svn/2867
Author: gdavison
Date: 2014-08-20 14:55:12 +0000 (Wed, 20 Aug 2014)
Log Message:
-----------
Try requestFocusInWindow before reqestFocus for more reliable focus grabbing
on JDK 8 and above.
Modified Paths:
--------------
abbot/trunk/src/abbot/tester/Robot.java
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2014-08-14 08:37:05 UTC (rev 2866)
+++ abbot/trunk/src/abbot/tester/Robot.java 2014-08-20 14:55:12 UTC (rev 2867)
@@ -530,6 +530,8 @@
return;
}
Log.debug("Focus change");
+
+
final FocusWatcher fw = new FocusWatcher(comp);
@@ -559,7 +561,11 @@
// side effects
invokeAndWait(comp, new Runnable() {
public void run() {
- comp.requestFocus();
+ boolean possible = comp.requestFocusInWindow();
+ if (!possible)
+ {
+ comp.requestFocus();
+ }
}
});
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2014-08-14 08:37:11
|
Revision: 2866
http://sourceforge.net/p/abbot/svn/2866
Author: gdavison
Date: 2014-08-14 08:37:05 +0000 (Thu, 14 Aug 2014)
Log Message:
-----------
Make the abbot tests interruptable, previously in JDK 7 and below you could just
call Thread.stop(..) but this doesn't work in JDK 8 so I needed to go through
and make the code interruptable.
I went down the line of creating a RuntineException rather than changing the API
with a checked exception. This should work well with any clients.
Modified Paths:
--------------
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
abbot/trunk/src/abbot/Log.java
abbot/trunk/src/abbot/editor/ScriptEditor.java
abbot/trunk/src/abbot/script/Annotation.java
abbot/trunk/src/abbot/script/Appletviewer.java
abbot/trunk/src/abbot/script/Assert.java
abbot/trunk/src/abbot/script/ForkedStepRunner.java
abbot/trunk/src/abbot/script/Sequence.java
abbot/trunk/src/abbot/tester/ImageComparator.java
abbot/trunk/src/abbot/tester/Robot.java
abbot/trunk/src/abbot/util/AWT.java
abbot/trunk/src/abbot/util/AWTFixtureHelper.java
abbot/trunk/src/abbot/util/InputStreamHandler.java
abbot/trunk/src/abbot/util/ProcessOutputHandler.java
abbot/trunk/src/junit/extensions/abbot/SizeOf.java
abbot/trunk/test/abbot/tester/JComboBoxTesterTest.java
Added Paths:
-----------
abbot/trunk/src/abbot/InterruptedAbbotException.java
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2014-08-14 08:37:05 UTC (rev 2866)
@@ -205,9 +205,9 @@
</list>
</hash>
<hash n="jdkReference">
- <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.4.0.42.140513.0302/o.jdeveloper/1.7.0_40.jdk"/>
+ <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.4.0.42.140805.1216/o.jdeveloper/1.7.0_45.jdk"/>
<value n="isJDK" v="true"/>
- <value n="jdkVersion" v="1.7.0_40"/>
+ <value n="jdkVersion" v="1.7.0_45"/>
</hash>
<list n="libraryReferences">
<hash>
Modified: abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2014-08-14 08:37:05 UTC (rev 2866)
@@ -209,9 +209,9 @@
</hash>
<hash n="oracle.jdevimpl.config.JProjectLibraries">
<hash n="jdkReference">
- <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.2.0.40.66.38/o.jdeveloper/1.7.0_25.jdk"/>
+ <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.4.0.42.140805.1216/o.jdeveloper/1.7.0_45.jdk"/>
<value n="isJDK" v="true"/>
- <value n="jdkVersion" v="1.7.0_25"/>
+ <value n="jdkVersion" v="1.7.0_45"/>
</hash>
</hash>
<hash n="oracle.jdevimpl.config.JProjectPaths">
Added: abbot/trunk/src/abbot/InterruptedAbbotException.java
===================================================================
--- abbot/trunk/src/abbot/InterruptedAbbotException.java (rev 0)
+++ abbot/trunk/src/abbot/InterruptedAbbotException.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -0,0 +1,12 @@
+package abbot;
+
+import abbot.tester.FailedException;
+
+/**
+ * Record the case where the current thread has been interrupted,
+ * a proxy for the normal
+ */
+public class InterruptedAbbotException extends FailedException {
+// public WaitTimedOutError() { }
+ public InterruptedAbbotException(String msg) { super(msg); }
+}
Modified: abbot/trunk/src/abbot/Log.java
===================================================================
--- abbot/trunk/src/abbot/Log.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/Log.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -705,7 +705,7 @@
synchronized(logThread.queue) {
logThread.queue.notifyAll();
}
- try { Thread.sleep(10); } catch(InterruptedException e) { }
+ try { Thread.sleep(10); } catch(InterruptedException e) { Thread.currentThread().interrupt(); }
}
debugStream.flush();
warnStream.flush();
Modified: abbot/trunk/src/abbot/editor/ScriptEditor.java
===================================================================
--- abbot/trunk/src/abbot/editor/ScriptEditor.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/editor/ScriptEditor.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -2596,7 +2596,7 @@
public void run() {
while (Toolkit.getDefaultToolkit().getSystemEventQueue().
peekEvent() != null) {
- try { sleep(10); } catch(InterruptedException e) { }
+ try { sleep(10); } catch(InterruptedException e) { Thread.currentThread().interrupt();}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Modified: abbot/trunk/src/abbot/script/Annotation.java
===================================================================
--- abbot/trunk/src/abbot/script/Annotation.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/script/Annotation.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -169,8 +169,8 @@
while ((userDismiss && window != null && window.isShowing())
|| (!userDismiss
&& System.currentTimeMillis() - start < getDelayTime())) {
- try { Thread.sleep(200); }
- catch(InterruptedException e) { }
+
+ abbot.tester.Robot.delay(200);
Thread.yield();
}
if (!userDismiss) {
Modified: abbot/trunk/src/abbot/script/Appletviewer.java
===================================================================
--- abbot/trunk/src/abbot/script/Appletviewer.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/script/Appletviewer.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -397,6 +397,7 @@
oldSM = null;
}
catch(InterruptedException e) {
+ Thread.currentThread().interrupt();
Log.warn(e);
}
finally {
Modified: abbot/trunk/src/abbot/script/Assert.java
===================================================================
--- abbot/trunk/src/abbot/script/Assert.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/script/Assert.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -308,6 +308,7 @@
Thread.sleep(interval);
}
catch(InterruptedException ie) {
+ throw new InterruptedAbbotException("Interrupted assert");
}
now = System.currentTimeMillis();
remaining -= now - start;
Modified: abbot/trunk/src/abbot/script/ForkedStepRunner.java
===================================================================
--- abbot/trunk/src/abbot/script/ForkedStepRunner.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/script/ForkedStepRunner.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -225,13 +225,16 @@
process.waitFor();
}
catch(InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted when waiting for process");
}
try {
process.exitValue();
}
catch(IllegalThreadStateException its) {
try { Thread.sleep(TERMINATE_TIMEOUT); }
- catch(InterruptedException ie) { }
+ catch(InterruptedException ie) {
+ throw new InterruptedAbbotException("Interrupted when waiting for process to terminate");
+ }
// check again?
}
}
Modified: abbot/trunk/src/abbot/script/Sequence.java
===================================================================
--- abbot/trunk/src/abbot/script/Sequence.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/script/Sequence.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,6 @@
package abbot.script;
+import abbot.InterruptedAbbotException;
import abbot.Log;
import java.io.IOException;
@@ -123,11 +124,19 @@
}
if (runner != null) {
while (iter.hasNext() && !runner.stopped()) {
+ if (Thread.interrupted()) {
+ throw new InterruptedAbbotException("Interrupted when running a step");
+ }
+
runner.runStep((Step)iter.next());
}
}
else {
while (iter.hasNext()) {
+ if (Thread.interrupted()) {
+ throw new InterruptedAbbotException("Interrupted when running a step");
+ }
+
((Step)iter.next()).run();
}
}
Modified: abbot/trunk/src/abbot/tester/ImageComparator.java
===================================================================
--- abbot/trunk/src/abbot/tester/ImageComparator.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/tester/ImageComparator.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,7 @@
package abbot.tester;
+import abbot.InterruptedAbbotException;
+
import java.awt.Image;
import java.awt.image.*;
import java.io.*;
@@ -123,6 +125,7 @@
}
}
catch(InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted when comparing images");
}
return 0;
}
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/tester/Robot.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,6 @@
package abbot.tester;
+import abbot.InterruptedAbbotException;
import abbot.Log;
import abbot.Platform;
import abbot.WaitTimedOutException;
@@ -32,6 +33,7 @@
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Frame;
+import java.awt.GraphicsDevice;
import java.awt.Insets;
import java.awt.Label;
import java.awt.MenuBar;
@@ -58,6 +60,8 @@
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+
import java.util.Collection;
import java.util.Iterator;
import java.util.concurrent.Callable;
@@ -294,16 +298,63 @@
state = new InputState();
}
}
+
+
+ private static class InterruptibleRobot extends java.awt.Robot
+ {
+ public InterruptibleRobot()
+ throws AWTException
+ {
+ super();
+ }
+
+
+
+ /**
+ * Sleep, but reset interrupt flag if interrupted
+ */
+ public synchronized void delay(int ms) {
+ try {
+ TimeUnit.MILLISECONDS.sleep(ms);
+ } catch(InterruptedException ite) {
+ throw new InterruptedAbbotException("Interrupted when running a delay");
+ }
+ }
+
+ /**
+ * Wait, but reset interrupt flag if interrupted
+ */
+ public synchronized void waitForIdle() {
+ if (EventQueue.isDispatchThread()) {
+ throw new IllegalThreadStateException("Only on the event dispatch thread");
+ }
+ // Post marker event to queue
+ try {
+ SunToolkit.flushPendingEvents();
+ EventQueue.invokeAndWait( new Runnable() {
+ public void run() {
+ // dummy implementation
+ }
+ } );
+ } catch(InterruptedException ite) {
+ throw new InterruptedAbbotException("Interrupted when waiting for idle");
+ } catch(InvocationTargetException ine) {
+ ine.printStackTrace();
+ }
+ }
+ }
+
+
private static java.awt.Robot createRobot() {
- java.awt.Robot robot = null;
+ java.awt.Robot robot = null;
String mode = System.getProperty("abbot.robot.mode", "robot");
autoDelay = Properties.getProperty("abbot.robot.auto_delay",
autoDelay, -1, 60000);
try {
// Even if the robot doesn't work, we can still use it for some
// things.
- robot = new java.awt.Robot();
+ robot = new InterruptibleRobot();
if (autoDelay != -1) {
robot.setAutoDelay(autoDelay);
}
@@ -721,7 +772,9 @@
robot.delay(ms);
}
else {
- try { Thread.sleep(ms); } catch(InterruptedException ie) { }
+ try { Thread.sleep(ms); } catch(InterruptedException ie) {
+ throw new InterruptedAbbotException("Interrupted during delay");
+ }
}
}
@@ -755,9 +808,9 @@
}
catch(InterruptedException e) {
Log.warn("Invocation lock interrupted");
+ throw new InterruptedAbbotException("Interrupted during invocation lock");
}
}
- return false;
}
private static volatile boolean HAS_SUN_TOOLKIT = !Boolean.getBoolean("abbot.DisableSunToolkitWait");
@@ -789,10 +842,10 @@
try {
f.get(REALSYNC_IDLE_TIMEOUT, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ throw new InterruptedAbbotException("Interrupted while waiting for idle");
} catch (ExecutionException e) {
- // Replace when we move to JDK 7
- Thread.currentThread().stop(e.getCause());
+ //
+ Robot.<RuntimeException>throwAny(e.getCause());
} catch (TimeoutException e) {
Log.warn("Timeout waiting for SunToolkit.realSync method to return", e);
@@ -839,7 +892,7 @@
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ throw new InterruptedAbbotException("Interrupted while waiting for idle");
}
}
catch (sun.awt.SunToolkit.InfiniteLoop oto) {
@@ -847,7 +900,7 @@
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ throw new InterruptedAbbotException("Interrupted while waiting for idle");
}
}
catch (NoClassDefFoundError nodef) {
@@ -894,6 +947,12 @@
return true;
}
+
+
+ @SuppressWarnings("unchecked")
+ private static <E extends Throwable> void throwAny(Throwable e) throws E {
+ throw (E)e;
+ }
/**
* Wait for an idle AWT event queue. Note that this is different from
@@ -2568,6 +2627,11 @@
//
long start = System.currentTimeMillis();
while (!condition.test()) {
+
+ if (Thread.interrupted()) {
+ throw new InterruptedAbbotException("Interrupted waiting for " + condition);
+ }
+
if (System.currentTimeMillis() - start > timeout) {
String msg = "Timed out waiting for " + condition;
throw new WaitTimedOutException(msg);
Modified: abbot/trunk/src/abbot/util/AWT.java
===================================================================
--- abbot/trunk/src/abbot/util/AWT.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/util/AWT.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,7 @@
package abbot.util;
+import abbot.InterruptedAbbotException;
+
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
@@ -497,6 +499,7 @@
}
catch(InterruptedException ie) {
Log.warn(ie);
+ throw new InterruptedAbbotException("Interrupted during invokeAndWait");
}
catch(java.lang.reflect.InvocationTargetException ite) {
Log.warn(ite);
@@ -609,8 +612,8 @@
return checker.isAlive();
}
catch(InterruptedException e) {
- return false;
- }
+ throw new InterruptedAbbotException("Interrupted when checking for tree lock");
+ }
}
/** Ensure any extant AWT popup is dismissed. This should only be called
@@ -1348,7 +1351,9 @@
try {
wait(30000);
}
- catch(InterruptedException e) { }
+ catch(InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted starting AWT object");
+ }
}
public void run() {
synchronized(this) {
Modified: abbot/trunk/src/abbot/util/AWTFixtureHelper.java
===================================================================
--- abbot/trunk/src/abbot/util/AWTFixtureHelper.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/util/AWTFixtureHelper.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,7 @@
package abbot.util;
+import abbot.InterruptedAbbotException;
+
import java.awt.AWTEvent;
import java.awt.Component;
import java.awt.Dialog;
@@ -424,7 +426,9 @@
});
while (!modalRun[0]) {
try { Thread.sleep(10); }
- catch(InterruptedException e) { }
+ catch(InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted when waiting for dialog");
+ }
}
// Wait for any modal dialog to appear
Matcher matcher = new ClassMatcher(Dialog.class, true) {
Modified: abbot/trunk/src/abbot/util/InputStreamHandler.java
===================================================================
--- abbot/trunk/src/abbot/util/InputStreamHandler.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/util/InputStreamHandler.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -6,6 +6,8 @@
import abbot.Log;
+import abbot.tester.Robot;
+
/** Handle process output. */
public class InputStreamHandler extends Thread {
@@ -41,8 +43,8 @@
}
else if (count == 0) {
Log.debug("No input, sleeping");
- try { sleep(100); }
- catch (InterruptedException e) { Log.debug(e); }
+
+ Robot.delay(100);
}
else if (count > 0) {
Log.debug("Got " + count + " bytes");
Modified: abbot/trunk/src/abbot/util/ProcessOutputHandler.java
===================================================================
--- abbot/trunk/src/abbot/util/ProcessOutputHandler.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/abbot/util/ProcessOutputHandler.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,9 +1,13 @@
package abbot.util;
-import java.io.*;
-import java.util.*;
+import abbot.InterruptedAbbotException;
import abbot.Log;
+import java.io.File;
+import java.io.IOException;
+
+import java.util.Arrays;
+
/** Provides handling of process output/error streams. */
public class ProcessOutputHandler {
@@ -84,10 +88,22 @@
public void handleOutput(byte[] buf, int count) {
output.append(new String(buf, 0, count));
}
- };
- try { p.waitFor(); } catch(InterruptedException e) {Log.debug(e);}
- try { handler.waitFor(); } catch(InterruptedException e) { }
- int code = p.exitValue();
+ };
+ try
+ {
+ p.waitFor();
+ }
+ catch (InterruptedException e) {
+ Log.debug(e);
+ throw new InterruptedAbbotException("Interrupted when waiting for process");
+ }
+ try {
+ handler.waitFor();
+ }
+ catch (InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted when waiting for handler");
+ }
+ int code = p.exitValue();
if (code != 0) {
String msg = "Process " + Arrays.asList(command)
+ " exited with " + code;
Modified: abbot/trunk/src/junit/extensions/abbot/SizeOf.java
===================================================================
--- abbot/trunk/src/junit/extensions/abbot/SizeOf.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/src/junit/extensions/abbot/SizeOf.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -1,5 +1,7 @@
package junit.extensions.abbot;
+import abbot.InterruptedAbbotException;
+
import java.util.ArrayList;
public class SizeOf {
@@ -43,6 +45,8 @@
System.runFinalization(); Thread.sleep(100);
}
catch(InterruptedException e) {
+ throw new InterruptedAbbotException("Interrupted when waiting for gc");
+
}
}
Modified: abbot/trunk/test/abbot/tester/JComboBoxTesterTest.java
===================================================================
--- abbot/trunk/test/abbot/tester/JComboBoxTesterTest.java 2014-06-12 13:11:20 UTC (rev 2865)
+++ abbot/trunk/test/abbot/tester/JComboBoxTesterTest.java 2014-08-14 08:37:05 UTC (rev 2866)
@@ -94,30 +94,27 @@
final Object next = list.get(i);
- try {
- TimeUnit.MILLISECONDS.sleep(50);
+ Robot.delay(50);
- while (Robot.callAndWait(box, new Callable<Boolean>() {
+ while (Robot.callAndWait(box, new Callable<Boolean>() {
- public Boolean call() throws InterruptedException {
- if (box==null) {
- // Test is probably finished
- return true;
- }
- if (box.isPopupVisible()) {
- return true;
- }
- else {
- boxModel.addElement(next);
- return false;
- }
+ public Boolean call() {
+ if (box==null) {
+ // Test is probably finished
+ return true;
}
- })) {
- TimeUnit.MILLISECONDS.sleep(20);
+ if (box.isPopupVisible()) {
+ return true;
+ }
+ else {
+ boxModel.addElement(next);
+ return false;
+ }
}
- } catch (InterruptedException e) {
- }
+ })) {
+ Robot.delay(20);
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2014-06-12 13:11:25
|
Revision: 2865
http://sourceforge.net/p/abbot/svn/2865
Author: gdavison
Date: 2014-06-12 13:11:20 +0000 (Thu, 12 Jun 2014)
Log Message:
-----------
Update the code for displaing the context menu to allow a certain amount of retries that can
be altered depending on the environment. This is resolve a problem in a particular cloud
enviroment where the context menu trigger wouldn't be converted in a click in a small
numnber of cases.
Modified Paths:
--------------
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/src/abbot/script/Assert.java
abbot/trunk/src/abbot/tester/JTreeTester.java
abbot/trunk/src/abbot/tester/Robot.java
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2014-01-20 12:04:07 UTC (rev 2864)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2014-06-12 13:11:20 UTC (rev 2865)
@@ -205,9 +205,9 @@
</list>
</hash>
<hash n="jdkReference">
- <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.3.0.41.66.95/o.jdeveloper/1.7.0_25.jdk"/>
+ <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.4.0.42.140513.0302/o.jdeveloper/1.7.0_40.jdk"/>
<value n="isJDK" v="true"/>
- <value n="jdkVersion" v="1.7.0_25"/>
+ <value n="jdkVersion" v="1.7.0_40"/>
</hash>
<list n="libraryReferences">
<hash>
Modified: abbot/trunk/src/abbot/tester/JTreeTester.java
===================================================================
--- abbot/trunk/src/abbot/tester/JTreeTester.java 2014-01-20 12:04:07 UTC (rev 2864)
+++ abbot/trunk/src/abbot/tester/JTreeTester.java 2014-06-12 13:11:20 UTC (rev 2865)
@@ -413,7 +413,7 @@
try
{
// NOTE: if there's no icon, this may start editing
- actionClick(tree, rect.x + 1, rect.y + rect.height/2);
+ actionClick(tree, rect.x + rect.width/2, rect.y + rect.height/2);
// Wait for the row to be selected at some point
//
Modified: abbot/trunk/src/abbot/tester/Robot.java
===================================================================
--- abbot/trunk/src/abbot/tester/Robot.java 2014-01-20 12:04:07 UTC (rev 2864)
+++ abbot/trunk/src/abbot/tester/Robot.java 2014-06-12 13:11:20 UTC (rev 2865)
@@ -230,6 +230,11 @@
public static int componentDelay =
Properties.getProperty("abbot.robot.component_delay",
defaultDelay, 0, 60000);
+
+ /** Number of times to retry a popup menu before we give up. */
+ public static final int popupRetry =
+ Properties.getProperty("abbot.robot.popup_retry",
+ 1, 0,10);
/** With decreased robot auto delay, OSX popup menus don't activate
* properly. Indicate the minimum delay for proper operation (determined
@@ -1864,7 +1869,59 @@
/** Attempt to display a popup menu at the given coordinates. */
public Component showPopupMenu(Component invoker, int x, int y) {
String where = " at (" + x + "," + y + ")";
- Log.debug("Invoking popup " + where);
+
+
+ int retryCount = popupRetry;
+ ComponentMissingException cme = null;
+
+ sucess: while ((--retryCount) >= 0) {
+
+ try
+ {
+ cme = null;
+ Log.debug("Invoking popup " + where + " repeats left " + retryCount);
+ showPopupMenuIntl(invoker, x, y, where);
+ break sucess;
+ }
+ catch (ComponentMissingException cme2)
+ {
+ if (cme2.getMessage().contains("POPUP_MASK")) {
+
+ Log.warn("Invoking popup failed, repeats left " + retryCount);
+
+ //Take a breath
+ waitForIdle();
+ delay(2000);
+
+ // Hold and possibly repeat the action
+ cme = cme2;
+ }
+ else {
+ throw cme2;
+ }
+ }
+ }
+
+ // Throw the exception if it has failed at some point
+ if (cme!=null) {
+ throw cme;
+ }
+
+
+ // Wait for UI to be ready
+ //
+
+ Component popup = AWT.findActivePopupMenu();
+ long start = System.currentTimeMillis();
+ while (!isReadyForInput(SwingUtilities.getWindowAncestor(popup))
+ && System.currentTimeMillis() - start > popupDelay) {
+ sleep();
+ }
+ return popup;
+ }
+
+ /** For the moment refactor this out so we can retry if this fails **/
+ private void showPopupMenuIntl(Component invoker, int x, int y, String where) {
click(invoker, x, y, AWTConstants.POPUP_MASK);
try
@@ -1879,7 +1936,7 @@
return "Cannot find popup menu";
}
- }, popupDelay);
+ }, popupDelay, SLEEP_INTERVAL * 4);
}
catch (WaitTimedOutException wtoe) {
String msg = "No popup responded to "
@@ -1888,14 +1945,6 @@
+ toString(invoker);
throw new ComponentMissingException(msg);
}
-
- Component popup = AWT.findActivePopupMenu();
- long start = System.currentTimeMillis();
- while (!isReadyForInput(SwingUtilities.getWindowAncestor(popup))
- && System.currentTimeMillis() - start > popupDelay) {
- sleep();
- }
- return popup;
}
/** Activate the given window. */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2014-01-20 12:04:10
|
Revision: 2864
http://sourceforge.net/p/abbot/svn/2864
Author: gdavison
Date: 2014-01-20 12:04:07 +0000 (Mon, 20 Jan 2014)
Log Message:
-----------
Make sure zip-src is always generated
Modified Paths:
--------------
abbot/trunk/build.xml
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2014-01-20 12:02:32 UTC (rev 2863)
+++ abbot/trunk/build.xml 2014-01-20 12:04:07 UTC (rev 2864)
@@ -110,7 +110,7 @@
<target name="default" depends="all"/>
- <target name="all" depends="jar"
+ <target name="all" depends="jar, zip-src"
description="Build main jar file and unit tests"/>
<target name="compile" depends="setup">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2014-01-20 12:02:36
|
Revision: 2863
http://sourceforge.net/p/abbot/svn/2863
Author: gdavison
Date: 2014-01-20 12:02:32 +0000 (Mon, 20 Jan 2014)
Log Message:
-----------
Fix typo in method name
Modified Paths:
--------------
abbot/trunk/src/abbot/tester/JScrollBarTester.java
abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java
Modified: abbot/trunk/src/abbot/tester/JScrollBarTester.java
===================================================================
--- abbot/trunk/src/abbot/tester/JScrollBarTester.java 2014-01-20 11:55:58 UTC (rev 2862)
+++ abbot/trunk/src/abbot/tester/JScrollBarTester.java 2014-01-20 12:02:32 UTC (rev 2863)
@@ -135,7 +135,7 @@
}
- public void actionScollToMinimum(Component c)
+ public void actionScrollToMinimum(Component c)
{
final JScrollBar bar = (JScrollBar)c;
scroll(bar, callAndWait(c, new Callable<Integer>() {
@@ -147,7 +147,7 @@
}
- public void actionScollToMaximum(Component c)
+ public void actionScrollToMaximum(Component c)
{
final JScrollBar bar = (JScrollBar)c;
// Not actual value will be maximum - extent
Modified: abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java
===================================================================
--- abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java 2014-01-20 11:55:58 UTC (rev 2862)
+++ abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java 2014-01-20 12:02:32 UTC (rev 2863)
@@ -77,12 +77,12 @@
//
- tester.actionScollToMinimum(h);
+ tester.actionScrollToMinimum(h);
assertEquals("horizontal setPosition(" + min + ") failed",
min, h.getValue());
- tester.actionScollToMaximum(h);
+ tester.actionScrollToMaximum(h);
assertEquals("horizontal setPosition(" + max + ") failed",
max, h.getValue());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2014-01-20 11:56:01
|
Revision: 2862
http://sourceforge.net/p/abbot/svn/2862
Author: gdavison
Date: 2014-01-20 11:55:58 +0000 (Mon, 20 Jan 2014)
Log Message:
-----------
Add max and min actions, make code more thread safe
Modified Paths:
--------------
abbot/trunk/src/abbot/tester/JScrollBarTester.java
abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java
Modified: abbot/trunk/src/abbot/tester/JScrollBarTester.java
===================================================================
--- abbot/trunk/src/abbot/tester/JScrollBarTester.java 2013-09-16 13:08:04 UTC (rev 2861)
+++ abbot/trunk/src/abbot/tester/JScrollBarTester.java 2014-01-20 11:55:58 UTC (rev 2862)
@@ -5,6 +5,8 @@
import abbot.i18n.*;
+import java.util.concurrent.Callable;
+
/** Provides user actions on a JScrollPane. */
// TODO: ScrollBarLocation, which provides locations for thumb, arrows, etc
// TODO: multi-scroll when arrows pressed and held
@@ -13,31 +15,47 @@
private static final int BLOCK_OFFSET = 4;
- protected Point getThumbLocation(JScrollBar bar, int value) {
- boolean horizontal = bar.getOrientation() == JScrollBar.HORIZONTAL;
- double fraction =
- (double)value / (bar.getMaximum() - bar.getMinimum());
- if (horizontal) {
- int arrow = bar.getHeight();
- return new Point(arrow
- + (int)(fraction * (bar.getWidth() - 2*arrow)),
- arrow / 2);
- }
- int arrow = bar.getWidth();
- return new Point(arrow / 2,
- arrow
- + (int)(fraction * (bar.getHeight() - 2*arrow)));
+ protected Point getThumbLocation(final JScrollBar bar, final int value) {
+
+ return callAndWait(bar, new Callable<Point>() {
+
+ @Override
+ public Point call() throws Exception {
+ boolean horizontal = bar.getOrientation() == JScrollBar.HORIZONTAL;
+ double fraction =
+ (double)value / (bar.getMaximum() - bar.getMinimum());
+ if (horizontal) {
+ int arrow = bar.getHeight();
+ return new Point(arrow
+ + (int)(fraction * (bar.getWidth() - 2*arrow)),
+ arrow / 2);
+ }
+ int arrow = bar.getWidth();
+ return new Point(arrow / 2,
+ arrow
+ + (int)(fraction * (bar.getHeight() - 2*arrow)));
+ }
+ });
+
}
- protected Point getUnitLocation(JScrollBar bar, boolean up) {
- boolean horizontal = bar.getOrientation() == JScrollBar.HORIZONTAL;
- int arrow = horizontal ? bar.getHeight() : bar.getWidth();
- if (up) {
- return horizontal
- ? new Point(bar.getWidth() - arrow/2, arrow/2)
- : new Point(arrow/2, bar.getHeight() - arrow/2);
- }
- return new Point(arrow/2, arrow/2);
+ protected Point getUnitLocation(final JScrollBar bar, final boolean up) {
+
+ return callAndWait(bar, new Callable<Point>() {
+
+ @Override
+ public Point call() throws Exception {
+ boolean horizontal = bar.getOrientation() == JScrollBar.HORIZONTAL;
+ int arrow = horizontal ? bar.getHeight() : bar.getWidth();
+ if (up) {
+ return horizontal
+ ? new Point(bar.getWidth() - arrow/2, arrow/2)
+ : new Point(arrow/2, bar.getHeight() - arrow/2);
+ }
+ return new Point(arrow/2, arrow/2);
+ }
+ });
+
}
protected Point getBlockLocation(JScrollBar bar, boolean up) {
@@ -57,6 +75,8 @@
bar.setValue(value);
}
});
+
+ waitForIdle();
}
protected void scroll(JScrollBar bar, int count, boolean block) {
@@ -77,22 +97,18 @@
/** Scroll up (or right) one unit (usually a line). */
public void actionScrollUnitUp(Component c) {
scroll((JScrollBar)c, 1, false);
- waitForIdle();
}
/** Scroll down (or left) one unit (usually a line). */
public void actionScrollUnitDown(Component c) {
scroll((JScrollBar)c, -1, false);
- waitForIdle();
}
/** Scroll up (or right) one block (usually a page). */
public void actionScrollBlockUp(Component c) {
scroll((JScrollBar)c, 1, true);
- waitForIdle();
}
/** Scroll down (or left) one block (usually a page). */
public void actionScrollBlockDown(Component c) {
scroll((JScrollBar)c, -1, true);
- waitForIdle();
}
/** Scroll to the given scroll position. */
@@ -116,6 +132,31 @@
mouseMove(bar, thumb.x, thumb.y);
scroll(bar, position);
- waitForIdle();
}
+
+
+ public void actionScollToMinimum(Component c)
+ {
+ final JScrollBar bar = (JScrollBar)c;
+ scroll(bar, callAndWait(c, new Callable<Integer>() {
+ @Override
+ public Integer call() throws Exception {
+ return bar.getMinimum();
+ }
+ }));
+ }
+
+
+ public void actionScollToMaximum(Component c)
+ {
+ final JScrollBar bar = (JScrollBar)c;
+ // Not actual value will be maximum - extent
+ scroll(bar, callAndWait(c, new Callable<Integer>() {
+ @Override
+ public Integer call() throws Exception {
+ return bar.getMaximum();
+ }
+ }));
+ }
+
}
Modified: abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java
===================================================================
--- abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java 2013-09-16 13:08:04 UTC (rev 2861)
+++ abbot/trunk/test/abbot/tester/JScrollBarTesterTest.java 2014-01-20 11:55:58 UTC (rev 2862)
@@ -66,6 +66,29 @@
where, v.getValue());
}
+
+ public void testMinMaxPosition() {
+ int min = h.getMinimum();
+ int max = h.getMaximum() - h.getModel().getExtent();
+
+ // Place not at max or min
+ int where = min + (max-min)/2;
+ tester.actionScrollTo(h, where);
+
+ //
+
+ tester.actionScollToMinimum(h);
+
+ assertEquals("horizontal setPosition(" + min + ") failed",
+ min, h.getValue());
+
+ tester.actionScollToMaximum(h);
+
+ assertEquals("horizontal setPosition(" + max + ") failed",
+ max, h.getValue());
+ }
+
+
public static void main(String[] args) {
RepeatHelper.runTests(args, JScrollBarTesterTest.class);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2013-09-16 13:08:07
|
Revision: 2861
http://sourceforge.net/p/abbot/svn/2861
Author: gdavison
Date: 2013-09-16 13:08:04 +0000 (Mon, 16 Sep 2013)
Log Message:
-----------
Update version number
Modified Paths:
--------------
abbot/trunk/build.xml
abbot/trunk/doc/FAQ.shtml
abbot/trunk/doc/Tutorial-1.shtml
abbot/trunk/doc/Tutorial-2.shtml
abbot/trunk/doc/Tutorial-3.shtml
abbot/trunk/doc/download.shtml
abbot/trunk/doc/examples.shtml
abbot/trunk/doc/help.shtml
abbot/trunk/doc/news.shtml
abbot/trunk/doc/overview.shtml
abbot/trunk/doc/quick-start.shtml
abbot/trunk/doc/tutorials.shtml
abbot/trunk/doc/user-guide.shtml
abbot/trunk/src/abbot/Version.java
abbot/trunk/src/abbot/overview.html
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/build.xml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -11,7 +11,7 @@
</description>
<!-- global properties -->
<!-- This is the master version number. Changes here affect everything. -->
- <property name="abbot.version" value="1.4.0"/>
+ <property name="abbot.version" value="1.4.0-SNAPSHOT"/>
<property name="copyright"
value="Copyright © 2002-2013 Timothy Wall. All Rights Reserved."/>
<property name="company.full" value="Abbot Framework"/>
Modified: abbot/trunk/doc/FAQ.shtml
===================================================================
--- abbot/trunk/doc/FAQ.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/FAQ.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -18,7 +18,7 @@
All materials Copyright © 2002-2013
<a href=mailto:twall_AT_users.sf.net>Timothy Wall</a>,
All Rights Reserved<br><p>
-This version 1.3.0<br>
+This version 1.4.0-SNAPSHOT-SNAPSHOT<br>
</center>
<h1>FAQ:
Modified: abbot/trunk/doc/Tutorial-1.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-1.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/Tutorial-1.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -16,7 +16,7 @@
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
All materials Copyright © 2002-2012 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0
+This version 1.4.0-SNAPSHOT-SNAPSHOT
</center>
<h1>Tutorial 1: Unit Testing A Single GUI Component</h1>
Modified: abbot/trunk/doc/Tutorial-2.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-2.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/Tutorial-2.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -16,7 +16,7 @@
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
All materials Copyright © 2002-2013 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0
+This version 1.4.0-SNAPSHOT-SNAPSHOT
</center>
<h1>Tutorial 2: Testing A Group of Components (Part I)</h1>
Modified: abbot/trunk/doc/Tutorial-3.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-3.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/Tutorial-3.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -16,7 +16,7 @@
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
All materials Copyright © 2002-2013 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0
+This version 1.4.0-SNAPSHOT-SNAPSHOT
</center>
<h1>Tutorial 3: Testing A Group of Components (Part II)</h1>
Modified: abbot/trunk/doc/download.shtml
===================================================================
--- abbot/trunk/doc/download.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/download.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -25,14 +25,14 @@
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0 </p>
+<p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT </p>
<h2>Download</h2>
<p>The latest abbot package is available in [<a
-href="http://prdownloads.sf.net/abbot/abbot-1.3.0.tgz?download"><span
+href="http://prdownloads.sf.net/abbot/abbot-1.4.0-SNAPSHOT.tgz?download"><span
style='color:black'>tgz</span></a>] [<a
-href="http://prdownloads.sf.net/abbot/abbot-1.3.0.zip?download"><span
+href="http://prdownloads.sf.net/abbot/abbot-1.4.0-SNAPSHOT.zip?download"><span
style='color:black'>zip</span></a>] formats, which includes source. You can
also browse the files available at <a
href="http://sourceforge.net/project/showfiles.php?group_id=50939">SourceForge</a>,
Modified: abbot/trunk/doc/examples.shtml
===================================================================
--- abbot/trunk/doc/examples.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/examples.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -29,7 +29,7 @@
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0</p>
+<p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT</p>
<h3>Examples</h3>
Modified: abbot/trunk/doc/help.shtml
===================================================================
--- abbot/trunk/doc/help.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/help.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -29,7 +29,7 @@
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0</p>
+<p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT</p>
<h3><a name=Support></a>Questions, Help, Support and Contributions</h3>
Modified: abbot/trunk/doc/news.shtml
===================================================================
--- abbot/trunk/doc/news.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/news.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -16,7 +16,7 @@
<div class=Section1>
<p class=MsoNormal align=center style='text-align:center'><i><span style='color:lime'>A</span></i><i><span style='color:red'>b</span></i><i><span style='color:lime'>b</span>ot framework for automated testing of Java GUI components and programs</i><br>
All materials Copyright © 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
- <p align=center style='text-align:center'>This version 1.3.0</p>
+ <p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT</p>
<h2>NEWS</h2>
<ul>
<li><b>07/2012</b> 1.3 Released
Modified: abbot/trunk/doc/overview.shtml
===================================================================
--- abbot/trunk/doc/overview.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/overview.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -19,7 +19,7 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI components and programs</i><br>
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
- <p align=center style='text-align:center'>This version 1.3.0</p>
+ <p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT</p>
<h1 align=center style='text-align:center'>Getting Started with the Abbot Java GUI Test Framework</h1>
<h2 align=center style='text-align:center'><i>Building unit tests and functional tests (AWTUnit/SwingUnit)</i></h2>
<p class=MsoBodyText>Abbot helps you test your Java UI. It comprises Abbot, which lets you programmatically drive UI components, and Costello (built on Abbot) which allows you to easily launch, explore and control an application. The framework may be used with both scripts and compiled code.</p>
Modified: abbot/trunk/doc/quick-start.shtml
===================================================================
--- abbot/trunk/doc/quick-start.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/quick-start.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -25,7 +25,7 @@
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0</p>
+<p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT</p>
<h2>Quick Start</h2>
Modified: abbot/trunk/doc/tutorials.shtml
===================================================================
--- abbot/trunk/doc/tutorials.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/tutorials.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -25,7 +25,7 @@
All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0 </p>
+<p align=center style='text-align:center'>This version 1.4.0-SNAPSHOT-SNAPSHOT </p>
<h3><a name=QuickStart></a>Tutorials</h3>
Modified: abbot/trunk/doc/user-guide.shtml
===================================================================
--- abbot/trunk/doc/user-guide.shtml 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/doc/user-guide.shtml 2013-09-16 13:08:04 UTC (rev 2861)
@@ -16,7 +16,7 @@
All materials Copyright © 2002-2013
<a href=mailto:twall_AT_users.sf.net>Timothy Wall</a>,
All Rights Reserved<br><p>
-This version 1.3.0<br>
+This version 1.4.0-SNAPSHOT-SNAPSHOT<br>
</center>
<center><h1>Getting Started with Costello</h1></center>
Modified: abbot/trunk/src/abbot/Version.java
===================================================================
--- abbot/trunk/src/abbot/Version.java 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/src/abbot/Version.java 2013-09-16 13:08:04 UTC (rev 2861)
@@ -3,7 +3,7 @@
/** Current version of the framework. */
public interface Version {
- String VERSION = "1.3.0";
+ String VERSION = "1.4.0-SNAPSHOT";
}
Modified: abbot/trunk/src/abbot/overview.html
===================================================================
--- abbot/trunk/src/abbot/overview.html 2013-08-06 13:25:58 UTC (rev 2860)
+++ abbot/trunk/src/abbot/overview.html 2013-09-16 13:08:04 UTC (rev 2861)
@@ -9,7 +9,7 @@
<!-- FIXME not sure how to get a title into the summary... -->
<HR>
<CENTER>
-<H2>Abbot Automated GUI Testing Framework, version 1.3.0-RC2</H2>
+<H2>Abbot Automated GUI Testing Framework, version 1.4.0-SNAPSHOT-SNAPSHOT-RC2</H2>
</CENTER>
<body bgcolor="white">
This document is the API specification for the
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Amanda<who...@ch...> - 2013-09-14 03:07:38
|
Get cheap jerseys from bestcheapjerseyswholesale.com from Amanda Hi my dear friend: Long time no see,how are u recently?I am Amanda,recently we have update the site,now here it is the link: www.bestcheapjerseyswholesale.com ,now order any item 10pcs =free shipping($20)+10%discount( western union)+1pcs free,so now you can place an order directly,after finish your payment,pls tell me the MTCN is,if need to pay to other payment methods or have any questions else,pls just email to me at who...@ho... The more u buy ,the more u will save! Amanda |
|
From: <gda...@us...> - 2013-08-06 13:26:01
|
Revision: 2860
http://sourceforge.net/p/abbot/svn/2860
Author: gdavison
Date: 2013-08-06 13:25:58 +0000 (Tue, 06 Aug 2013)
Log Message:
-----------
Minor fix so that a Object parameter will be default be passed a String
if no other obvious mapping exist.
Update version number to 1.4
Modified Paths:
--------------
abbot/trunk/build.xml
abbot/trunk/src/abbot/script/ArgumentParser.java
abbot/trunk/src/abbot/script/Assert.java
abbot/trunk/src/abbot/tester/FileComparator.java
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2013-08-02 11:09:14 UTC (rev 2859)
+++ abbot/trunk/build.xml 2013-08-06 13:25:58 UTC (rev 2860)
@@ -11,7 +11,7 @@
</description>
<!-- global properties -->
<!-- This is the master version number. Changes here affect everything. -->
- <property name="abbot.version" value="1.3.0"/>
+ <property name="abbot.version" value="1.4.0"/>
<property name="copyright"
value="Copyright © 2002-2013 Timothy Wall. All Rights Reserved."/>
<property name="company.full" value="Abbot Framework"/>
Modified: abbot/trunk/src/abbot/script/ArgumentParser.java
===================================================================
--- abbot/trunk/src/abbot/script/ArgumentParser.java 2013-08-02 11:09:14 UTC (rev 2859)
+++ abbot/trunk/src/abbot/script/ArgumentParser.java 2013-08-06 13:25:58 UTC (rev 2860)
@@ -338,6 +338,12 @@
else if ((parser = getParser(cls)) != null) {
result = parser.parse(arg.trim());
}
+ else if (cls.equals(Object.class)) {
+ // This fix in put in place to make sure that in FileComparator
+ // that we can invoke the Object,Object compare method
+ //
+ result = arg;
+ }
else {
String msg = Strings.get("parser.conversion_error",
new Object[] {
Modified: abbot/trunk/src/abbot/script/Assert.java
===================================================================
--- abbot/trunk/src/abbot/script/Assert.java 2013-08-02 11:09:14 UTC (rev 2859)
+++ abbot/trunk/src/abbot/script/Assert.java 2013-08-06 13:25:58 UTC (rev 2860)
@@ -254,7 +254,7 @@
actual = ArgumentParser.toString(((TreePath)actual).getPath());
}
- if (compareStrings) {
+ if (compareStrings || expected instanceof String) {
actual = ArgumentParser.toString(actual);
}
Modified: abbot/trunk/src/abbot/tester/FileComparator.java
===================================================================
--- abbot/trunk/src/abbot/tester/FileComparator.java 2013-08-02 11:09:14 UTC (rev 2859)
+++ abbot/trunk/src/abbot/tester/FileComparator.java 2013-08-06 13:25:58 UTC (rev 2860)
@@ -11,7 +11,8 @@
public class FileComparator implements java.util.Comparator {
- /**
+
+ /**
* Read files into streams and call byte by byte comparison method
* @param f1 First File or filename to compare.
* @param f2 Second File or filename to compare.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2013-08-02 11:09:17
|
Revision: 2859
http://sourceforge.net/p/abbot/svn/2859
Author: gdavison
Date: 2013-08-02 11:09:14 +0000 (Fri, 02 Aug 2013)
Log Message:
-----------
Release 1.3.0
Added Paths:
-----------
abbot/tags/v1_3_0/
Index: abbot/tags/v1_3_0
===================================================================
--- abbot/trunk 2013-08-02 11:08:09 UTC (rev 2858)
+++ abbot/tags/v1_3_0 2013-08-02 11:09:14 UTC (rev 2859)
Property changes on: abbot/tags/v1_3_0
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +1,2 ##
+/abbot/branches/gdavison_merge_back_jdeveloper_changes:2790-2793
+/abbot/branches/gdavison_update_deps:2796-2805
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gda...@us...> - 2013-08-02 11:08:12
|
Revision: 2858
http://sourceforge.net/p/abbot/svn/2858
Author: gdavison
Date: 2013-08-02 11:08:09 +0000 (Fri, 02 Aug 2013)
Log Message:
-----------
Minor fix to JTextComponentTester for dealing with line endings in JDeveloper
specific case. Improvement of code for all.
Updated vesion to 1.3 for a release
Modified Paths:
--------------
abbot/trunk/build.xml
abbot/trunk/doc/FAQ.shtml
abbot/trunk/doc/Tutorial-1.shtml
abbot/trunk/doc/Tutorial-2.shtml
abbot/trunk/doc/Tutorial-3.shtml
abbot/trunk/doc/download.shtml
abbot/trunk/doc/examples.shtml
abbot/trunk/doc/help.shtml
abbot/trunk/doc/news.shtml
abbot/trunk/doc/overview.shtml
abbot/trunk/doc/quick-start.shtml
abbot/trunk/doc/tutorials.shtml
abbot/trunk/doc/user-guide.shtml
abbot/trunk/projects/jdeveloper/Abbot.jws
abbot/trunk/projects/jdeveloper/Library/Library.jpr
abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
abbot/trunk/src/abbot/Version.java
abbot/trunk/src/abbot/overview.html
abbot/trunk/src/abbot/tester/JTextComponentTester.java
abbot/trunk/test/abbot/tester/JTextComponentTesterTest.java
Modified: abbot/trunk/build.xml
===================================================================
--- abbot/trunk/build.xml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/build.xml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -11,9 +11,9 @@
</description>
<!-- global properties -->
<!-- This is the master version number. Changes here affect everything. -->
- <property name="abbot.version" value="1.3.0RC2"/>
+ <property name="abbot.version" value="1.3.0"/>
<property name="copyright"
- value="Copyright © 2002-2012 Timothy Wall. All Rights Reserved."/>
+ value="Copyright © 2002-2013 Timothy Wall. All Rights Reserved."/>
<property name="company.full" value="Abbot Framework"/>
<property name="compatibility" value="1.6"/>
<property name="src" value="src"/>
Modified: abbot/trunk/doc/FAQ.shtml
===================================================================
--- abbot/trunk/doc/FAQ.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/FAQ.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -15,10 +15,10 @@
<center><i>
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for automated testing of Java GUI
components and programs</i><br>
-All materials Copyright © 2002-2011
+All materials Copyright © 2002-2013
<a href=mailto:twall_AT_users.sf.net>Timothy Wall</a>,
All Rights Reserved<br><p>
-This version 1.3.0RC2<br>
+This version 1.3.0<br>
</center>
<h1>FAQ:
Modified: abbot/trunk/doc/Tutorial-1.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-1.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/Tutorial-1.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -14,9 +14,9 @@
<td>
<center><i>
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
-All materials Copyright © 2002-2011 All Rights Reserved
+All materials Copyright © 2002-2012 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0RC2-RC2
+This version 1.3.0
</center>
<h1>Tutorial 1: Unit Testing A Single GUI Component</h1>
Modified: abbot/trunk/doc/Tutorial-2.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-2.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/Tutorial-2.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -14,9 +14,9 @@
<td>
<center><i>
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
-All materials Copyright © 2002-2011 All Rights Reserved
+All materials Copyright © 2002-2013 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0RC2-RC2
+This version 1.3.0
</center>
<h1>Tutorial 2: Testing A Group of Components (Part I)</h1>
Modified: abbot/trunk/doc/Tutorial-3.shtml
===================================================================
--- abbot/trunk/doc/Tutorial-3.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/Tutorial-3.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -14,9 +14,9 @@
<td>
<center><i>
<font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br>
-All materials Copyright © 2002-2011 All Rights Reserved
+All materials Copyright © 2002-2013 All Rights Reserved
<a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p>
-This version 1.3.0RC2
+This version 1.3.0
</center>
<h1>Tutorial 3: Testing A Group of Components (Part II)</h1>
Modified: abbot/trunk/doc/download.shtml
===================================================================
--- abbot/trunk/doc/download.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/download.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -22,17 +22,17 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI
components and programs</i><br>
-All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy
+All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0RC2 </p>
+<p align=center style='text-align:center'>This version 1.3.0 </p>
<h2>Download</h2>
<p>The latest abbot package is available in [<a
-href="http://prdownloads.sf.net/abbot/abbot-1.3.0RC2.tgz?download"><span
+href="http://prdownloads.sf.net/abbot/abbot-1.3.0.tgz?download"><span
style='color:black'>tgz</span></a>] [<a
-href="http://prdownloads.sf.net/abbot/abbot-1.3.0RC2.zip?download"><span
+href="http://prdownloads.sf.net/abbot/abbot-1.3.0.zip?download"><span
style='color:black'>zip</span></a>] formats, which includes source. You can
also browse the files available at <a
href="http://sourceforge.net/project/showfiles.php?group_id=50939">SourceForge</a>,
Modified: abbot/trunk/doc/examples.shtml
===================================================================
--- abbot/trunk/doc/examples.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/examples.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -26,10 +26,10 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI
components and programs</i><br>
-All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy
+All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0RC2-RC2</p>
+<p align=center style='text-align:center'>This version 1.3.0</p>
<h3>Examples</h3>
Modified: abbot/trunk/doc/help.shtml
===================================================================
--- abbot/trunk/doc/help.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/help.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -26,10 +26,10 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI components
and programs</i><br>
-All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy
+All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0RC2</p>
+<p align=center style='text-align:center'>This version 1.3.0</p>
<h3><a name=Support></a>Questions, Help, Support and Contributions</h3>
Modified: abbot/trunk/doc/news.shtml
===================================================================
--- abbot/trunk/doc/news.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/news.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -15,10 +15,11 @@
<td>
<div class=Section1>
<p class=MsoNormal align=center style='text-align:center'><i><span style='color:lime'>A</span></i><i><span style='color:red'>b</span></i><i><span style='color:lime'>b</span>ot framework for automated testing of Java GUI components and programs</i><br>
- All materials Copyright © 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
- <p align=center style='text-align:center'>This version 1.3.0RC2-RC2 (111118)</p>
+ All materials Copyright © 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
+ <p align=center style='text-align:center'>This version 1.3.0</p>
<h2>NEWS</h2>
<ul>
+ <li><b>07/2012</b> 1.3 Released
<li><b>12/2011</b> 1.2 Released
<li><b>11/22/2011</b> Abbot and Costello are alive and well, please see http://sourceforge.net/project/abbot for latest
<li><b>11/22/2011</b> 1.2RC2 is, out with all new dependencies
Modified: abbot/trunk/doc/overview.shtml
===================================================================
--- abbot/trunk/doc/overview.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/overview.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -18,8 +18,8 @@
<p class=MsoNormal align=center style='text-align:center'><i><span
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI components and programs</i><br>
- All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
- <p align=center style='text-align:center'>This version 1.3.0RC2</p>
+ All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p>
+ <p align=center style='text-align:center'>This version 1.3.0</p>
<h1 align=center style='text-align:center'>Getting Started with the Abbot Java GUI Test Framework</h1>
<h2 align=center style='text-align:center'><i>Building unit tests and functional tests (AWTUnit/SwingUnit)</i></h2>
<p class=MsoBodyText>Abbot helps you test your Java UI. It comprises Abbot, which lets you programmatically drive UI components, and Costello (built on Abbot) which allows you to easily launch, explore and control an application. The framework may be used with both scripts and compiled code.</p>
Modified: abbot/trunk/doc/quick-start.shtml
===================================================================
--- abbot/trunk/doc/quick-start.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/quick-start.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -22,10 +22,10 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI
components and programs</i><br>
-All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy
+All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0RC2</p>
+<p align=center style='text-align:center'>This version 1.3.0</p>
<h2>Quick Start</h2>
Modified: abbot/trunk/doc/tutorials.shtml
===================================================================
--- abbot/trunk/doc/tutorials.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/tutorials.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -22,10 +22,10 @@
style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span
style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI
components and programs</i><br>
-All materials Copyright \xA9 2002-2011 <a href="mailto:twall_AT_users.sf.net">Timothy
+All materials Copyright \xA9 2002-2013 <a href="mailto:twall_AT_users.sf.net">Timothy
Wall</a>, All Rights Reserved</p>
-<p align=center style='text-align:center'>This version 1.3.0RC2 </p>
+<p align=center style='text-align:center'>This version 1.3.0 </p>
<h3><a name=QuickStart></a>Tutorials</h3>
Modified: abbot/trunk/doc/user-guide.shtml
===================================================================
--- abbot/trunk/doc/user-guide.shtml 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/doc/user-guide.shtml 2013-08-02 11:08:09 UTC (rev 2858)
@@ -13,10 +13,10 @@
</td>
<td>
<center><i>Costello Editor User's Guide</i><br>
-All materials Copyright © 2002-2011
+All materials Copyright © 2002-2013
<a href=mailto:twall_AT_users.sf.net>Timothy Wall</a>,
All Rights Reserved<br><p>
-This version 1.3.0RC2<br>
+This version 1.3.0<br>
</center>
<center><h1>Getting Started with Costello</h1></center>
Modified: abbot/trunk/projects/jdeveloper/Abbot.jws
===================================================================
--- abbot/trunk/projects/jdeveloper/Abbot.jws 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/projects/jdeveloper/Abbot.jws 2013-08-02 11:08:09 UTC (rev 2858)
@@ -6,12 +6,15 @@
<value n="appTemplateId" v="javaAppTemplate"/>
<hash n="component-versions">
<value n="oracle.adf.share.dt.migration.jps.JaznCredStoreMigratorHelper" v="11.1.1.1.0"/>
+ <value n="oracle.adf.share.dt.migration.wsm.PolicyAttachmentMigratorHelper" v="12.1.2.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.extension.AdfSecurityMigrator" v="11.1.1.1.0.13"/>
- <value n="oracle.ide.model.Project" v="11.1.1.1.0;12.1.1.0.0;12.1.2.0.0"/>
+ <value n="oracle.ide.model.Project" v="11.1.1.1.0;12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.jdevimpl.appresources.ApplicationSrcDirMigrator" v="11.1.2.0.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsDeploymentMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsJeeDeploymentMigrator" v="12.1.2.0.0"/>
+ <value n="oracle.jdevimpl.deploy.migrators.JeeDeploymentMigrator" v="12.1.2.0.0"/>
+ <value n="oracle.jdevimpl.xml.oc4j.jps.JpsConfigMigratorHelper" v="11.1.1.1.0.1"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.mds.internal.dt.deploy.base.MarMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.mds.internal.dt.ide.migrator.MDSConfigMigratorHelper" v="11.1.1.0.5313"/>
Modified: abbot/trunk/projects/jdeveloper/Library/Library.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Library/Library.jpr 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/projects/jdeveloper/Library/Library.jpr 2013-08-02 11:08:09 UTC (rev 2858)
@@ -1,26 +1,37 @@
<?xml version = '1.0' encoding = 'UTF-8'?>
<jpr:project xmlns:jpr="http://xmlns.oracle.com/ide/project">
<hash n="component-versions">
+ <value n="oracle.adfdt.controller.adfc.source.migration.AdfControllerSchemaMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdt.controller.common.migrator.ProjectMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdt.controller.jsf2.diagram.migrate.JsfNodeMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.adfdt.controller.migrate.TrinidadDatabindingsProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTDataMapMigrator" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.model.ide.migration.ProjectMigrator" v="11.1.1.1.0.11.1.1"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.FormPageMigrator" v="11.1.1.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.JpsFilterMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.ADFNodeMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.PageDefinitionParameterValueMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.WebXmlMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.common.migration.wizards.MigrationHelper" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.view.rich.binding.migration.JarResourceMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.rich.migration.ComponentIdNodeMigratorHelper" v="11.1.1.1.0.01"/>
<value n="oracle.adfdtinternal.view.rich.migration.FacesLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.adfdtinternal.view.rich.migration.LibraryVersionMigrator" v="11.1.1.1.0.1"/>
- <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0"/>
+ <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
<value n="oracle.ide.model.ResourcePathsMigrator" v="11.1.1.1.0"/>
- <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4"/>
+ <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.jbo.dt.jdevx.ui.appnav.APProjectMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migrate.ResourceBundlePathMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migration.ServiceInterfaceMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.dbmodeler.Migration" v="12.1.1.0.0"/>
+ <value n="oracle.jdeveloper.ejb.EjbMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.library.ProjectLibraryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.model.OutputDirectoryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.DeploymentProfilesMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdevimpl.deploy.jps.JpsDataMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsDeploymentMigrator" v="11.1.1.1.0;12.1.2.0.1"/>
+ <value n="oracle.jdevimpl.deploy.migrators.DeploymentMigrator" v="12.1.2.0.1"/>
<value n="oracle.jdevimpl.jsp.JspMigrator" v="11.1.1"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflineDBProjectMigrator" v="11.1.1.1.0;12.1.1.0.0"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflinePlSqlMigrator" v="11.1.1.1.0"/>
@@ -31,6 +42,7 @@
<value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestLibraryMigrator" v="12.1.1.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestPathMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webservices.WebServicesMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.modeler.bmmigrate.management.Migration" v="11.1.1.1.0"/>
<value n="oracle.toplink.workbench.addin.migration.PersistenceProjectMigrator" v="11.1.1.1.0"/>
@@ -193,7 +205,7 @@
</list>
</hash>
<hash n="jdkReference">
- <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.2.0.40.66.38/o.jdeveloper/1.7.0_25.jdk"/>
+ <url n="id" path="../../../../../dev_tools/jdev_user_home/system12.1.3.0.41.66.95/o.jdeveloper/1.7.0_25.jdk"/>
<value n="isJDK" v="true"/>
<value n="jdkVersion" v="1.7.0_25"/>
</hash>
Modified: abbot/trunk/projects/jdeveloper/Tests/Tests.jpr
===================================================================
--- abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/projects/jdeveloper/Tests/Tests.jpr 2013-08-02 11:08:09 UTC (rev 2858)
@@ -1,26 +1,37 @@
<?xml version = '1.0' encoding = 'UTF-8'?>
<jpr:project xmlns:jpr="http://xmlns.oracle.com/ide/project">
<hash n="component-versions">
+ <value n="oracle.adfdt.controller.adfc.source.migration.AdfControllerSchemaMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdt.controller.common.migrator.ProjectMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdt.controller.jsf2.diagram.migrate.JsfNodeMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.adfdt.controller.migrate.TrinidadDatabindingsProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.adfdtinternal.dvt.datapresdt.migration.DVTDataMapMigrator" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.model.ide.migration.ProjectMigrator" v="11.1.1.1.0.11.1.1"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.FormPageMigrator" v="11.1.1.0.0"/>
<value n="oracle.adfdtinternal.model.ide.security.wizard.JpsFilterMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.ADFNodeMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.PageDefinitionParameterValueMigrator" v="11.1.1.1.0.5"/>
+ <value n="oracle.adfdtinternal.model.ide.xmled.migration.WebXmlMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.common.migration.wizards.MigrationHelper" v="11.1.1.1.0.3"/>
+ <value n="oracle.adfdtinternal.view.rich.binding.migration.JarResourceMigrator" v="11.1.1.1.0"/>
<value n="oracle.adfdtinternal.view.rich.migration.ComponentIdNodeMigratorHelper" v="11.1.1.1.0.01"/>
<value n="oracle.adfdtinternal.view.rich.migration.FacesLibraryVersionMigrator" v="11.1.1.1.0.1"/>
<value n="oracle.adfdtinternal.view.rich.migration.LibraryVersionMigrator" v="11.1.1.1.0.1"/>
- <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0"/>
+ <value n="oracle.ide.model.Project" v="12.1.1.0.0;12.1.2.0.0;12.1.3.0.0"/>
<value n="oracle.ide.model.ResourcePathsMigrator" v="11.1.1.1.0"/>
- <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4"/>
+ <value n="oracle.ideimpl.model.TechnologyScopeUpdateMigrator" v="11.1.2.0.0.4;11.1.2.0.0.5"/>
<value n="oracle.jbo.dt.jdevx.deployment.JbdProjectMigrator" v="11.1.2.0.0"/>
<value n="oracle.jbo.dt.jdevx.ui.appnav.APProjectMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migrate.ResourceBundlePathMigrator" v="11.1.1.0.1.5"/>
<value n="oracle.jbo.dt.migration.ServiceInterfaceMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.dbmodeler.Migration" v="12.1.1.0.0"/>
+ <value n="oracle.jdeveloper.ejb.EjbMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.library.ProjectLibraryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdeveloper.model.OutputDirectoryMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.DeploymentProfilesMigrator" v="11.1.1.1.0"/>
+ <value n="oracle.jdevimpl.deploy.jps.JpsDataMigrator" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.deploy.migrators.AbramsDeploymentMigrator" v="11.1.1.1.0;12.1.2.0.1"/>
+ <value n="oracle.jdevimpl.deploy.migrators.DeploymentMigrator" v="12.1.2.0.1"/>
<value n="oracle.jdevimpl.jsp.JspMigrator" v="11.1.1"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflineDBProjectMigrator" v="11.1.1.1.0;12.1.1.0.0"/>
<value n="oracle.jdevimpl.offlinedb.migration.OfflinePlSqlMigrator" v="11.1.1.1.0"/>
@@ -31,6 +42,7 @@
<value n="oracle.jdevimpl.webapp.WebAppProjectNodeMigratorHelper" v="11.1.2.0.0;12.1.2.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestLibraryMigrator" v="12.1.1.0.0"/>
<value n="oracle.jdevimpl.webservices.rest.migration.RestPathMigrator" v="11.1.2.0.0"/>
+ <value n="oracle.jdevimpl.webservices.WebServicesMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.jdevimpl.xml.wl.WeblogicMigratorHelper" v="11.1.1.1.0"/>
<value n="oracle.modeler.bmmigrate.management.Migration" v="11.1.1.1.0"/>
<value n="oracle.toplink.workbench.addin.migration.PersistenceProjectMigrator" v="11.1.1.1.0"/>
Modified: abbot/trunk/src/abbot/Version.java
===================================================================
--- abbot/trunk/src/abbot/Version.java 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/src/abbot/Version.java 2013-08-02 11:08:09 UTC (rev 2858)
@@ -3,7 +3,7 @@
/** Current version of the framework. */
public interface Version {
- String VERSION = "1.3.0RC2";
+ String VERSION = "1.3.0";
}
Modified: abbot/trunk/src/abbot/overview.html
===================================================================
--- abbot/trunk/src/abbot/overview.html 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/src/abbot/overview.html 2013-08-02 11:08:09 UTC (rev 2858)
@@ -9,7 +9,7 @@
<!-- FIXME not sure how to get a title into the summary... -->
<HR>
<CENTER>
-<H2>Abbot Automated GUI Testing Framework, version 1.3.0RC2-RC2</H2>
+<H2>Abbot Automated GUI Testing Framework, version 1.3.0-RC2</H2>
</CENTER>
<body bgcolor="white">
This document is the API specification for the
Modified: abbot/trunk/src/abbot/tester/JTextComponentTester.java
===================================================================
--- abbot/trunk/src/abbot/tester/JTextComponentTester.java 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/src/abbot/tester/JTextComponentTester.java 2013-08-02 11:08:09 UTC (rev 2858)
@@ -21,7 +21,27 @@
*/
public class JTextComponentTester extends JComponentTester {
+
/**
+ * @return The text contained in this component
+ */
+ protected String getTextForComponent(final JTextComponent component) {
+ return callAndWait(component,new Callable<String>() {
+ public String call() {
+ Document doc = component.getDocument();
+ try {
+ return doc.getText(0, doc.getLength());
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ return "";
+ }
+ }
+ });
+
+ }
+
+
+ /**
* Type the given text into the given component, replacing any existing
* text already there. If the empty string or <code>null</code> is given,
* simply removes all existing text.
@@ -30,7 +50,7 @@
scrollToVisible(c, 0);
actionActionMap(c, DefaultEditorKit.selectAllAction);
if (text == null || "".equals(text)) {
- if (!"".equals(((JTextComponent)c).getText())) {
+ if (!"".equals(getTextForComponent((JTextComponent)c))) {
actionActionMap(c, DefaultEditorKit.deletePrevCharAction);
}
}
@@ -52,11 +72,7 @@
// Get the text content and try to work out the offset
//
- String componentText = callAndWait(comp,new Callable<String>() {
- public String call() {
- return tc.getText();
- }
- });
+ String componentText = getTextForComponent(tc);
int index = componentText.indexOf(textToClick);
@@ -330,11 +346,7 @@
// Get the text content and try to work out the offset
//
- String componentText = callAndWait(comp,new Callable<String>() {
- public String call() {
- return tc.getText();
- }
- });
+ String componentText = getTextForComponent(tc);
int index = componentText.indexOf(textToSelect);
Modified: abbot/trunk/test/abbot/tester/JTextComponentTesterTest.java
===================================================================
--- abbot/trunk/test/abbot/tester/JTextComponentTesterTest.java 2013-05-30 15:44:09 UTC (rev 2857)
+++ abbot/trunk/test/abbot/tester/JTextComponentTesterTest.java 2013-08-02 11:08:09 UTC (rev 2858)
@@ -209,6 +209,23 @@
text.length()-1, tc.getSelectionEnd());
}
+ public void testSelectByText() {
+ showFrame(tc);
+ // Try a long selection and select a particular string
+ String text = "The quick brown fox jumped over the lazy dog";
+ tc.setText(text);
+ tester.waitForIdle();
+ tester.actionSelectText(tc, "quick");
+ tester.waitForIdle();
+
+ assertEquals("Wrong selection start",
+ 4, tc.getSelectionStart());
+ assertEquals("Wrong selection end (hidden)",
+ 9, tc.getSelectionEnd());
+ }
+
+
+
/**
* So this test appears to be failing because there is no drag operaion
* going on when the text is moved underneath the cursor, in the real
@@ -218,7 +235,7 @@
* we might need to provide a different implementation
* @exception
*/
- public void testSelectByText() {
+ public void testSelectByTextWithScrolling() {
showFrame(tc);
// Try a long selection and select a particular string
String text = "The quick brown fox jumped over the lazy dog";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|