====== Sample Applications ====== Sample applications are prototypical examples of application fragments or simple applications that demonstrate what can be done and how it can be done in SOLoist. They represent typical patterns of application design or use, implemented in SOLoist. The sample applications have the following purposes: * to demo some SOLoist's features, capabilities, expressiveness, and efficiency of development * to serve as learning material on how some typical tasks can be done in SOLoist * to serve as reusable patterns or fragments for real applications. The sample applications range from very simple to rather complex ones. They are ordered in a way that gradually introduces new and more complex features. Although the samples can be analyzed in any order, the readers are encouraged to go through them in the presented order, because some samples may use the solutions of their precendents. ===== Sample Application Structure and Contents ===== Each sample application demonstrates a specific set of features represented in the web-based UI that may or may not require a backend UML model and domain (business) logic implemented in Java code. The Wiki page of each sample application has the following sections: * a brief introduction and explanation of use, * a link to the live demo of the application, * the UML class diagram (if any) of the application's domain, * the business logic code (if any) that has to be written manually; only the manually written code fragments are given, while the rest of the Java classes is autogenerated by SOLoist, * the UI code that has to be manually written, and executed to create the application's UI. The presented artifacts (the UML model, the business logic Java code, and the UI code) represent all those and only those artifacts that have to be manually produced by the developer to obtain the executable sample application as demonstrated by the live demo. When the live demo is played with, in case it manipulates the backend object space, the appropriate [[oql:soloistexplorer|SOLoist Explorer]] OQL queries are available in the form of links that can be used to monitor the changes performed in the object space (database) while the user is interacting with the application. ===== Downloadable Source ===== The entire source UML model and Java code of all sample applications in one SOLoist project can be downloaded from [[http://soloistdemo.org/SampleApplicationsDownload.zip | here]]. Database configuration is described [[databaseconfiguration | here]]. ===== Catalogue of Sample Applications ===== | [[Tabs and Layouts|{{screen:tabsandlayouts.png?350|Tabs and Layouts}}]] | [[Tabs and Layouts]] shows the use of the tab component, a few static components (label, link, etc.), and various layout policies supported in SOLoist.\\ \\ [[http://soloistdemo.org/SampleApplications/tablayouts.html|Live demo]] | | [[Deck and Layouts|{{screen:deckandlayouts.png?350|Deck and Layouts}}]] | [[Deck and Layouts]] shows the use of the deck component, buttons, and //bindings// (//GUIBindingComponent//).\\ \\ [[http://soloistdemo.org/SampleApplications/decklayouts.html|Live demo]] | | [[Menus|{{screen:menus.png?350|Menus}}]] | [[Menus]] demonstrates menu components and different menu styles.\\ \\ [[http://soloistdemo.org/SampleApplications/menus.html|Live demo]] | | [[Wizard|{{screen:wizard.png?350|Wizard}}]] | [[Wizard]] is a classical wizard pattern. Introduces the dialog component (//GUIDialogComponent//).\\ \\ [[http://soloistdemo.org/SampleApplications/wizard.html|Live demo]] | | [[Element Component|{{screen:elementcomponent.png?350|Data Input, View, and Edit Controls}}]] | [[Element Component|Data Input, View, and Edit Controls]] demonstrates various SOLoist controls for entering, viewing, and editing data from the object space. It is based on a universal //Element Component// that can be configured and combined in very different ways, as shown in this example. The so-called //Service Access Points// for fetching objects from the object space into the UI and providing them on output pins are also introduced here.\\ \\ [[http://soloistdemo.org/SampleApplications/elementcomponent.html|Live demo]] | | [[Submit Person|{{screen:submitperson.png?350|Submit and Create}}]] | [[Submit Person|Submit and Create]] is a simple, classical form for entering data and creating a new object (of class Person in this example) when the form is submitted. The new object is created upon the Submit command, with the attributes configured from the data entered in the form. Commands are also used here.\\ \\ [[http://soloistdemo.org/SampleApplications/submitperson.html|Live demo]] | | [[Edit Person's Details|{{screen:editpersondetails.png?350|Edit Object Details}}]] | [[Edit Person's Details|Edit Object Details]] is a form for editing details (slots) of a selected object. It relies on the //Element Component// as shown in [[Element Component|Data Input, View, and Edit Controls]].\\ \\ [[http://soloistdemo.org/SampleApplications/editpersondetails.html|Live demo]]| | [[Person Tables|{{screen:personstable.png?350|Grids}}]] | [[Person Tables|Grids]] demonstrates various tabular views of object details.\\ \\ [[http://soloistdemo.org/SampleApplications/personstable.html|Live demo]] | | [[Persons and Bank Accounts|{{screen:personsandbankaccounts.png?350|CRUD}}]] | [[Persons and Bank Accounts|CRUD]] is a simple demo of a classical [[wp>Create,_read,_update_and_delete | CRUD]] (Create, Read, Update, Delete) pattern for objects of a class.\\ \\ [[http://soloistdemo.org/SampleApplications/personsandbankaccounts.html|Live demo]] | | [[Association Editor|{{screen:associationeditor.png?350|Selection List}}]] | [[Association Editor|Selection List]] shows how persistent selections of a subset of objects linked over an association can be implemented by means of another (subsetting) association and the appropriate configuration of the //Element Component//.\\ \\ [[http://soloistdemo.org/SampleApplications/associationeditor.html|Live demo]] | | [[Bank Advisers|{{screen:bankadvisers.png?350|Bank Advisers}}]] | [[Bank Advisers]] is a simple application that combines several features presented in the previous samples.\\ \\ [[http://soloistdemo.org/SampleApplications/bankadvisers.html|Live demo]] | | [[Search|{{screen:search.png?350|Search}}]] | [[Search]] is a prototypical search form for searching the object space according to the user's input criteria.\\ \\ [[http://soloistdemo.org/SampleApplications/search.html|Live demo]] | | [[Polymorphic|{{screen:polymorphic.png?350|Polymorhpic Form}}]] | [[Polymorphic|Polymorhpic Form]] demonstrates how a form can change depending on the type of the selected object that is provided on the form's input pin.\\ \\ [[http://soloistdemo.org/SampleApplications/polymorphic.html|Live demo]] | | [[Dynamic Panel|{{screen:dynamicpanel.png?350|Dynamic Panel}}]] | [[Dynamic Panel]] demonstrates a panel with dynamic contents that are programmatically created by the backend UI code triggered from the client, using //GUIDynamicContentPanel//.\\ \\ [[http://soloistdemo.org/SampleApplications/personcombo.html|Live demo]] | | [[Gallery|{{screen:gallery.png?350|Gallery}}]] | [[Gallery]] is a small application for a classical editable picture gallery.\\ \\ [[http://soloistdemo.org/SampleApplications/gallery.html|Live demo]] | | [[Google Maps|{{screen:googlemaps.png?350|Interactive Maps}}]] | [[Google Maps|Interactive Maps]] fully embeds [[http://maps.google.com/ | Google Maps]] that interact with the enclosing application by exhanging geo-coordinates.\\ \\ [[http://soloistdemo.org/SampleApplications/gmaps.html|Live demo]] | | [[File System|{{screen:filesystem.png?350|File System}}]] | [[File System]] is a web-based [[wp>Orthodox_file_manager#Orthodox_file_managers | Orthodox File Manager]], with a personalized directory structure and standard file operations. It shows how a traditional concept of a file system can be implemented using the object paradigm with UML modeling and SOLoist UI.\\ \\ [[http://soloistdemo.org/SampleApplications/filesystem.html|Live demo]] |