Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Custom SimpleType field type

    Hi there,
    I'm using SmartGWT 3.1p-2013-06-14 with GWT 2.5.1.
    I'm creating some custom types for recurring form items and I'm having trouble when using editorTypes that aren't standard FormItems (TextItem, ComboBoxItem, etc...). I have some form items that are Canvas Items and when setting them as editorType, it doesn't show on the form.
    Here's some sample code:
    Code:
    import com.smartgwt.client.data.SimpleType;
    import com.smartgwt.client.types.FieldType;
    import com.smartgwt.client.widgets.form.fields.FormItem;
    
    public class ComplexType extends SimpleType {
    	public ComplexType() {
    		super("complicado", FieldType.CUSTOM);
    		FormItem complexItem = new ComplexItem();
    		setEditorType(complexItem);
    	}
    }
    Code:
    import com.smartgwt.client.types.Alignment;
    import com.smartgwt.client.widgets.Canvas;
    import com.smartgwt.client.widgets.HTMLFlow;
    import com.smartgwt.client.widgets.form.fields.CanvasItem;
    import com.smartgwt.client.widgets.layout.HLayout;
    
    final class ComplexItem extends CanvasItem {
    	
    	@Override
    	public Canvas getCanvas() {
    		final HLayout hLayoutAlignCenter = new HLayout();  
            // Specifying the width creates space within which to center the members.  
            hLayoutAlignCenter.setWidth100();  
            hLayoutAlignCenter.setHeight100();  
            hLayoutAlignCenter.setLayoutMargin(6);  
            hLayoutAlignCenter.setMembersMargin(6);  
            hLayoutAlignCenter.setBorder("1px dashed blue");  
            hLayoutAlignCenter.setAlign(Alignment.CENTER); // As promised!  
              
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("red");  
            }});  
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("green");  
            }});  
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("blue");  
            }});
    		return hLayoutAlignCenter;
    	}
    }
    Looking at the isc console I can see that a canvas has been created.

    Is it possible to use custom CanvasItems with SimpleType?

    #2
    Just found the problem, I have to call setCanvas() instead of overriding getCanvas():
    Code:
    public final class ComplexItem extends CanvasItem {
    	public ComplexItem() {
    		final HLayout hLayoutAlignCenter = new HLayout();  
            // Specifying the width creates space within which to center the members.  
            hLayoutAlignCenter.setWidth100();  
            hLayoutAlignCenter.setHeight100();  
            hLayoutAlignCenter.setLayoutMargin(6);  
            hLayoutAlignCenter.setMembersMargin(6);  
            hLayoutAlignCenter.setBorder("1px dashed blue");  
            hLayoutAlignCenter.setAlign(Alignment.CENTER); // As promised!  
              
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("red");  
            }});  
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("green");  
            }});  
            hLayoutAlignCenter.addMember(new Canvas() {{  
                setHeight(40);  
                setWidth(40);  
                setBackgroundColor("blue");  
            }});
    		setCanvas(hLayoutAlignCenter);
    	}
    	
    }
    All is working well!

    Comment

    Working...
    X