[tuxdroid-svn] r1380 - in software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-
Status: Beta
Brought to you by:
ks156
From: ulhume <c2m...@c2...> - 2008-07-27 09:19:49
|
Author: ulhume Date: 2008-07-27 11:19:56 +0200 (Sun, 27 Jul 2008) New Revision: 1380 Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.classpath software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.project software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/org.eclipse.jdt.core.prefs software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/BUILD-SOURCES software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/CHANGELOG software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/LICENSE software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/NOTICE software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/README software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/build.xml software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/libraries/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/project.xml software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPanel.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPropertyEditor.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTester.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTesterConfiguration.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTesterMode.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/JConsole.java software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/moduleDescriptor.xml software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/targets/ Modified: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/ Log: Share project "tuxdroid-gadget-tester" into "http://svn.tuxisalive.com/software_suite_v2/software" Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester ___________________________________________________________________ Name: svn:externals + builder http://artisan.karma-lab.net/dev/karmalab-commons/trunk/karmalab-commons/builder Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.classpath =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.classpath (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.classpath 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="sources"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/karmalab-commons"/> + <classpathentry combineaccessrules="false" kind="src" path="/tuxdroid-gadget-framework"/> + <classpathentry kind="output" path="targets/eclipse"/> +</classpath> Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.classpath ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.project =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.project (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.project 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>tuxdroid-gadget-tester</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.project ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/org.eclipse.jdt.core.prefs =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/org.eclipse.jdt.core.prefs (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/org.eclipse.jdt.core.prefs 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,12 @@ +#Fri Jul 25 11:05:35 CEST 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/.settings/org.eclipse.jdt.core.prefs ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/BUILD-SOURCES =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/BUILD-SOURCES (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/BUILD-SOURCES 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,27 @@ +Building with ANT +-------------------------------------------------------- + +To build from sources you should run build.xml project file. + +This project file is using a sub-project located in a shared subversion folder 'builder' hosting this and +also doxygen configuration files. + +Every information about this module is located in 'project.xml' in a Maven2 way of doing this. + +The build process is : + - loading project.xml to get module information (name, version, license, etc.), dependencies and + librairies repositories. + - Loading all dependencies from repositories and puting them in 'libraries' folder. Each time you + re-run the builder, dependencies are updated if something changed in repositories. + - Parsing the sources in order to fix header license. + - Create files CHANGELOG, LICENCE, NOTICE and README using project.xml information. + - Compile the sources and put resulting classes in target/ant + - Create the JAR file and put it in target/build + - Publish the JAR file in a maven like local repository located in target/repository + + Building from eclipse +-------------------------------------------------------- + You have nothing to do in order to build with eclipse, except run a first time the ANT builder + in order to retreive librairies and editing project properties to use those libraries instead + of direct project link. + \ No newline at end of file Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/CHANGELOG =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/CHANGELOG (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/CHANGELOG 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,4 @@ +122/05/2008 - 0.1 +-------------------------------------------- + - creation - First version + Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/LICENSE =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/LICENSE (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/LICENSE 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/NOTICE =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/NOTICE (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/NOTICE 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,2 @@ +This product includes software developed by +kysoh (http://www.kysoh.com/ or software@_bad_karma-lab.net (remove _bad_ before sending an email)). Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/README =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/README (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/README 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,43 @@ +Installing TuxDroid Gadget Tester +===================== + +The following instructions show how to install TuxDroid Gadget Tester: + +1) Unpack the archive where you would like to store the binaries, eg: + tar zxvf TuxDroid Gadget Tester-X.Y-binaries.tar.gz + or + unzip TuxDroid Gadget Tester-X.Y-binaries.zip + +2) A directory called "TuxDroid Gadget Tester-X.Y" will be created. + +3) Add the bin directory to your PATH, eg: + export PATH=/usr/local/TuxDroid Gadget Tester-X.Y/bin:$PATH +or + set PATH="c:\program files\TuxDroid Gadget Tester-X.Y\bin";%PATH% + +4) Make sure JAVA_HOME is set to the location of your JDK + +5) Run "TuxDroid Gadget Tester --version" to verify that it is correctly installed. + + +Compiling TuxDroid Gadget Tester +===================== + +The following instructions show how to compile TuxDroid Gadget Tester. You should have a proper +Java and Maven installation working. + +1) Unpack the archive where you would like to store the binaries, eg: + tar zxvf TuxDroid Gadget Tester-X.Y-sources.tar.gz + or + unzip TuxDroid Gadget Tester-X.Y-sources.zip + +2) A directory called "TuxDroid Gadget Tester-X.Y" will be created. + +3) Go inside the directory and run "maven compile" + + +More information about TuxDroid Gadget Tester +======================= + +For more information, please see http://www.kysoh.com/ + Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/build.xml =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/build.xml (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/build.xml 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,3 @@ +<project default="Update dependencies" name="Tuxdroid Gadget Tester"> + <import file="./builder/build.xml"/> +</project> \ No newline at end of file Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/build.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/libraries ___________________________________________________________________ Name: svn:ignore + * Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/project.xml =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/project.xml (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/project.xml 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,71 @@ +<project> + <name>tuxdroid-gadget-framework</name> + <title>TuxDroid Gadget Tester</title> + <description>TuxDroid Gadget Tester</description> + <license> + <name>GPL</name> + </license> + <groupId>com.kysoh</groupId> + <artifactId>tuxdroid-gadget-tester</artifactId> + <version>0.1</version> + <mainclass>com.kysoh.tuxdroid.gadget.framework.tester.GadgetTester</mainclass> + <dependencies> + <dependency> + <id>karmalab-commons</id> + <groupId>net.karmaLab</groupId> + <artifactId>karmalab-commons</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>com.kysoh</groupId> + <artifactId>tuxdroid-gadget-framework</artifactId> + <version>0.1</version> + </dependency> + </dependencies> + <repositories> + <repository> + <id>central</id> + <name>Maven Repository Switchboard</name> + <layout>default</layout> + <url>http://repo1.maven.org/maven2</url> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + <repository> + <id>karma-lab</id> + <name>KarmaLab Repository Switchboard</name> + <layout>default</layout> + <url>http://artisan.karma-lab.net/software/repository</url> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + </repositories> + <developers> + <developer> + <name>Yoran Brault</name> + <organization>kysoh</organization> + <email> software@_bad_karma-lab.net (remove _bad_ before sending an email)</email> + <organizationUrl>http://www.kysoh.com/</organizationUrl> + </developer> + </developers> + <distributionManagement> + <repository> + <id>karma-lab</id> + <url>ftp://artisan.karma-lab.net/software/repository</url> + </repository> + </distributionManagement> + <releases> + <release + date="01/05/2008" + version="0.1"> + <changes> + <change + kind="creation"> + <description>First version</description> + </change> + </changes> + </release> + </releases> +</project> \ No newline at end of file Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/project.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPanel.java =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPanel.java (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPanel.java 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,368 @@ +/* This file is part of "TuxDroid Gadget Tester". + * Copyright 2008, kysoh + * Author : Yoran Brault + * eMail : software@_bad_karma-lab.net (remove _bad_ before sending an email) + * Site : http://www.kysoh.com/ + * + * "TuxDroid Gadget Tester" is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * "TuxDroid Gadget Tester" is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with "TuxDroid Gadget Tester"; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package com.kysoh.tuxdroid.gadget.framework.tester; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.Vector; +import java.util.logging.Logger; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.JTree; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; + +import net.karmaLab.tools.Strings; +import net.karmaLab.traces.Traces; + +import com.kysoh.tuxdroid.gadget.framework.container.Gadget; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetDescription; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstance; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetListener; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetToken; + +public class GadgetPanel extends JPanel { + + public class StartAction extends TreeActionItem { + @Override + public void actionPerformed(ActionEvent e) { + GadgetInstance instance = gadget.create(); + instance.start(gadgetParametersEditor.getValues()); + + } + + public StartAction() { + super("start"); + } + } + + public class StopAllAction extends TreeActionItem { + @Override + public void actionPerformed(ActionEvent e) { + gadget.stop(); + } + + public StopAllAction() { + super("stop all"); + } + } + + public class AbortInstanceAction extends InstanceAction { + + @Override + public void actionPerformed(ActionEvent e) { + getInstance().abort(); + } + + public AbortInstanceAction(GadgetInstance instance) { + super("Abort", instance); + } + } + + public class InstanceAction extends TreeActionItem { + private final GadgetInstance instance; + + /** + * @return the instance + */ + public GadgetInstance getInstance() { + return instance; + } + + @Override + public void actionPerformed(ActionEvent e) { + instance.abort(); + } + + public InstanceAction(String label, GadgetInstance instance) { + super(label); + this.instance = instance; + } + } + + public class CommandInstanceAction extends InstanceAction { + private final GadgetToken token; + + @Override + public void actionPerformed(ActionEvent e) { + getInstance().sendCommand(token.getName()); + } + + public CommandInstanceAction(GadgetInstance instance, GadgetToken token) { + super(token.getName(), instance); + this.token = token; + } + } + + private static class TreeActionItem extends AbstractAction { + public TreeActionItem(String label) { + super(label); + } + + private final Vector<TreeActionItem> actions = new Vector<TreeActionItem>(); + + /** + * @return the actions + */ + public Vector<TreeActionItem> getActions() { + return actions; + } + + @Override + public String toString() { + return (String) getValue(Action.NAME); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } + } + + private final TreeActionItem actionsRoot; + + /** simple list model for commands. */ + private final class ActionsListModel implements TreeModel { + Vector<TreeModelListener> listeners = new Vector<TreeModelListener>();; + + @Override + public void addTreeModelListener(TreeModelListener l) { + listeners.add(l); + } + + @Override + public Object getChild(Object parent, int index) { + return ((TreeActionItem) parent).getActions().get(index); + } + + @Override + public int getChildCount(Object parent) { + return ((TreeActionItem) parent).getActions().size(); + } + + @Override + public int getIndexOfChild(Object parent, Object child) { + return 0; + } + + @Override + public Object getRoot() { + return actionsRoot; + } + + @Override + public boolean isLeaf(Object node) { + return getChildCount(node) == 0; + } + + @Override + public void removeTreeModelListener(TreeModelListener l) { + } + + @Override + public void valueForPathChanged(TreePath path, Object newValue) { + } + + public void update() { + TreeModelEvent e = new TreeModelEvent(this, new Object[] { getRoot() }); + for (TreeModelListener listener : listeners) { + listener.treeStructureChanged(e); + } + } + } + + /** Observer for Commands list Mouse events. */ + private final class ActionTreeMouseObserver implements MouseListener { + /** {@inheritDoc} */ + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2) { + TreeActionItem node = (TreeActionItem) actionsTree.getLastSelectedPathComponent(); + if (node != null) { + node.actionPerformed(null); + } + } + } + + /** {@inheritDoc} */ + @Override + public void mouseEntered(MouseEvent e) { + } + + /** {@inheritDoc} */ + @Override + public void mouseExited(MouseEvent e) { + } + + /** {@inheritDoc} */ + @Override + public void mousePressed(MouseEvent e) { + } + + /** {@inheritDoc} */ + @Override + public void mouseReleased(MouseEvent e) { + } + } + + /** Gadget events observer. */ + private final class GadgetObserver implements GadgetListener { + @Override + public void errors(GadgetInstance instance, String message) { + console.append("[" + instance.getGadget().getDescription().getName() + " # " + instance.getId() + "] Error > " + message); + } + + /** {@inheritDoc} */ + public void notification(GadgetInstance instance, String name, Object... parameters) { + console.append("[" + instance.getGadget().getDescription().getName() + " # " + instance.getId() + "] '" + name + "' notification > " + Strings.implode(parameters, ' ')); + } + + @Override + public void starting(GadgetInstance instance) { + TreeActionItem item = new InstanceAction("Instance #" + instance.getId(), instance); + item.getActions().add(new AbortInstanceAction(instance)); + for (GadgetToken token : gadget.getCommands()) { + item.getActions().add(new CommandInstanceAction(instance, token)); + } + actionsRoot.getActions().add(item); + ((ActionsListModel) actionsTree.getModel()).update(); + } + + @Override + public void stopped(GadgetInstance instance) { + for (int i = 0; i < actionsRoot.getActions().size(); i++) { + TreeActionItem current = actionsRoot.getActions().get(i); + if (current instanceof InstanceAction && ((InstanceAction) current).getInstance() == instance) { + actionsRoot.getActions().remove(i); + break; + } + } + ((ActionsListModel) actionsTree.getModel()).update(); + } + + @Override + public void trace(GadgetInstance instance, String message) { + console.append("[" + instance.getGadget().getDescription().getName() + " # " + instance.getId() + "] Trace > " + message); + + } + } + + /** Class logger. */ + @SuppressWarnings("unused") + private static final Logger logger = Traces.LOGGER(GadgetPanel.class); + /** Commands list. */ + private final JTree actionsTree; + /** Logging console. */ + private final JConsole console = new JConsole(); + /** Current gadget id. */ + final Gadget gadget; + private final GadgetPropertyEditor gadgetParametersEditor; + + /** + * Default constructor. + * + * @param gadget + * managed gadget. + */ + public GadgetPanel(Gadget gadget) { + this.gadget = gadget; + + // Actions + actionsRoot = new TreeActionItem(gadget.getDescription().getName()); + actionsRoot.getActions().add(new StartAction()); + actionsRoot.getActions().add(new StopAllAction()); + actionsTree = new JTree(new ActionsListModel()); + actionsTree.addMouseListener(new ActionTreeMouseObserver()); + gadget.addListener(new GadgetObserver()); + setLayout(new BorderLayout()); + gadgetParametersEditor = new GadgetPropertyEditor(); + gadgetParametersEditor.setGadget(gadget); + JSplitPane actionSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, gadgetParametersEditor, actionsTree); + JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, console, actionSplitPane); + actionSplitPane.setResizeWeight(0.5); + splitPane.setResizeWeight(0.5); + add(splitPane); + console.append("New gadget added"); + exploreGadget(); + revalidate(); + } + + /** + * Retreive gadget informations. + */ + private void exploreGadget() { + console.append("\n\n***************** Exploring gadget"); + // Get remote description + console.append("Description"); + console.append("------------------------------------"); + showDescription(gadget); + // Get remote notifications + console.append("\nNotifications"); + console.append("------------------------------------"); + showTokens(gadget.getNotifications()); + // Get remote notifications + console.append("\nControls"); + console.append("------------------------------------"); + showTokens(gadget.getCommands()); + } + + /** + * Format commands list. + * + * @param commands + * list + */ + private void showTokens(Vector<GadgetToken> vector) { + for (GadgetToken token : vector) { + console.append(" " + token.getName() + " : " + token.getDescription()); + } + } + + /** + * Format gadget description. + * + * @param description + * pluglet description + */ + private void showDescription(Gadget gadget) { + GadgetDescription description = gadget.getDescription(); + console.append(" " + description.getName() + " v" + description.getVersion() + " [" + description.getAuthor() + "]"); + console.append(" " + description.getDescription()); + console.append(" UUID : " + description.getUuid()); + console.append(" execution : " + description.getExecutionMode()); + console.append(" WorkingPath : " + gadget.getInterpreter().getWorkingPath()); + console.append(" iconFile : " + description.getIconFile()); + console.append(" HelpFile : " + description.getHelpFile()); + } + + public Gadget getGadget() { + return gadget; + } +} Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPanel.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPropertyEditor.java =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPropertyEditor.java (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPropertyEditor.java 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,97 @@ +/* This file is part of "TuxDroid Gadget Tester". + * Copyright 2008, kysoh + * Author : Yoran Brault + * eMail : software@_bad_karma-lab.net (remove _bad_ before sending an email) + * Site : http://www.kysoh.com/ + * + * "TuxDroid Gadget Tester" is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * "TuxDroid Gadget Tester" is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with "TuxDroid Gadget Tester"; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package com.kysoh.tuxdroid.gadget.framework.tester; + +import java.awt.BorderLayout;import java.awt.Color; + +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; + +import com.kysoh.tuxdroid.gadget.framework.container.Gadget; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstanceParameters; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetParameter; +import com.kysoh.tuxdroid.gadget.framework.propertyEditor.GadgetParameterEditorLabelRenderer; +import com.kysoh.tuxdroid.gadget.framework.propertyEditor.GadgetParametersEditorValueRenderer; +import com.kysoh.tuxdroid.gadget.framework.propertyEditor.PropertiesTableModel; +import com.kysoh.tuxdroid.gadget.framework.propertyEditor.PropertyValueEditor; + +public class GadgetPropertyEditor extends JPanel { + /** + * + */ + private static final long serialVersionUID = 1L; + + private Gadget gadget; + + private final JTable gadgetParametersEditor; + + GadgetInstanceParameters values; + + public GadgetPropertyEditor() { + super(new BorderLayout()); + gadgetParametersEditor = new JTable(new PropertiesTableModel(null, null)); + gadgetParametersEditor.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); + gadgetParametersEditor.setShowGrid(true); + gadgetParametersEditor.setBackground(Color.white); + add(gadgetParametersEditor); + } + + /** + * @return attached gadget. + */ + public Gadget getAttachedGadget(){ + return this.gadget; + } + + + /** + * @return the values + */ + public GadgetInstanceParameters getValues() { + return values; + } + + /** + * @param gadget + * the gadget to set + */ + public void setGadget(Gadget gadget) { + this.gadget = gadget; + values = new GadgetInstanceParameters(); + for (int i = 0; i < gadget.getParameters().size(); i++) { + GadgetParameter parameter = gadget.getParameters().get(i); + values.setValue(parameter, parameter.getDefaultValue()); + } + gadgetParametersEditor.setModel(new PropertiesTableModel(gadget.getParameters(), values)); + gadgetParametersEditor.setRowHeight(20); + TableColumnModel columnModel = gadgetParametersEditor.getColumnModel(); + TableColumn labelsColumn = columnModel.getColumn(0); + labelsColumn.setCellRenderer(new GadgetParameterEditorLabelRenderer()); + TableColumn valuesColumn = columnModel.getColumn(1); + valuesColumn.setCellEditor(new PropertyValueEditor(this.gadget)); + valuesColumn.setCellRenderer(new GadgetParametersEditorValueRenderer(this.values, this.gadget)); + } + +} Property changes on: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetPropertyEditor.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTester.java =================================================================== --- software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTester.java (rev 0) +++ software_suite_v2/software/gadgets/tuxdroid-gadget-tester/trunk/tuxdroid-gadget-tester/sources/com/kysoh/tuxdroid/gadget/framework/tester/GadgetTester.java 2008-07-27 09:19:56 UTC (rev 1380) @@ -0,0 +1,279 @@ +/* This file is part of "TuxDroid Gadget Tester". + * Copyright 2008, kysoh + * Author : Yoran Brault + * eMail : software@_bad_karma-lab.net (remove _bad_ before sending an email) + * Site : http://www.kysoh.com/ + * + * "TuxDroid Gadget Tester" is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * "TuxDroid Gadget Tester" is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with "TuxDroid Gadget Tester"; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package com.kysoh.tuxdroid.gadget.framework.tester; + +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.io.File; +import java.util.List; +import java.util.logging.Logger; + +import javax.swing.AbstractAction; +import javax.swing.ImageIcon; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +import net.karmaLab.application.Application; +import net.karmaLab.traces.ApplicationError; +import net.karmaLab.traces.Traces; + +import com.kysoh.tuxdroid.gadget.framework.container.Gadget; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstance; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetListener; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetsContainer; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetsContainerException; +import com.kysoh.tuxdroid.gadget.framework.container.GadgetsContainerListener; +import com.kysoh.tuxdroid.gadget.framework.container.interpreters.GadgetJavaInterpreter; + +/** + * provides .... + * + * @author yoran.brault@_bad_karma-lab.net (remove _bad_ before sending an + * email) + * @since 4 juin 08 + */ +public class GadgetTester extends Application<GadgetTesterConfiguration> { + /** + * Delegated observer for gadget events. + */ + private final class GadgetObserver implements GadgetListener { + @Override + public void errors(GadgetInstance source, String message) { + } + + /** {@inheritDoc} */ + @Override + public void notification(GadgetInstance source, String name, Object... parameters) { + // Exemple of global notification handling + if (name.equalsIgnoreCase("speak")) { + console.append(" Tux is speaking : " + parameters[0]); + } + } + + @Override + public void starting(GadgetInstance gadget) { + console.append("Gadget " + gadget.getGadget() + " instance #" + gadget.getId() + " started"); + } + + @Override + public void stopped(GadgetInstance gadget) { + console.append("Gadget " + gadget.getGadget() + " instance #" + gadget.getId() + " stopped"); + } + + @Override + public void trace(GadgetInstance gadgetInstance, String message) { + } + } + + public static void main(String[] args) { + GadgetTester tester = new GadgetTester(); + tester.boot(args); + } + + private final GadgetObserver gadgetObserver = new GadgetObserver(); + + /** Delegated observer for gadgets container events. */ + private final class GadgetsContainerObserver implements GadgetsContainerListener { + /** {@inheritDoc} */ + @Override + public void gadgetContainerError(Throwable throwable) { + console.append("-------------------- We have a problem --------------"); + console.append(throwable.getLocalizedMessage()); + throwable.printStackTrace(); + console.append("-----------------------------------------------------"); + } + + /** {@inheritDoc} */ + @Override + public void gadgetLoaded(Gadget gadget) { + console.append("New Gadget loaded : '" + gadget + "'"); + gadget.addListener(gadgetObserver); + GadgetPanel gadgetPanel = new GadgetPanel(gadget); + gadgetPanels.add(gadgetPanel.getGadget().getDescription().getName(), gadgetPanel); + int index = gadgetPanels.indexOfComponent(gadgetPanel); + ImageIcon icon = new ImageIcon(gadgetPanel.getGadget().getIconFile().getAbsolutePath()); + if (icon != null) { + icon = new ImageIcon(icon.getImage().getScaledInstance(22, 22, Image.SCALE_AREA_AVERAGING)); + gadgetPanels.setIconAt(index, icon); + } + } + + @Override + public void gadgetUnloaded(Gadget gadget) { + console.append("Gadget " + gadget + " unload"); + for (int i = gadgetPanels.getComponentCount() - 1; i >= 0; i--) { + GadgetPanel panel = (GadgetPanel) gadgetPanels.getComponentAt(i); + if (panel.getGadget().equals(gadget)) { + gadgetPanels.remove(panel); + return; + } + } + } + + @Override + public void deployementTerminated() { + console.append("All gadgets deployed"); + } + } + + private final class ShutdownAction extends AbstractAction { + public ShutdownAction() { + super("ShutDown"); + } + + @Override + public void actionPerformed(ActionEvent e) { + console.append("Shutting down the container"); + GadgetTester.this.stop(); + } + } + + private final class ShutdownHandler extends Thread { + @Override + public void run() { + new ShutdownAction().actionPerformed(null); + } + } + + /** Class logger. */ + private static final Logger logger = Traces.LOGGER(GadgetTester.class); + private JConsole console; + /** Reference to the container. */ + private GadgetsContainer container;; + /** Gadget panels. */ + private JTabbedPane gadgetPanels; + + public GadgetTester() { + super(new GadgetTesterConfiguration()); + + } + + /** + * Because we have to start somewhere... + * + * @throws UnsupportedLookAndFeelException + * @throws IllegalAccessException + * @throws InstantiationException + * @throws ClassNotFoundException + * @throws GadgetsContainerException + */ + private void startContainer() { + // Load default system UI + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException e) { + Traces.severe(logger, e); + } catch (InstantiationException e) { + Traces.severe(logger, e); + } catch (IllegalAccessException e) { + Traces.severe(logger, e); + } catch (UnsupportedLookAndFeelException e) { + Traces.severe(logger, e); + } + // Build the UI + JFrame frame = new JFrame("Fake Control Center"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + gadgetPanels = new JTabbedPane(); + console = new JConsole(); + JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, gadgetPanels, console); + splitPane.setResizeWeight(0.8); + splitPane.setDividerLocation(0.6); + frame.getContentPane().add(splitPane); + frame.setSize(800, 600); + JMenuBar bar = new JMenuBar(); + JMenu actionMenu = new JMenu("Actions"); + bar.add(actionMenu); + actionMenu.add(new JMenuItem(new ShutdownAction())); + frame.setJMenuBar(bar); + frame.setVisible(true); + // Verrrrry important, this hooks assert for us that all external + // applications + // (pluglets/gadgets) are unloaded before living, whatever the reason + Runtime.getRuntime().addShutdownHook(new ShutdownHandler()); + // This is a fake gadget creation as we don't use auto-deployer. Easier + // to test gadget API + console.append("Fake Control Manager Started"); + container = new GadgetsContainer(); + // Create CC message box and listen to Gadgets and Container events + container.addListener(new GadgetsContainerObserver()); + } + + private void stop() { + console.append("System halted.\nShutting down container"); + container.shutdown(); + } + + public void testGadget(File workingPath, Class<?> gadgetClass, File... classPath) { + startContainer(); + List<Gadget> gadgets = null; + try { + gadgets = container.buildGadgets(new File(workingPath, "gadgets.xml")); + } catch (GadgetsContainerException e) { + throw new ApplicationError(e); + } + for (Gadget gadget : gadgets) { + if (gadget.getInterpreter().getExecutable().equals(gadgetClass.getName())) { + for (File file : classPath) { + ((GadgetJavaInterpreter) gadget.getInterpreter()).getLibraries().add(file); + } + try { + container.addGadget(workingPath, gadget); + } catch (GadgetsContainerException e) { + console.append("Error : " + e.getMessage()); + } + } + } + } + + @Override + protected void run() throws GadgetsContainerException { + startContainer(); + if (getConfiguration().getMode... [truncated message content] |