This is an old revision of the document!
Table of Contents
Polymorphic Sample
This sample demonstrates how GUI can change depending on the class of selected object. Selecting bank adviser from combo-box will add additional form field (Bank Name).
Live example
UML Model
Business Logic Code
None.
GUI Code
package rs.sol.sampleapps; import rs.sol.sampleapps.gui.GUIPersonDetails; import rs.sol.soloist.helpers.init.DefaultContextInit; import rs.sol.soloist.helpers.init.Initializer; import rs.sol.soloist.helpers.init.InitializerFailedException; import rs.sol.soloist.server.builtindomains.builtindatatypes.Text; import rs.sol.soloist.server.guiconfiguration.components.GUIApplicationComponent; import rs.sol.soloist.server.guiconfiguration.components.GUILabelComponent; import rs.sol.soloist.server.guiconfiguration.components.GUIPanelComponent; import rs.sol.soloist.server.guiconfiguration.construction.GUIComponentBinding; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUICollectionInput; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUIComboWidget; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUIElementComponent; import rs.sol.soloist.server.guiconfiguration.layout.VerticalAlignment; import rs.sol.soloist.server.guiconfiguration.nonvisualcompoments.GUIFindAllInstancesSAPComponent; import rs.sol.soloist.server.server.SoloistServiceServlet; public enum PersonCombo implements Initializer{ INSTANCE; @Override public void init() throws InitializerFailedException { GUIApplicationComponent page = new GUIApplicationComponent(); page.name.set(Text.fromString("PersonCombo")); SoloistServiceServlet.registerApplication(page); page.context.set(DefaultContextInit.getRoot()); GUIPanelComponent root = GUIPanelComponent.createFlow(page); GUILabelComponent title = GUILabelComponent.create(root, "Dynamic Panel"); title.styleName.set(Text.fromString("titleStyle")); GUIPanelComponent topPanel = GUIPanelComponent.createFlow(root); topPanel.styleName.set(Text.fromString("topPanel")); GUIPanelComponent horizontal = GUIPanelComponent.createHorizontal(topPanel, VerticalAlignment.TOP); GUILabelComponent.create(horizontal, "Choose person:").styleName.set(Text.fromString("margin3")); GUIFindAllInstancesSAPComponent allPersons = GUIFindAllInstancesSAPComponent.create(horizontal, Person.FQ_TYPE_NAME); GUIElementComponent comboBox = GUIElementComponent.createInput(horizontal, new GUIComboWidget(), new GUICollectionInput()); GUIComponentBinding.create(allPersons.value, GUICollectionInput.get(comboBox).collection); GUIPersonDetails pd = new GUIPersonDetails(); pd.parent.set(horizontal); GUIComponentBinding.create(comboBox.value, pd.element); } }