/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2012 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.solutionmodel;
import com.servoy.base.scripting.annotations.ServoyClientSupport;
import com.servoy.base.solutionmodel.IBaseSMComponent;
/**
* Solution model base component interface.
*
* @author rgansevles
*
* @since 6.1
*/
public interface ISMComponent extends IBaseSMComponent, ISMHasUUID, ISMHasDesignTimeProperty
{
/**
* The background color of the component.
*
* @sample
* // This property can be used on all types of components.
* // Here it is illustrated only for labels and fields.
* var greenLabel = form.newLabel('Green',10,10,100,50);
* greenLabel.background = 'green'; // Use generic names for colors.
* var redField = form.newField('parent_table_text',JSField.TEXT_FIELD,10,110,100,30);
* redField.background = '#FF0000'; // Use RGB codes for colors.
*/
public String getBackground();
/**
* The type, color and style of border of the component.
*
* @sample
* //HINT: To know exactly the notation of this property set it in the designer and then read it once out through the solution model.
* var field = form.newField('my_table_text', JSField.TEXT_FIELD, 10, 10, 100, 20);
* field.borderType = solutionModel.createLineBorder(1,'#ff0000');
*/
public String getBorderType();
/**
* The font type of the component.
*
* @sample
* var label = form.newLabel('Text here', 10, 50, 100, 20);
* label.fontType = solutionModel.createFont('Times New Roman',1,14);
*/
public String getFontType();
/**
* The foreground color of the component.
*
* @sample
* // This property can be used on all types of components.
* // Here it is illustrated only for labels and fields.
* var labelWithBlueText = form.newLabel('Blue text', 10, 10, 100, 30);
* labelWithBlueText.foreground = 'blue'; // Use generic names for colors.
* var fieldWithYellowText = form.newField('parent_table_text', JSField.TEXT_FIELD, 10, 50, 100, 20);
* fieldWithYellowText.foreground = '#FFFF00'; // Use RGB codes for colors.
*/
public String getForeground();
/**
* Enables an element to resize based on its content and/or move when printing.
* The component can move horizontally or vertically and can grow or shrink in
* height and width, based on its content and the content of neighboring
* components.
*
* @sample
* var form = solutionModel.newForm('printForm', 'db:/example_data/parent_table', null, false, 400, 300);
* var slidingLabel = form.newLabel('Some long text here', 10, 10, 5, 5);
* slidingLabel.printSliding = SM_PRINT_SLIDING.GROW_HEIGHT | SM_PRINT_SLIDING.GROW_WIDTH;
* slidingLabel.background = 'gray';
* forms['printForm'].controller.showPrintPreview();
*/
@ServoyClientSupport(ng = false, wc = true, sc = true)
public int getPrintSliding();
/**
* Flag that tells if the component is transparent or not.
*
* The default value is "false", that is the components
* are not transparent.
*
* @sample
* // Load an image from disk an create a Media object based on it.
* var imageBytes = plugins.file.readFile('d:/ball.jpg');
* var media = solutionModel.newMedia('ball.jpg', imageBytes);
* // Put on the form a label with the image.
* var image = form.newLabel('', 10, 10, 100, 100);
* image.imageMedia = media;
* // Put two fields over the image. The second one will be transparent and the
* // image will shine through.
* var nonTransparentField = form.newField('parent_table_text', JSField.TEXT_FIELD, 10, 20, 100, 20);
* var transparentField = form.newField('parent_table_text', JSField.TEXT_FIELD, 10, 50, 100, 20);
* transparentField.transparent = true;
*/
public boolean getTransparent();
/**
* Enables a component to stick to a specific side of form and/or to
* grow or shrink when a window is resized.
*
* If opposite anchors are activated then the component with grow or
* shrink with the window. For example if Top and Bottom are activated,
* then the component will grow/shrink when the window is vertically
* resized. If Left and Right are activated then the component
* will grow/shrink when the window is horizontally resized.
*
* If opposite anchors are not activated, then the component will
* keep a constant distance from the sides of the window which
* correspond to the activated anchors.
*
* @sample
* var form = solutionModel.newForm('mediaForm', 'db:/example_data/parent_table', null, false, 400, 300);
* var strechAllDirectionsLabel = form.newLabel('Strech all directions', 10, 10, 380, 280);
* strechAllDirectionsLabel.background = 'red';
* strechAllDirectionsLabel.anchors = SM_ANCHOR.ALL;
* var strechVerticallyLabel = form.newLabel('Strech vertically', 10, 10, 190, 280);
* strechVerticallyLabel.background = 'green';
* strechVerticallyLabel.anchors = SM_ANCHOR.WEST | SM_ANCHOR.NORTH | SM_ANCHOR.SOUTH;
* var strechHorizontallyLabel = form.newLabel('Strech horizontally', 10, 10, 380, 140);
* strechHorizontallyLabel.background = 'blue';
* strechHorizontallyLabel.anchors = SM_ANCHOR.NORTH | SM_ANCHOR.WEST | SM_ANCHOR.EAST;
* var stickToTopLeftCornerLabel = form.newLabel('Stick to top-left corner', 10, 10, 200, 100);
* stickToTopLeftCornerLabel.background = 'orange';
* stickToTopLeftCornerLabel.anchors = SM_ANCHOR.NORTH | SM_ANCHOR.WEST; // This is equivalent to SM_ANCHOR.DEFAULT
* var stickToBottomRightCornerLabel = form.newLabel('Stick to bottom-right corner', 190, 190, 200, 100);
* stickToBottomRightCornerLabel.background = 'pink';
* stickToBottomRightCornerLabel.anchors = SM_ANCHOR.SOUTH | SM_ANCHOR.EAST;
*/
public int getAnchors();
/**
* The Z index of this component. If two components overlap,
* then the component with higher Z index is displayed above
* the component with lower Z index.
*
* @sample
* var labelBelow = form.newLabel('Green', 10, 10, 100, 50);
* labelBelow.background = 'green';
* labelBelow.formIndex = 10;
* var fieldAbove = form.newField('parent_table_text', JSField.TEXT_FIELD, 10, 10, 100, 30);
* fieldAbove.background = '#FF0000';
* fieldAbove.formIndex = 20;
*/
public int getFormIndex();
public void setFormIndex(int arg);
/**
* Flag that tells if the component should be printed or not when the form is printed.
*
* By default components are printable.
*
* @sample
* var form = solutionModel.newForm('printForm', 'db:/example_data/parent_table', null, false, 400, 300);
* var printedField = form.newField('parent_table_text', JSField.TEXT_FIELD, 10, 10, 100, 20);
* var notPrintedField = form.newField('parent_table_id', JSField.TEXT_FIELD, 10, 40, 100, 20);
* notPrintedField.printable = false; // This field won't show up in print preview and won't be printed.
* forms['printForm'].controller.showPrintPreview()
*/
@ServoyClientSupport(ng = false, wc = true, sc = true)
public boolean getPrintable();
public void setBackground(String arg);
public void setBorderType(String arg);
public void setFontType(String arg);
public void setForeground(String arg);
@ServoyClientSupport(ng = false, wc = true, sc = true)
public void setPrintSliding(int i);
public void setTransparent(boolean arg);
public void setAnchors(int arg);
@ServoyClientSupport(ng = false, wc = true, sc = true)
public void setPrintable(boolean arg);
}