This is an old revision of the document!
Table of Contents
Dynamic Panel Sample
This sample introduces often used GUIDynamicContentPanel.
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); } }
//GUIPersonDetails.java @Override protected GUIContainerComponent getDynamicContents(IElement el) { GUIPanelComponent rootPanel = GUIPanelComponent.createFlow(null); rootPanel.styleName.set(Text.fromString("person_details")); Person p = (Person)el; if (p == null) { GUILabelComponent.create(rootPanel, "No Persons selected."); return rootPanel; } GUIPanelComponent table = GUIPanelComponent.createTable(rootPanel); int row = 0; if (p instanceof BankAdviser) { GUILabelComponent.create(table, "Bank: ", row, 0); GUILabelComponent.create(table, Text.stringValue(((BankAdviser)p).bank), row++, 1); } GUILabelComponent.create(table, "Name: ", row, 0); GUILabelComponent.create(table, Text.stringValue(p.name), row++, 1); GUILabelComponent.create(table, "Is married? ", row, 0); GUILabelComponent.create(table, p.isMarried.val().toBoolean() ? "YES" : "NO", row++, 1); if (Gender.MALE.equals(p.gender.val())) { GUILabelComponent.create(table, "Age: ", row, 0); GUILabelComponent.create(table, p.age.val().toString(), row++, 1); table.styleName.set(Text.fromString("male")); } else { table.styleName.set(Text.fromString("female")); } return rootPanel; }