This is an old revision of the document!


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;
    }
Print/export