Adichatz defines a new layer composed of controllers which forms a main feature of the component-driven architecture.\\ A controller is a [[http://www.javaworld.com/article/2076814/core-java/inheritance-versus-composition--which-one-should-you-choose-.html |composition]] of Rich UI components, as a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/ManagedForm.html | ManagedForm]] or simple SWT components as [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html | Text]]. \\ \\ The controller manages links between UI components and **entities** (see [[tutorial:runtime_overview#model_layer|Model layer]]) to ensure the connection with locks, dirty and lazy fetches management.\\ A life cycle, in which the developer can act, is combined to the controller. \\ Controllers can be divided in 4 categories: |< ^100% 300px ->| ^[[controllers:controllers#collection_controllers_hosting_entity|Collection controllers hosting entity]] | Entity injection process is managed by these controllers. That means that by default, they received the entity of the parent controller, but they can define they own entity or a null value. | ^[[controllers:controllers#field_controllers|Field controllers]]| These controllers can be linked to a field of a Pojo and follow [[tutorial:databinding_service | databinding]] rules. | ^[[controllers:controllers#other_collection_controllers|Other Collection controllers]]| Others controllers which contains a collection of controllers but do not manage entities. | ^[[controllers:controllers#other_controllers|Other controllers]]| Other controllers | \\ ====== Collection controllers hosting entity ====== |< 100% 200px ->| ^ArgPShelfController| Composition around a [[ http://www.eclipse.org/nebula/widgets/pshelf/pshelf.php | PShelf]] (see nebula project). Children should be PShelftemControllers and are defined by a List of values (like a combo) and so is not determined like for PShelfController. | ^ArgTabFolderController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CTabFolder.html | CTabFolder]]. Children should be CtabItemControllers and are defined by a List of values (like a combo) and so is not determined like for CtabFolderController. | ^[[controllers:compositecontroller|CompositeController]]| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Composite.html | Composite]]. Children available are the same as those of SectionController. | ^CompositeBagController| Composition around a specific control called CompositeBag: A bag of composites. Only one composite is displayed. | ^CTabItemController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CTabItem.html | CTabItem]]. Children available are the same as those of SectionController. | ^FormPageController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/ManagedForm.html|ManagedForm]] for simulating a page of an editor. | ^GroupController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Group.html | Group]]. Children available are the same as those of SectionController. | ^IncludeController| Specific controller to manage include process (see [[features:xml | axml Files]]) | ^PGroupController| Composition around a [[http://www.eclipse.org/nebula/widgets/pgroup/pgroup.php | PGroup]] (nebula project). | ^PShelfItemController| Composition around a [[http://www.eclipse.org/nebula/widgets/pshelf/pshelf.php | PShelfItem]] (nebula project). | ^SashFormController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/SashForm.html | SashForm]]. | ^ScrolledCompositeController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/widgets/SharedScrolledComposite.html | SharedScrolledComposite]]. | ^ScrolledFormController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/widgets/ScrolledForm.html | ScrolledForm]] (Provides scrolling and message zone). | ^ScrolledPGroupController| Composition around a [[http://www.eclipse.org/nebula/widgets/pgroup/pgroup.php | PGroup]] (nebula project). Content composite is a scrolled composite. | ^SectionController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/widgets/Section.html|Section]]. | ====== Field controllers ====== |< 100% 200px ->| ^CComboController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=%252Forg.eclipse.platform.doc.isv%252Freference%252Fapi%252Forg%252Feclipse%252Fswt%252Fcustom%252FCCombo.html | CCombo]]. Style AdiSWT.FIELD_ASSIST was added when Field Assist is demanded. | ^CheckBoxController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html | Button]] with style SWT.CHECK. Corresponding type in the database is boolean. | ^ComboController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Combo.html | Combo]]. Style AdiSWT.FIELD_ASSIST was added when Field Assist is demanded. | ^DateTextController| Composition of a DateText. DateText is an UI Adichatz component which allows to manage date in several format (Date, DateTime...). | ^EditableFormTextController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/widgets/FormText.html | FormText]]. An easy way to manage URL tag and image in your application. Futhermore, the controller provides a way to edit and change the text value.| ^[[controllers:extratextcontroller|ExtraTextController]]| The ExtraController is build around a specific control created for Adichatz. This is a FieldController that means that it can be linked to the databinding service. | ^FileController| Composition of a FileText: a specific control which manage file path. | ^[[controllers:fonttextcontroller|FontTextController]]| controller for choosing font. | ^[[controllers:gmapcontroller|GMapController]]| Composition of a GMap control. GMap is a composite control which contains a browser. A http request is send to google and map result is displayed. | ^HyperlinkController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/forms/widgets/Hyperlink.html | Hyperlink]]. | ^ImageViewerController| Receive an URL or file path or data and display an image. | ^LabelController| Composition of a [[ http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Label.html | Label]]. | ^[[controllers:multichoicecontroller|MultiChoiceController]]| Composition of a MultiChoice. a multiChoice is a special widget that allows you to multiple values inside a list of choices. | ^NumericTextController| Composition of a NumericText. NumericText is a Adichatz UI component. Corresponding types in the database are all numeric types. Format could be specified. | ^RadioGroupController| Composition of a list of [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html | Buttons]] with style SWT.RADIO. | ^RefRadioGroupController| Similar to a referenced RadioGroupController, but list of [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Button.html | Buttons]] is determined by a persistent set or a query. | ^RefTextController| Composition of a RefText. RefText (referenced text) is an UI Adichatz component which allows to manage Many-To-One relationship. Styles AdiSWT.FIND_BUTTON, AdiSWT.DELETE_BUTTON and AdiSWT.EDITOR_BUTTON are added when a find button, a delete button (for clearing value) and a edit button (for opening an editor) are demanded. | ^[[controllers:rgbtextcontroller|RGBTextController]]| Controller for choosing RGB (color). | ^[[controllers:richtextcontroller|RichTextController]]| Composition of a RichText. a rich text is a special widget that allows you to manage the bold, italic, underline or URLs in the text. | ^[[controllers:starratingcontroller|StarRatingController]]| Composition of a StarRating. a starRating is a special widget that allows you to select rating thru a number of stars. | ^TextController| Composition of a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Text.html | Text]]. Corresponding type in the database is varchar. | ====== Other Collection controllers ====== |< 100% 200px ->| ^ButtonBarController |Composition around a bar of buttonControllers and separators. You can specify an orientation. | ^CTabFolderController| Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CTabFolder.html | CTabFolder]]. Children should be CTabItemControllers. | ^^[[controllers:gridcontroller |GridController]] |Composition around nebula components [[https://www.eclipse.org/nebula/widgets/grid/grid.php | Grid]] and [[http://www.eclipse.org/nebula/releases/1.4.0/javadoc/org/eclipse/nebula/jface/gridviewer/package-frame.html|GridViewer]] (nebula project). | ^ManagedToolBarController |Specific [[ http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fwidgets%2FToolBar.html | ToolBar]] used in section. Children should be ActionControllers. | ^PShelfController |Composition around nebula component [[https://www.eclipse.org/nebula/widgets/pshelf/pshelf.php | PShelf]]. Children should be PShelfItemControllers. | ^[[controllers:tabularcontroller |TabularController]] | parent controller of [[controllers:tablecontroller |TableController]], [[controllers:gridcontroller |GridController]] among others. | ^[[controllers:tablecontroller |TableController]] |Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fwidgets%2FTable.html | Table]] and a [[http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjface%2Fviewers%2FTableViewer.html | TableViewer]]. | ^ToolBarController |Composition around a [[ http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fwidgets%2FToolBar.html | ToolBar]]. Children should be ToolItemControllers. | ^TreeController |Composition around a [[http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fwidgets%2FTree.html | Tree]] and a [[http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjface%2Fviewers%2FTreeViewer.html | TreeViewer]]. | ====== Other controllers ====== |< 100% 200px ->| ^ActionController| Child controller of ManagedToolBarController or component of a ButtonController. | ^ButtonController| Composition of a Button. It could contain, an Action Controller or define its own action. | ^ToolItemController| Child controller of ToolItemController, composition of a ToolItem. | ^FormattedTextController| Composition around a FormattedText (nebula project). | ^GridColumnController| Child controller of GridController (nebula project) corresponding to a column. | ^GridColumnGroupController| Child controller of GridController (nebula project) corresponding to a group of columns. | ^PGroupMenuController| Menu of a PGroup (nebula project). | ^PGroupToolItemController| Tool Item of a PGroup (nebula project). | ^TableColumnController| Child controller of [[controllers:tablecontroller |TableController]], composition of a TableViewerColumn. |