This is an old revision of the document!


This sample demonstrates distinctive feature, dynamically linking objects.

package rs.sol.sampleapps;

import rs.sol.sampleapps.listener.ObjectSpaceInit; 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.builtindomains.common.ClassifierInstanceDescriptor; import rs.sol.soloist.server.builtindomains.common.ElementDescriptor; 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.GUIElementComponent; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUIListWidget; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUISlotEditorKind; import rs.sol.soloist.server.guiconfiguration.elementcomponents.GUISlotValueInput; import rs.sol.soloist.server.guiconfiguration.layout.CellLayoutData; import rs.sol.soloist.server.guiconfiguration.layout.TableLayoutData; import rs.sol.soloist.server.guiconfiguration.nonvisualcompoments.GUIFindSingleInstanceSAPComponent; import rs.sol.soloist.server.guiconfiguration.style.GUIContext; import rs.sol.soloist.server.guiconfiguration.style.GUINavigatorFeature; import rs.sol.soloist.server.guiconfiguration.style.GUIObjectSetting; import rs.sol.soloist.server.guiconfiguration.style.GUIPictureFeature; import rs.sol.soloist.server.guiconfiguration.style.GUITextFeature; import rs.sol.soloist.server.server.SoloistServiceServlet;

public enum AssociationEditor implements Initializer{

INSTANCE;

@Override
public void init() throws InitializerFailedException 
{
	GUIApplicationComponent page = new GUIApplicationComponent();
	page.name.set(Text.fromString("AssociationEditor")); 
	SoloistServiceServlet.registerApplication(page);
	page.context.set(createContextAndStyles());
	
	GUIPanelComponent root = GUIPanelComponent.createFlow(page);
	
	GUILabelComponent title = GUILabelComponent.create(root, "Association Editor");
	title.styleName.set(Text.fromString("titleStyle"));
	
	GUIPanelComponent topPanel = GUIPanelComponent.createFlow(root);
	topPanel.styleName.set(Text.fromString("topPanel"));
	GUIPanelComponent table = GUIPanelComponent.createTable(topPanel); // panel with table layout
	
	GUIFindSingleInstanceSAPComponent findJanneRoe = GUIFindSingleInstanceSAPComponent.create(table, 
			Person.FQ_TYPE_NAME, 
			Person.FQPropertyNames.desc, 
			(ClassifierInstanceDescriptor)ElementDescriptor.create(Text.fromString(ObjectSpaceInit.JANNE_ROE_IDENTIFIER)), 
			false);
	
	GUIElementComponent editList = GUIElementComponent.create(table, GUISlotEditorKind.create(Person.PROPERTIES.successfulAdvisers), new GUIListWidget(), GUISlotValueInput.create(Person.PROPERTIES.myBankAdvisers), new TableLayoutData(0, 0));
	GUIComponentBinding.create(findJanneRoe.value, GUISlotEditorKind.get(editList).element);
	GUIComponentBinding.create(findJanneRoe.value, GUISlotValueInput.get(editList).element);
	CellLayoutData.setSize(editList, "250px", "200px");
	editList.styleName.set(Text.fromString("listEditor"));
}
private GUIContext createContextAndStyles() {
	GUIContext context = new GUIContext();
	context.supercontext.set(DefaultContextInit.getRoot());
	
	GUIObjectSetting person = GUIObjectSetting.create(context, Person.CLASSIFIER);
	GUITextFeature.createName(person, Person.PROPERTIES.name);
	GUITextFeature.createSeparator(person, ":", true);
	GUITextFeature.createDescription(person, Person.PROPERTIES.age);
	GUIPictureFeature.createSmallIcon(person, "images/icons/person.png");
	GUINavigatorFeature.createSubnodes(person, Person.FQPropertyNames.accounts);
	
	return context;
}

}

Print/export