|
|
Line 1: |
Line 1: |
− | {{RienaBreadcrumbs|
| + | #REDIRECT [[Riena Example Applications and Code Templates]] |
− | [[Riena_Project | Riena]] | Example Applications and Code Templates | }} | + | |
− | | + | |
− | {| align=right
| + | |
− | | __TOC__
| + | |
− | |}
| + | |
− | | + | |
− | On this page you will get a feel of the Riena framework by building and running applications built with Riena:
| + | |
− | | + | |
− | * We show you how to build your first Riena application, either using a template or starting from scratch.
| + | |
− | * We briefly explain what '''Ridgets''' ("Riena widgets") are; an extensive set of snippets will show you how to use them.
| + | |
− | * Sample applications will give you a glimpse of Riena features such as '''Remote Services''' and of Riena's UI/Navigation approach.
| + | |
− | | + | |
− | == Build your first Riena application ==
| + | |
− | | + | |
− | The easiest way to start building a Riena application is to use a template included in the Riena Templates Feature. Of course, you can also write a Riena app from scratch.
| + | |
− | | + | |
− | === Using the 'new project' templates ===
| + | |
− | | + | |
− | # Install the '''Riena Templates Feature''' from http://download.eclipse.org/rt/riena/updatesites/rienawizard
| + | |
− | # Create a new Plug-in Project (File > New > Plug-in Project > Next)
| + | |
− | # Choose a project name > Next
| + | |
− | # On the Content page:
| + | |
− | ## "This plug-in will make contributions to the UI" => Yes
| + | |
− | ## "Would you like to create a rich client application?" => Yes
| + | |
− | # The Templates page offers three "Riena" templates (picture below). Choose either one and hit Next or Finish.
| + | |
− | #* [[Image:Riena_pde_templates.png|350x350px]]
| + | |
− | | + | |
− | ; If you picked the "Riena Hello World" or "Riena Mail Template"
| + | |
− | : start the resulting project with Run As -> Eclipse Application.
| + | |
− | ; If you picked the "Riena Client/Server Template"
| + | |
− | : use the launch configurations that are included in the project. Start the server first, then the client.
| + | |
− | | + | |
− | Look at the code in the projects and have fun.
| + | |
− | | + | |
− | === If you prefer to roll your own ===
| + | |
− | Ralf Ebert has written an excellent tutorial on the first steps of [http://www.ralfebert.de/blog/eclipsercp/riena_tutorial/ how to build a Riena client application from scratch].
| + | |
− | | + | |
− | == Try the Riena Snippets ==
| + | |
− | The [[Riena_Snippets|Riena Snippets]] page contains a growing collection of self-contained code examples that show you how to use '''ridgets''' ("Riena widgets") and what you can do with them.
| + | |
− | | + | |
− | {{RienaBox|
| + | |
− | === What are ridgets? ===
| + | |
− | A ridget wraps an actual UI widget but offers a higher level of abstraction and it is independent from the UI toolkit (SWT). The idea is to separate the UI (view) from the logic behind it, which is moved to a view controller. The view controller interacts with the actual UI widgets through the ridgets. It should be possible to reuse a view controller with a view that is based on a different UI toolkit (e.g. Swing).
| + | |
− | | + | |
− | In effect, a ridget can be considered a mini-controller for a single UI control.
| + | |
− | | + | |
− | A ridget offers the most commonly-used functionality (like <tt>setText(String)</tt> of a
| + | |
− | text field) along with some extra convenience functionality like markers. A textfield can be marked as error by adding an ErrorMarker. The marking itself (changing color, setting icons, etc.) is handled
| + | |
− | by the Riena framework. Another example is the <tt>bindToModel(...)</tt> method for a simple
| + | |
− | databinding with a JavaBean.
| + | |
− | | + | |
− | The overall intention is to reduce the complexity for the application developer
| + | |
− | and to ensure a common look & feel across the application. If the functionality
| + | |
− | offered by the ridget's interface is not sufficient the developer can always
| + | |
− | access the actual UI widget. (Then of course he loses the independence from the
| + | |
− | UI toolkit). The set of ridgets is constantly getting bigger. If necessary it
| + | |
− | should be possible for applications to add its own ridgets.
| + | |
− | | + | |
− | In the view you create SWT controls as always and register them with Riena (<tt>addUIControl(...)</tt>). The ridgets will be injected into the controller, where you then have access to the corresponding ridgets.
| + | |
− | | + | |
− | (Adapted from a [http://markmail.org/message/tklyqqg7biym6uec discussion on riena-dev].) See also [[Riena_Custom_Ridgets#Ridget_Design_Principles|Ridget Design Principles]].
| + | |
− | }}
| + | |
− | | + | |
− | == Try the communication ping pong example ==
| + | |
− | # File -> Import -> Plug-in Development -> Plug-ins and Fragments -> Next.
| + | |
− | # Select "Projects with source folders" unter Import As (since it's more fun with source code) -> Next.
| + | |
− | # In the Plug-ins Listbox, select the 4 plugins <tt>*.communication.sample.pingpong.*</tt> and click Add and then Finish.
| + | |
− | # In the Run Dialog you can select which of the two components to run (under 'OSGi Framework').
| + | |
− | #* '''Don't forget''' to press the 'Add required Bundles' button for both of them before you start them!
| + | |
− | ## First, start the Riena Sample PingPong Server.
| + | |
− | ##* The server starts at port 8080, make sure it's not taken.
| + | |
− | ## Then start the Riena Sample PingPong Client.
| + | |
− | # On success your client will print a message on the console: <tt>PingPong::Client:: [Pong] says = Thx. I got the ping!</tt>
| + | |
− | # Switch to the server console; it should show a message like this: <tt>PingPong::Server:: [Ping] says = I ping you and you pong me</tt>
| + | |
− | | + | |
− | == Try the unit tests ==
| + | |
− | # Import the project <tt>org.eclipse.riena.tests</tt> from the target platform (same as above).
| + | |
− | # There are classes like <tt>AllTests</tt> on various levels that you can run as Junit Plugin Tests.
| + | |
− | # You can also run individual tests as JUnit Plugin Tests.
| + | |
− | | + | |
− | ; Currently there are more than 2000 tests
| + | |
− | : They should all work. Some of them fail if you click or move the mouse while the tests are running (e.g. focus or UI tests).
| + | |
− | ; Launch Error on starting tests
| + | |
− | : This sometimes happens when you launch a test as JUnit Plugin Test for the first time. => You will need to modify the launch configuration for this class:
| + | |
− | :# In the "Main" tab, change the field "Run an application" to "[No Application] - Headless Mode".
| + | |
− | :# In the "Plug-ins" tab:
| + | |
− | :## Launch with: choose "plug-ins selected below only".
| + | |
− | :## "Deselect All"
| + | |
− | :## Check/select the bundle containing the test you want to run.
| + | |
− | :## "Add Required Plug-ins"
| + | |
− | :# Apply. Run.
| + | |
− | ; Classes ending with <tt>*ITest</tt> require a server.
| + | |
− | : That's the Riena App Sample Server (explained in the next step).
| + | |
− | | + | |
− | == Install the Riena Sample App Server ==
| + | |
− | | + | |
− | Simple server with customer search web service:
| + | |
− | # Stop any previously started client or server.
| + | |
− | # Import the projects <tt>org.eclipse.riena.sample.app.server</tt> and <tt>org.eclipse.riena.sample.app.common</tt> from the target platform.
| + | |
− | # Start Riena App Server from the Run Dialog:
| + | |
− | #* Don't forget to press the button "Add required bundles".
| + | |
− | #* This server starts on port 8080, make sure that port is not taken.
| + | |
− | # That should bring up a relativly simple app server with just the customer search web service.
| + | |
− | | + | |
− | Server with many more services:
| + | |
− | # Stop the server again.
| + | |
− | # Bring up the Run Dialog again, select Riena App Server and select the bundles <tt>org.eclipse.riena.security.services</tt> and <tt>org.eclipse.riena.security.simpleservices</tt> (both found in the target platform).
| + | |
− | # Press "Add required bundles".
| + | |
− | # Run it.
| + | |
− | # Now you can see in the console a lot more (security-related) web services.
| + | |
− | # Now you can also run the <tt>*ITests</tt> from the <tt>tests</tt> bundle, e.g. <tt>SessionServiceITest</tt>.
| + | |
− | | + | |
− | == Run the Riena Example Client ==
| + | |
− | # File -> Import -> Plug-in Development -> Plug-ins and Fragments -> Next.
| + | |
− | # Select "Projects with source folders" unter 'Import As' (since it's more fun with source code) -> Next.
| + | |
− | # In the Plug-ins Listbox, select the plugin <tt>org.eclipse.riena.example.client</tt>, click 'Add' and then 'Finish'.
| + | |
− | # In the Run Dialog -> Eclipse Application, there are two entries "SWT ExampleApplication" and "SWT ExampleApplication (with alternative Lnf)".
| + | |
− | # You can launch them both:
| + | |
− | #* Don't forget to click on Add Required Plug-ins in the Plug-ins Tab.
| + | |
− | #* Both launchers start the same application based on the same code, but using two distinct Riena Themes (different colors, fonts etc.).
| + | |
− | # Play with it :-)
| + | |
− | | + | |
− | There is also a project <tt>org.eclipse.riena.sample.app.client.mail</tt> that you can import and start the same way. (The launcher is "Mail Sample (Riena UI)".)
| + | |
− | | + | |
− | == Run the Riena Demo ==
| + | |
− | # File -> Import -> Plug-in Development -> Plug-ins and Fragments -> Next.
| + | |
− | # Select "Projects with source folders" unter 'Import As' (again: it's more fun with source code) -> Next.
| + | |
− | # In the Plug-ins Listbox, select the 3 plugins <tt>org.eclipse.riena.demo.*</tt>, click 'Add' and then 'Finish'.
| + | |
− | # Run the Riena Demo Server launcher (don't forget Add Required Plug-ins).
| + | |
− | * Run the Riena Demo Client launcher (don't forget Add Required Plug-ins).
| + | |
− | | + | |
− | == Next Step ==
| + | |
− | | + | |
− | Get started with the [[Riena_Project#Key_Concepts_and_Features|key concepts and features of Riena]].
| + | |
− | | + | |
− | | + | |
− | [[Category:Riena]]
| + | |