Child pages
  • Solution Model

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 10

Table of Contents
styleupper-roman

Stoc

Purpose

The Solution Model is a feature since Servoy version 4.1 which allows you to manipulate different kinds of objects on-the-fly through scripting. You can perform actions such as:

...

To create a new blue line border of width 1 and use that on an existing form:

Code Block

var border = solutionModel.createLineBorder(1, 'blue');
var form = solutionModel.getForm('myForm);
form.borderType = border;

...

To create a new calculation with name myCalculation on table customers of server example_data which returns 1:

Code Block

var calculation = solutionModel.newCalculation('function myCalculation() { return 1; }', JSVariable.INTEGER, 'db:/example_data/customers');

To get the existing calculation myCalculation on table customers of server example_data:

Code Block

var calculation = solutionModel.getCalculation('myCalculation', 'db:/example_data/customers');

To output whether or not this calculation is a stored one:

Code Block

application.output('Stored calculation: ' + calculation.isStored();

To remove existing calculation myCalculation:

Code Block

solutionModel.removeCalculation('myCalculation', 'db:/example_data/customers');

...

To create a new stylesheet with name myStyle with a default style class for forms:

Code Block

var style = solutionModel.newStyle('myStyle' 'form { background-color: transparent; }';

To get existing stylesheet myStyle:

Code Block

var style = solutionModel.getStyle('myStyle')

To add a default style class for fields:

Code Block

style.text += 'field { background-color: blue; }';

To remove existing stylesheet myStyle:

Code Block

solutionModel.removeStyle('myStyle');

...

To create a new global variable with name myGlobalVariable of type TEXT:

Code Block

var globalVariable = solutionModel.newGlobalVariable('myGlobalVariable', JSVariable.TEXT);

To get existing global variable myGlobalVariable:

Code Block

var globalVariable = solutionModel.getGlobalVariable('myGlobalVariable');

To change its default value to abc:

Code Block

myGlobalVariable.defaultValue = 'abc';

To remove existing global variable myGlobalVariable:

Code Block

solutionModel.removeGlobalVariable('myGlobalVariable');

...

To create a new global method with name myGlobalMethod:

Code Block

var globalMethod = solutionModel.newGlobalMethod('function myGlobalMethod() { currentcontroller.newRecord(); }');

To get existing global method myGlobalMethod:

Code Block

var globalMethod = solutionModel.getGlobalMethod('myGlobalMethod');

To make it appear in the menu:

Code Block

globalMethod.showInMenu = true;

To remove existing global method myGlobalMethod:

Code Block

solutionModel.removeGlobalMethod('myGlobalMethod');

...

To create a new form with name myForm:

Code Block

var form = solutionModel.newForm('myForm');

To get existing form myForm:

Code Block

var form = solutionModel.getForm('myForm');

To disable its navigator:

Code Block

form.navigator = SM_DEFAULTS.NONE;

...

To clone existing form myForm to cloned form myClonedForm:

Code Block

var form = solutionModel.getForm('myForm');
var clonedForm = solutionModel.cloneForm('myClonedForm', form);

To remove existing form myForm:

Code Block

var success = history.removeForm('myForm');
if (success) {
	solutionModel.removeForm('myForm');
}

To revert existing form myForm to its original design-time state:

Code Block

var success = history.removeForm('myForm');
if (success) {
	solutionModel.revertForm('myForm');
}

...

To retrieve component with name myButton:

Code Block

var component = form.getComponent('myButton');

To hide the element:

Code Block

component.visible = true;

To retrieve all available components on the form:

Code Block

var components = form.getComponents();

To change the width of all elements to 200:

Code Block

for (var i = 0; i < components.length; i++) {
	components[i].width = 200;
}

To clone an existing component:

Code Block

solutionModel.cloneComponent('myClonedComponent', component);

...

To create a new form variable with name myFormVariable:

Code Block

var formVariable = form.newFormVariable('myFormVariable', JSField.TEXT_FIELD);

To get existing form variable myFormVariable:

Code Block

var formVariable = form.getFormVariable('myFormVariable');

To change its default value to abc:

Code Block

formVariable.defaultValue = 'abc';

To remove existing form variable myFormVariable:

Code Block

form.removeFormVariable('myFormVariable');

...

To create a new form method with name myFormMethod:

Code Block

var formMethod = form.newFormMethod('function myFormMethod() {controller.newRecord(); }');

To get existing form method myFormMethod:

Code Block

var formMethod = form.getFormMethod('myformMethod');

To make it appear in the menu:

Code Block

globalMethod.showInMenu = true;

To remove existing form method myFormMethod:

Code Block

form.removeFormMethod('myFormMethod');

...

To create a new body:

Code Block

var part = form.newPart(JSPart.BODY, 20);

To retrieve the existing body part:

Code Block

var part = form.getPart(JSPart.BODY);

To change its background to white:

Code Block

part.background = 'white';

To remove the existing body part:

Code Block

form.removePart(JSPart.BODY);

...

To create a tree view with name myBean:

Code Block

var bean = form.newBean('myBean', 'com.servoy.extensions.beans.dbtreeview.DBTreeView', 200, 200, 300, 300);

To get existing bean myBean:

Code Block

form.getBean('myBean');

To change its anchoring to top, left and bottom:

Code Block

bean.anchors = SM_ANCHOR.NORTH | SM_ANCHOR.WEST | SM_ANCHOR.SOUTH;

To remove existing bean myBean:

Code Block

form.removeBean('myBean');

...

To create a new button with name myButton and text Text and attaching global method myGlobalMethod to it:

Code Block

var globalMethod = solutionModel.getGlobalMethod('myGlobalMethod');
var button = form.newButton('Text', 0, 0, 80, 20, globalMethod);
button.name = 'myButton';

To get existing button myButton:

Code Block

var button = solutionModel.getButton('myButton');

To change its height to 30:

Code Block

button.height = 30;

To remove existing button myButton:

Code Block

form.removeButton('myButton');

...

To create a new text field with name myField with form variable myFormVariable as its dataprovider:

Code Block

var formVariable = form.getFormVariable('myFormVariable');
var field = form.newField(formVariable, JSField.TEXT_FIELD, 0, 0, 100, 200);
field.name = 'myField';

To get existing field myField:

Code Block

var field = form.getField('myField');

To change its display type to a text area:

Code Block

field.displayType = JSField.TEXT_AREA;

To remove existing field myField:

Code Block

form.removeField('myField');

...

To create a new label with name myLabel with text Text:

Code Block

var label = form.newLabel('Text', 0, 0, 100, 20);
label.name = 'myLabel';

To get existing label myLabel:

Code Block

var label = form.getLabel('myLabel');

To change its horizontal alignment to center:

Code Block

label.horizontalAlignment = SM_ALIGNMENT.CENTER;

To remove existing label myLabel:

Code Block

form.removeLabel('myLabel');

...

To create a new portal with name myPortal based on relation myRelation:

Code Block

var relation = solutionModel.getRelation('myRelation');
var portal = form.newPortal('myPortal', relation, 0, 0, 500, 500);

To get existing portal myPortal:

Code Block

var portal = form.getPortal('myPortal');

To make it resizable:

Code Block

portal.resizable = true;

To remove existing portal myPortal:

Code Block

form.removePortal('myPortal');

...

To create a new tab with name myTabPanel:

Code Block

var tabPanel = form.newTabPanel('myTabPanel', 0, 0, 500, 500);

To get existing tab panel myTabPanel:

Code Block

var tabPanel = form.getTabPanel('myTabPanel);

To add a new tab with name myTab based on relation myRelation:

Code Block

var relation = solutionModel.getRelation('myRelation');
var tab = tabPanel.newTab('myTab', 'Text', myRelatedForm, relation);

To remove existing tab panel myTabPanel:

Code Block

form.removeTabPanel('myTabPanel');

...

To create a new relation with name myRelation between tables customers and orders:

Code Block

var relation = solutionModel.newRelation('myRelation', 'db:/example_data/customers', 'db:/example_data/orders', JSRelation.INNER_JOIN);

To get existing relation myRelation:

Code Block

var relation = solutionModel.getRelation('myRelation');

To create new a new relation item based on fields id and customer_id:

Code Block

relation.newRelationItem('id', '=', 'customer_id');

To remove existing relation myRelation:

Code Block

solutionModel.removeRelation('myRelation');

...

To create a new value list with name myValueList:

Code Block

var valueList = solutionModel.newValueList('myValueList', JSValueList.CUSTOM_VALUES);

To get existing value list myValueList:

Code Block

var valueList = solutionModel.getValueList('myValueList');

To set custom values for the value list:

Code Block

valueList.customValues = '1\n2';

To remove existing value list myValueList:

Code Block

solutionModel.removeValueList('myValueList');

...

To create new media with name myMedia:

Code Block

var media = solutionModel.newMedia('myMedia', plugins.http.getMediaData('http://www.servoy.com/images/logo_servoy.gif'));

To get existing media myMedia:

Code Block

var media = solutionModel.getMedia('myMedia');

To change its content:

Code Block

media.bytes = plugins.http.getMediaData('http://servoy.com/images/headerimages/open_source.jpg');

To remove existing media myMedia:

Code Block

solutionModel.removeMedia('myMedia');

...