From: <sam...@us...> - 2009-02-05 14:16:22
|
Revision: 16569 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=16569&view=rev Author: sampaioprimo Date: 2009-02-05 14:16:09 +0000 (Thu, 05 Feb 2009) Log Message: ----------- [ADD] update morcego wiki3d browser to version 0.6.0 Modified Paths: -------------- trunk/templates/tiki-browse_freetags.tpl trunk/templates/tiki-wiki3d.tpl Added Paths: ----------- trunk/lib/wiki3d/ trunk/lib/wiki3d/CHANGELOG trunk/lib/wiki3d/CREDITS.txt trunk/lib/wiki3d/LGPL.txt trunk/lib/wiki3d/LICENSE.txt trunk/lib/wiki3d/README.txt trunk/lib/wiki3d/morcego-0.6.0.jar trunk/lib/wiki3d/pom.xml Removed Paths: ------------- trunk/lib/wiki3d/ Added: trunk/lib/wiki3d/CHANGELOG =================================================================== --- trunk/lib/wiki3d/CHANGELOG (rev 0) +++ trunk/lib/wiki3d/CHANGELOG 2009-02-05 14:16:09 UTC (rev 16569) @@ -0,0 +1,110 @@ +Morcego Changelog +------------------ + +All developers are invited to add relevant changes in this file as they +apply them to the SVN source. You can optionally include an identifer +for the origin of the change (author, submitter, anyone involved) but +that's not so useful as the svn log knows who adds what when. + +Use the following tags to distinguish changes : +* [NEW] apply if something new was added in morcego +* [MOD] is an enhancement; not really new but makes things work better +* [FIX] can be used for bug fixes of any sort + +Version 0.6.0 + +In v0.6 the long hours developers have invested in making xmlrpc servers won't be necessary +anymore. It comes with a demo application, with PHP classes ready to use, ajax methods to +dinamically load content (using xajax) and content controlled by xml files, so anyone is now able +to make a static Morcego application by just editing these xml files. + +The most significant change in v0.6 is javascript communication: now nodes and links can have +"onmouseover", "onmouseout" and "onclick" javascript events. It's a simple modification, but +now Morcego can be really embbeded instead of being an external browser. Other important improvement +is the camera, that does not distort border of big graphs anymore. Besides that, there are some new +node types (Square and Triangle), link types (DashedDirectional and Invisible), applet is more stable +and configuration is simpler. + +[NEW] Better integration with HTML page by generating JS events from Morcego, through "onmouseover", "onmouseout" and "onclick" node properties +[NEW] Demo php application +[NEW] Proper visualization for trees, implementation of node hierarchy finally working, defined by node property "level". If new boolean configuration + "graphIsTree" is true, a simulated wind will blow the nodes with intensity according to "windIntensity" and node level. +[NEW] Camera algorithm rewriten, peripherical distortion avoided (and so part of graph may get out of sight). New configuration "cameraDepth", + the distance between the view area and the focus point behind it. +[NEW] refresh() method to be called by javascript +[NEW] changeParam() method to be called by javascript (not working yet) +[MOD] Lower minimum java version requirement, now compatible with XXX (can anyone confirm the minimum version?) +[NEW] Types "Square" and "Triangle" for nodes; "DashedDirectional" and "Invisible" for links +[NEW] Center node position is configurable through "originX" and "originY" configuration vars +[MOD] Node properties case insensitive. Most link properties too, just not "from" and "to". +[MOD] Simpler width and height settings: windowWidth, windowHeight, viewWidth and viewHeight removed; width and height added, default is html element size +[MOD] Simpler Arca logo positioning, calculated according to window size +[MOD] Default center node size proportion is now 1, because the scale was messing with depth perception +[FIX] proper thread control, threads now stop with the applet instead of becoming ghosts and hanging browser +[FIX] synchronization control that would break applet + + +Version 0.5.0 + +In this version graph internal structure and xmlrpc transport were refactored so that +links can have properties as nodes do. Now it's possible to represent different kinds +of nodes and relations and have its physical properties to reflect some real world value. + +Visualization impression also got better with a more flexible camera adjustment. + +[NEW] Xmlrpc transport version 2, supporting properties for links +[NEW] Configurable node and link types +[NEW] Types "Dashed", "Directional" and "Bidirectional" for links +[NEW] Types "Text" and "Image" for nodes +[NEW] Mouse over on link shows description +[MOD] More flexible camera adjustment system, controlled by minCameraDistance option +[NEW] Configuration option centerNodeScale +[MOD] Config variable linkColor renamed to defaultLinkColor and transportClass renamed to transport +[MOD] New default values for windowWidth, elasticConstant, punctualElasticConstant and feedAnimationInterval +[MOD] Configuration options adjustCameraDistance removed, viewHeight and viewWidth got obsolete +[FIX] Balancer would not awake if it stops while user holds a node +[NEW] Navigation controlled by javascript + +Version 0.4.1 + +[FIX] Node title was being ignored + +Version 0.4.0 +------------- + +In this version code was extensively refactored. Greatest improvement is the +new physical model that gives graph a much better visual impression. + +New configuration vars (check README for meaning): + + - frictionConstant, new Float(0.4f)); + - elasticConstant, new Float(0.5f)); + - punctualElasticConstant, new Float(1f)); + - eletrostaticConstant, new Float(1000f)); + - springSize, new Float(100)); + - nodeMass, new Float(5)); + - nodeCharge, new Float(1)); + - loadPageOnCenter, new Boolean(true)); + +These are not used anymore: + + - originX + - originY + - originZ + - universeRadius + - maxNodeSpeed + - linkedNodesDistance + +Changes: + +[ADD] physical model to balance graph +[ADD] support for description box on mouse over +[ADD] Morcego and Arca logs, optional +[ADD] support for different transport layers, only XmlprcTransport available + by now +[ADD] option to have camera distance relative to nearest node instead of + center, default. +[ADD] option to open target page on every navigation, default +[MOD] nodes pop always behind center node, to avoid hanging while rendering + very big nodes +[FIX] graph instability in some cases Added: trunk/lib/wiki3d/CREDITS.txt =================================================================== --- trunk/lib/wiki3d/CREDITS.txt (rev 0) +++ trunk/lib/wiki3d/CREDITS.txt 2009-02-05 14:16:09 UTC (rev 16569) @@ -0,0 +1,24 @@ +CREDITS: 2007/03/19 +http://morcego.arca.ime.usp.br + +This software is developed mainly by Arca (http://arca.ime.usp.br), a Free Software +development group from Brazil: + - Luis Fagundes, developer and mantainer + - Alexandre Freire and Christian Asmussen, the java masters! :-) + - Fernando Freire, physical modeling + - David Horat developed image nodes + - Renato Lopes designed the logo + - Pedro Saito designed the Morcego poster for Wikimania 2005 + - Fabio Mathias helped me fix a bug + - Everybody from Arca who tests the software and sends sugestions + +Special thanks for the TikiWiki community who inspired this software and tests it. + +There were also hired developers from www.rentacoder.com: + - Devapi D. wrote an initial code example from which the project could be started. + - Ales Pucelj fixed the problem with XmlRpcClient that wouldn't allow applet to run in browser. (v0.3) + + Sponsors + - Carlos Seabra paid the initial code example from Devapi D. + - Sight Educacao & Comunicacao sponsored most of the development of version 0.3 + Added: trunk/lib/wiki3d/LGPL.txt =================================================================== --- trunk/lib/wiki3d/LGPL.txt (rev 0) +++ trunk/lib/wiki3d/LGPL.txt 2009-02-05 14:16:09 UTC (rev 16569) @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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 Library or any portion +of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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 with +this License. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + Added: trunk/lib/wiki3d/LICENSE.txt =================================================================== --- trunk/lib/wiki3d/LICENSE.txt (rev 0) +++ trunk/lib/wiki3d/LICENSE.txt 2009-02-05 14:16:09 UTC (rev 16569) @@ -0,0 +1,16 @@ +Morcego - 3D network browser +Copyright (C) 2007 Luis Fagundes - Arca <lfa...@ar...> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Added: trunk/lib/wiki3d/README.txt =================================================================== --- trunk/lib/wiki3d/README.txt (rev 0) +++ trunk/lib/wiki3d/README.txt 2009-02-05 14:16:09 UTC (rev 16569) @@ -0,0 +1,533 @@ +Morcego 3D Network Browser - v0.6.0 +http://morcego.arca.ime.usp.br +----------------------------------- + +Morcego is a java applet for visualizing and browsing graphs (networks) +in 3D. You can use it to make 3D mind maps. It can be embedded in web +applications and it's goal is to become a visualization framework. + +The job of integrating Morcego to your website is becoming easier each version +If this documentation is not enough, don't be afraid to send a message to +developers mailing list at mor...@ar.... We hope you have as much +fun using Morcego as we do by coding it :-). + +Morcego is licensed under GNU LESSER GENERAL PUBLIC LICENSE (LGPL). + +This documentation is divided in three parts: first one is about using applet, +second on how to embbed Morcego in other applications and finally how to upgrade +to v0.6.0. + +This document is divided in the following sections: + +1 - Using the applet +2 - Embedding applet in application +2.1 - Making a server +2.1.1 - Making a static mindmap +2.1.2 - Integrating to your PHP application +2.1.3 - Developing your own XMLRPC server +2.1.4 - Creating a new transport layer +2.2 - Properties for nodes and links +2.3 - Javascript integration +2.4 - Applet configuration +3 - Upgrading +3.1 - From v0.5 to v0.6 +3.2 - From v0.4 to v0.5 +3.3 - From v0.3 to v0.4 + +1 - USING THE APPLET + +Once Morcego applet window opens, you'll see (after loading, that +may take some moments) an animation of little balls connected to each +other in a network getting arranged in space - a cool effect by the way ;-). + +The possible actions: + + * ROTATE - Drag mouse on empty space and you'll be able to see the graph + from different angles. If you drag fast and relase, like throwing, + the graph will keep spinning. + + * GET INFO - Put the mouse cursor over a node, and it will become a hand. If + there's more info about that node, a description box will appear. + + * NAVIGATE - Click on a node and it will go to center. When you do that, the + new neighbourhood will appear in a few moments (wait a bit for + the info to come from server). Clicking on center node will + open the node URL in browser window. + + * MOVE NODE - Click on a node and drag to move it. The graph will balance + itself as you move. This is useful to see how a node influences + the whole network. + +2 - EMBEDDING APPLET IN APPLICATION + +For integrating Morcego applet in your web application, you need an special Morcego server +to feed the applet with graph data. This is usually done with XMLRPC, the only transport +way available until now (check section 2.4 on how to implement other ways). + +Implementing this used to be a tough task, but since v0.6 Morcego comes with a demo application +and a set of PHP classes for integration with other softwares. You have several options, depending +on your technical skills and time available. You can: + +* Make a static mindmap website by editing some XML data files and templates +* Implement your own server in PHP to make a dynamic map, by extending a PHP class +* Develop a XMLRPC server that implements Morcego's protocol in any language you wish +* Make a new transport layer in java, by extending a java class and creating a server to feed it. + +2.1 - MAKING A SERVER + +2.1.1 - MAKING A STATIC MINDMAP + +If you don't have much technical skills, but would like to make an online mind map, you can do one +by editing some XMl files and putting a simple application in a webserver with PHP: + +* Copy demo/ to a directory in your web server, let's say /var/www/morcego_demo for example. +* Copy morcego-$VERSION.jar and php/Morcego to /var/www/morcego_demo +* Give permission to your web user to write to /var/www/morcego_demo/templates_c +* Open a browser and check the results +* Take a look at the XML files under templates/data directory. Edit them to customize the mindmap. +* Check also the .tpl files at templates/ dir. Modify those to customize the layout. For help on that, check http://smarty.php.net + +2.1.2 - INTEGRATING TO YOUR PHP APPLICATION + +Morcego also comes with a set of PHP classes to make your own server. You'll need two files: your server (let's call it server.php), +a php file available through HTTP, and a subclass of Morcego_Graph (let's call it MyGraph) + +* server.php + +Very simple, check demo/server.php on how to do that. All you need to do is create a Morcego_Graph object (note that Morcego_Graph is an +abstract class and must be subclassed) and use it to instantiate a Morcego_Server object. + +* MyGraph + +This is the core of your server. You must implement the method getNode($nodeId), that takes the nodeId and returns a data structure +containing all relevant data about node with id $nodeId and the links it has to/from other nodes. + +The data structure has the exact same format of the getSubGraph() method (explained below at 2.3), but you usually want to return +only one node in "nodes" section. I say usually, because it might be useful to return a bigger set of nodes and links, for example +in raw XMl server used by the demo: you might want to defined many nodes in one XML files to make your job easier (note that in the +demo you can't start your navigation in some of the nodes that doesn't have it's own XMl file). + +2.1.3 - DEVELOPING YOUR OWN XMLRPC SERVER + +The XMLRPC server should implement two methods: + + * integer getVersion() + +This method returns the XMLRPC protocol version. Current version is 2, so if you're +implementing the server according to instructions below, this method should return "2". +In case this method is not present, version 1 is assumed, and so data structure for +older versions of Morcego (0.4 and below) will be expected. + + * struct getSubGraph(string nodeId, int depth) + +This method returns a part of the graph containing the node with id +nodeId and all nodes with distance lesser or equal than depth. +The returned struct must be as follow, {} indicates structs and [] +arrays, fields marked with * are optional (see section below for complete +list of properties) + +{ + nodes => { + nodeId => { + * type => "Round", + * color => "#FF0000", + * actionUrl => "http://...", + * description => "node description, shown in box", + }, + node1Id => {}, + node2Id => {...} + } + links => [ + { + from => "nodeId", + to => "node2Id", + * type => "Solid" + }, + + { + from => "nodeId", + to => "node1Id", + * type => "Dashed" + } + + ] +} + +2.1.4 - CREATING A NEW TRANSPORT LAYER + +You can do so by creating a new java class in package br.arca.morcego.transport package that implements Transport. +Your class must have the word "Transport" at end, because it will be appended to the parameter "transport" to +obtain the class name. + +You have to implement two methods (check interface): + +* setup: will be called once + +* retrieveData: will be called once on start and everytime user navigates. The format of hash returned is the same described + above in getSubGraph() from xmlrpc server. + +2.2 - PROPERTIES FOR NODES AND LINKS + + Each NODE can have the following properties: + + * type: "Round", "Square", "Triangle", "Text" or "Image". + Round nodes are represented by balls with a title above (that can be empty). + Square and Triangle have similar behavior, but with other forms + Text nodes have just the title. + Image nodes are represented by image defined by "image" property, an url. + + * title: Name of the node, that will appear above Round, Square and Triangle nodes, or will + be the text in Text nodes. + + * actionUrl: The URL that will be loaded by this node, in window defined by applet param + "controlWindowName". + + * description: Text that will show when mouse passes over the node + + * onClick: Javascript code to be executed when user clicks the node. This can substitute + (NEW) actionUrl with an ajax call, for example (but both can be used). + + * onMouseover and onMouseout: Javascript code to be executed when user passes mouse over and + (NEW) get out the node. This can substitute "description" above (but + can be used together). + + * color: Overrides nodeDefaultColor and defines the color of node if it's Round, Square or Triangle. + + * charge: Overrides nodeCharge configuration and sets the eletrostatical charge of + the node. Bigger values will put this node far from others. + + * mass: Overrides nodeMass configuration and sets the mass of the node. Bigger + values will give more inerce to the node and make it move slower. + + ** NOTE: in v0.4 "charge" and "mass" were called "bodyCharge" and "bodyMass". v0.5 README file + lacked documentation about the renaming. + + * level: If your graph is an hierarchical tree, then setting the level will force nodes of higher levels + (NEW) to be positioned in far from lower level nodes. Since this implies using conflicting forces to position + nodes, you need very fine tunning of physical constants to avoid extreme graph instability (see windIntensity + applet parameter). + + Each LINK can have the following ones: + + * type: "Solid", "Directional", "Bidirectional", "Dashed", "DashedDirectional" and "Invisible" + Solid links are solid lines from one node to another. + Directional is solid with an arrow from one to other. + Bidirectional has arrows in both ends. + Dashed is a dashed line. + (NEW) DashedDirectional is a dashed line with an arrow. + (NEW) Invisible do not appear, just influences the balancing. + + * from (mandatory): The id of the node at one end. + + * to (mandatory): The id of the node at other end. + + ** NOTE: the order of "from" and "to" only matters for "Directional" and "DashedDirectional" type of link. + + * description: Text that will show when mouse passes over the link. + + * color: Overrides linkDefaultColor and defines color of link. + + * onClick, onMouseover and onMouseout: same as node's properties with same name, execute js code on these events. + (NEW) + + * springSize: Overrides springSize configuration option for this link and sets its size. + Bigger values will put nodes far from each other. + + * springElasticConstant: Overrides elasticConstant configuration option for this link. + Bigger values will lower variation between springSize and final size. + Smaller values will make animation smoother. + +2.3 - JAVASCRIPT INTEGRATION + +Besides the JS calls from applet shown above, you can use javascript to call the following applet's methods: + +* navigateTo(nodeId) - navigate to node with id nodeId, simulates user click on node. + +* refresh() - reloads applet data from server + +* changeParam(varName, value) - dinamically changes one of applet's param (APPARENTLY NOT WORKING YET, + ask the developers to give special attention to this if you need it ;-) ) + +2.4 - APPLET CONFIGURATION + +There are configuration variables on Config class, every var can be overrided +by an applet param with same name. The only ones that you must override +are serverUrl and startNode. All variables: + + - serverUrl (string): Full URL of XMLRPC server. MANDATORY + - startNode (string): ID of the starting node. MANDATORY + + Colors and layout settings + + - showMorcegoLogo (boolean): default true + Show software's logo on position below + - logoX (integer): default 10 + - logoY (integer): default 10 + + - showArcaLogo (boolean): default true + Show deverlopers' logo on position below, bottom right corner by default + - arcaX (integer): default width - 127 + - arcaY (integer): default height - 40 + + - originX (integer): default width/2 + - originY (integer): default height/2 + (NEW) Origin's coordinates had to be configured manually in v0.3, then in v0.4 these + parameters were removed and since v0.6 they're again available for configuration. + It might be useful to change the center of the graph in case graphIsTree is set to true. + + - backgroundColor (color): default #FFFFFF + + - linkDefaultType (string): default "Solid" + Can also be any of link types defined above. + Overrided by property "type" of each link. + + - linkDefaultColor (color): default #787878 + + + - nodeDefaultType (string): default "Round" + Can also be any of node types defined above. + Overrided by property "type" of each node. + + - nodeDefaultColor (color): default #FF0000 + + - nodeDefaultImage (string or url): default "default.gif" + This is used for nodes of type "Image". + default.gif is packaged with applet, you should put an url here. + Be careful, images take a lot of cpu, use very simple ones. + + - nodeBorderColor (color): default #000000 + + - textSize (integer): default 25 + Size of text in node + - nodeSize (integer): default 15 + Size of the node + - minNodeSize (integer): default 0 + Minimum size of node, 0 will make far nodes disappear + - centerNodeScale (float): default 2 + Proportion of center node, to put it in more evidence than others. + + - descriptionColor (color): default #282828 + Color of text in node's description box. + + - descriptionBackground (color): default #c8c8c8 + + - descriptionBorder (color): default #000000 + + - descriptionMargin (integer): default 4 + Margin around text in description box. + + - width (integer): default is to automatic get from browser + - height (integer): default is to automatic get from browser + + (NEW - width and height substitute viewWidth, viewHeight, + windowWidth, windowHeight, viewStartX and viewStartY) + + Camera configuration + + - cameraDistance (integer): default 500 + Distance from camera to center node. + + - cameraDepth (integer): default 250 + (NEW) Distance from camera screen to its focus + + - minCameraDistance (integer): default 150 + Minimum distance from camera to nearest node. + In case a node get too near, cameraDistance is increased. + + - fieldOfView (integer): default 250 + The greater fieldOfView is, bigger is everything. + + + Physical constants used to balance the graph. For best position, Morcego uses a physical + simulation in which each node is an eletrical charge with mass and no dimension, each + connection is a spring and whole system is in a viscose environment. Nodes are leveled + by a simulated wind in case graphIsTree is set to true. + + - frictionConstant (float): default 0.4 + Small values increases the time for graph to get + balanced, while very big values will make the whole + process very slow. + + - elasticConstant (float): default 0.3 + This is the default elastic constant for links, smaller values will + make movements smoother but graph will take more time to balance. + Overrided by property with same name for each link. + + - punctualElasticConstant (float): default 0.8 + Elastic constant of spring that will move some node to center + when it's clicked. The smaller this value, the smoother is the + navigation. + + - eletrostaticConstant (float): default 1000 + Bigger values will put nodes far from each other. + + - springSize (float): default 100 + Bigger values increase the distance of nodes + + - nodeMass (float): default 5 + Bigger values increase the inerce of system + + - nodeCharge (float): default 1 + Bigger values increase the strengh of repulsion of nodes + + - windIntensity (float): default 10 + (NEW) Intensity of wind that will level nodes in case graphIsTree is + true. Low values won't give the desired impression, high values + will cause extreme system instability. You'll need fine adjustment + of all physical constants to use this. + + Rotation angle limits. These configure mouse sensitiveness for rotating the graph. + + - maxTheta (float): default 20.0f + + - minTheta (float): default 1.0f + + Performance X Quality options + + - renderingFrameInterval (integer): Delay between each frame of animation, in miliseconds. + default 50. + + - balancingStepInterval (integer): Interval between each calculation of forces to + balance the graph, in miliseconds. Increase will + raise performance and lower animation quality. + default 50. + + - fontSizeInterval (integer): Looks like font rendering is cached, so that if a lower + number of font sizes are rendered the performance is + better. Increasing this number will increase performance + but lower text depth impression. default 5. + + General configuration + + - graphIsTree (boolean): default false. + (NEW) This determines if a wind should blow the nodes to in one direction + according to its "level" property. You'll need fine adjustment of + physical constants to get a good visual tree disposition. + + - transport (string): default "Xmlrpc" + Kind of transport layer used, xmlrpc is the only one at moment. + + - feedAnimationInterval (integer): default 100 + Time between appearance of each node, in milisecs. + + - loadPageOnCenter (boolean): default false. + If set to true, target page will be loaded on browser + when user navigates to node. Since v0.6 you'd probably + prefer to use node's onClick property. + + - navigationDepth (integer): default 3 + The distance from farest node to center. The bigger it + is, more nodes will be fetched around center. + + - controlWindowName (string): default "morcegoController" + Name of window in which URLs should be loaded. + This only has any effect if the nodes have an actionUrl + set by server. + + +3 - UPGRADING + +3.1 - Upgrading 0.5 -> 0.6 + +To upgrade from v0.5 to v0.6, put morcego-0.6.0.jar in place of morcego-0.5.0.jar and check below +the changes made in applet that may affect your application: + + - Configuration variables changed + + * viewWidth, viewHeight, windowWidth, windowHeight, viewStartX and viewStartY got obsolete. + Now you should use just width and height, starting point is always at (0,0) and the default + values are obtained from browser. Be aware that keeping the default might not work correctly + in some MacOS versions. + + - New default values + + * nodeSize: 15 instead of 30 + * textSize: 25 instead of 40. NOTE: nodeSize and textSize default values were changed in v0.5, + but the changed was not documented. + + * centerNodeScale: 1 instead of 2 (this scale was messing with depth perception) + * fieldOfView: 250 instead of 200 + * elasticConstant: 0.3 instead of 0.5 (more smooth) + * loadPageOnCenter: false instead of true (now it's better to use node's onClick property) + + - New configuration options + + * graphIsTree + * windIntensity + * cameraDepth + * originX + * originY + + +3.2 - Upgrading 0.4 -> 0.5 + +To upgrade from v0.4 to v0.5, put morcego-0.5.0.jar in place of morcego-0.4.jar and check below +the changes made in applet that may affect your application. You can remove xmlrpc jar file, it's +now packaged in morcego's jar. If you want to benefit from new features like link properties, +dashed and directional links, you have to implement in your server the new version of XMLRPC +transport protocol. For that, check "EMBEDDING APPLET IN APPLICATION" section above. + + - Configuration variables renamed + + * linkColor: renamed to linkDefaultColor + * transportClass: renamed to transport. + The suffix "Transport" in this configuration is not used anymore. + + - New default values + + * windowWidth: 600 instead of 500 + * elasticConstant: 0.3 instead of 0.5 + * punctualElasticConstant: 0.8 instead of 1 + * feedAnimationInterval: 100 instead of 500 + + - Removed options + + * adjustCameraPosition: this got obsolete with new minCameraDistance, that makes camera adjustment + more flexible. If you want behaviour of adjustCameraPosition, just set + minCameraDistance to same value as cameraDistance. + + * viewHeight, viewWidth: these are not really gone, but they now default to windowHeight and windowWidth, so + you don't have to configure them anymore. Right now it's useless to define a view + smaller than window. + + - New configuration options + + * minCameraDistance: defines the minimum distance of the camera from any node. Use this instead of + adjustCameraPosition. + * centerNodeScale: see above + +3.3 - Upgrading 0.3 -> 0.4 + +To upgrade from v0.3 to v0.4.0 you basically have to: + + 1- put morcego-0.4.0.jar in place of morcego-0.3.jar + + 2- Check if you have configured any of these variables: + + * ballBorderColor: renamed to nodeBorderColor + + * minBallSize: renamed to minNodeSize + + * cameraX, cameraY, cameraZ: all three substituted by cameraDistance. Note the new + variable adjustCameraPosition. + + 3- Check if any of these new behaviour bothers you and change them as desired: + + * Having software logo and developer's logo in screen. You might have to configure + arcaX and arcaY if your window is not default size. + + * Now camera distance is relative to plane of nearest node instead of fixed origin. + Disable adjustCameraPosition to fix... [truncated message content] |