
eu.mihosoft.vrl.doc.mainpage Maven / Gradle / Ivy
/*
* mainpage.java
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2007–2018 by Michael Hoffer,
* Copyright (c) 2015–2018 G-CSC, Uni Frankfurt,
* Copyright (c) 2009–2015 Steinbeis Forschungszentrum (STZ Ölbronn)
*
* This file is part of Visual Reflection Library (VRL).
*
* VRL is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation.
*
* see: http://opensource.org/licenses/LGPL-3.0
* file://path/to/VRL/src/eu/mihosoft/vrl/resources/license/lgplv3.txt
*
* VRL 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.
*
* This version of VRL includes copyright notice and attribution requirements.
* According to the LGPL this information must be displayed even if you modify
* the source code of VRL. Neither the VRL Canvas attribution icon nor any
* copyright statement/attribution may be removed.
*
* Attribution Requirements:
*
* If you create derived work you must do three things regarding copyright
* notice and author attribution.
*
* First, the following text must be displayed on the Canvas:
* "based on VRL source code". In this case the VRL canvas icon must be removed.
*
* Second, the copyright notice must remain. It must be reproduced in any
* program that uses VRL.
*
* Third, add an additional notice, stating that you modified VRL. A suitable
* notice might read
* "VRL source code modified by YourName 2012".
*
* Note, that these requirements are in full accordance with the LGPL v3
* (see 7. Additional Terms, b).
*
* Please cite the publication(s) listed below.
*
* Publications:
*
* M. Hoffer, C. Poliwoda, & G. Wittum. (2013). Visual reflection library:
* a framework for declarative GUI programming on the Java platform.
* Computing and Visualization in Science, 2013, 16(4),
* 181–192. http://doi.org/10.1007/s00791-014-0230-y
*/
package eu.mihosoft.vrl.doc;
/** \mainpage VRL: Visual Reflection Library
* \author Michael Hoffer ([email protected])
* \date 2009
*
* \section intro_sec Introduction
*
* VRL is a flexible Swing based library for automatic and interactive object
* visualization.
*
* The project was started as a job for student assistants at
* IWR, University of Heidelberg
* (supervision: A. Heusel).
*
* \subsection why_sec Why VRL?
*
* The Simulation in Technology Center of Prof. Wittum needs a plattform
* independent client for their simulation system
* UG that provides an interactive
* graphical user interface as extension to the already existing shell
* environment.
*
*
* In addition to that VRL is a visual development environment for the Java
* platform.
*
*
* The aims of VRL are:
*
* - flexibility and plattform independence
*
- automated and interactive visualization of Java objects
*
- visual programming interface (with Groovy support)
*
- visual meta programming
*
- application deployment
*
*
*
* \subsection dev_status Development status
*
* In its current state VRL is able to generate user interfaces from any local
* Java object. The VRL-Studio application attempts to give easy access to most
* of the features.
*
* \subsection ug_support UG Support
*
* Christian Poliwoda is working on the UG visualization support. The
* visualization support is available as VRL extension and can be integrated to
* the VRL-Studio.
*
*
* As the XML based network interface for UG by Leo Reich is still in
* development only future version will have network transparent UG support.
*
*
* \section use_sec Using VRL
*
* Using VRL is straightforward. In combination with a modern IDE such as
* Netbeans 6.5 or higher the following example can be implemented very easily.
*
* \subsection req_sec Requirements
*
* For the examples you need at least:
*
* - Java 6
*
- Java3D 1.5.2
*
- Netbeans 6.5 (with Groovy and Grails)
*
- VRL 0.3
*
*
* You can get the VRL and example projects from
*
* www.mihosoft.de/software-projects/vrl.html
*
* \subsection tut_seq Basic Example
*
* After downloading and unpacking VRL start NetBeans and create a new
* Project (VRLExample):
*
* @image html netbeans_create_project_01.png
* @image latex netbeans_create_project_01.eps "Create New Project" width=10cm
*
* Make sure "Create Main Class" is unselected:
*
* @image html netbeans_create_project_02.png
* @image latex netbeans_create_project_02.eps "Project Properties" width=10cm
*
* Add the VRL-0.3.jar
* library file to the project by right-clicking on the "Libraries" folder
* of your project and clicking "Add JAR/Folder".
*
*
* @image html netbeans_add_libs_01.png
* @image latex netbeans_add_libs_01.eps "Add Libraries (1)" width=6cm
*
* After selecting the file click "Open".
*
* @image html netbeans_add_libs_02.png
* @image latex netbeans_add_libs_02.eps "Add Libraries (2)" width=10cm
*
* Do the same for the Java 3D Jar files and Groovy. For Groovy choose
* "Add Library" instead of "Add Jar/Folder". Select Groovy 1.5.5 from the list.
* If Groovy does not appear the Groovy and Grails plugin is not installed. This
* can be done with the Netbeans plugin manager. Please make sure that Java 3D
* is installed on your system. The example will only run if you have
* installed Java 3D properly.
*
*
* Add a new JFrame
form:
*
* @image html netbeans_new_jframe_01.png
* @image latex netbeans_new_jframe_01.eps "Add new JFrame (1)" width=10cm
*
* and call it "MainFrame":
*
* @image html netbeans_new_jframe_02.png
* @image latex netbeans_new_jframe_02.eps "Add new JFrame (2)" width=10cm
*
* In the Swing palette right-click and select "Create New Category"; call it VRL.
*
* @image html netbeans_add_beans_01.png
* @image latex netbeans_add_beans_01.eps "Add New Palette Category" width=8cm
*
* Now right-click again, select "Palette Manager" and click on "Add from JAR".
*
* @image html netbeans_add_beans_02.png
* @image latex netbeans_add_beans_02.eps "Add New Beans to Palette (1)" width=8cm
*
* There you have to load the VRL library file
* VRL-0.3.jar
by clicking on "Add from JAR".
* After clicking "Next" you can choose which components to add. Select
* "ObjectTree" and "VisualCanvas".
*
* @image html netbeans_add_beans_03.png
* @image latex netbeans_add_beans_03.eps "Add New Palette Category (2)" width=10cm
*
* Then click "Next" and select the "VRL" category before clicking "Finish".
*
*
* After following the previous steps you should see "VisualCavas" and
* "ObjectTree" in the Swing Palette. Drag them to the MainFrame. You can also
* use other Swing containers such as SplitPane
and
* ScrollPane
to create a custom layout.
*
* @image html netbeans_add_beans_04.png
* @image latex netbeans_add_beans_04.eps "Add Components to JFrame" width=10cm
*
* Now comes the interesting part. You have to write the classes you want to
* display. In our case it will be the following:
*
* \code
* class SimpleClass {
* public Integer add(Integer a, Integer b) {
* return a + b;
* }
* }
* \endcode
*
* Go to the MainFrame class and add the following to the constructor:
*
* \code
* objectTree1.addObject(new SimpleClass());
* objectTree1.addObject(new SimpleClass());
*
* objectTree1.expandRow(0);
* \endcode
*
* That's it. Now you can run the application. Drag the two objects from the
* tree to the canvas. You can connect the objects and invoke there methods.
*
* @image html netbeans_app_01.png
* @image latex netbeans_app_01.eps "Run the Example" width=10cm
*
* \subsection concl_seq Conclusion
* This first example shows the basic concept of VRL GUI design. Very important
* is the strict separation between functionality and design. The objects who
* contain the code are completely independent of their visual appearance. On
* the other hand a very essential feature is the possibility to manually
* specify the visual appearance of more complicated parameter types. Please
* read the \ref tr_page for further information.
*/