Mega Code Archive

 
Categories / Java / GWT
 

A custom form control implemented as a picker (Smart GWT)

/*  * SmartGWT (GWT for SmartClient)  * Copyright 2008 and beyond, Isomorphic Software, Inc.  *  * SmartGWT is free software; you can redistribute it and/or modify it  * under the terms of the GNU Lesser General Public License version 3  * as published by the Free Software Foundation.  SmartGWT is also  * available under typical commercial license terms - see  * http://smartclient.com/license  * This software 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  * Lesser General Public License for more details.  */ package com.smartgwt.sample.showcase.client; import java.util.HashMap; import java.util.Map; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.RootPanel; import com.smartgwt.client.core.Rectangle; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Dialog; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.FormItemIcon; import com.smartgwt.client.widgets.form.fields.TextItem; import com.smartgwt.client.widgets.form.fields.events.IconClickEvent; import com.smartgwt.client.widgets.form.fields.events.IconClickHandler; public class Showcase implements EntryPoint {   public void onModuleLoad() {     RootPanel.get().add(getViewPanel());   }   public Canvas getViewPanel() {     final DynamicForm form = new DynamicForm();     form.setAutoFocus(true);     form.setWidth(200);     YesNoMaybeItem decision = new YesNoMaybeItem();     decision.setTitle("Decision");     form.setFields(decision);     return form;   }   public static class YesNoMaybeItem extends TextItem {     private static Dialog dialog;     private static YesNoMaybeItem currentEditor;     private static void makeDialog() {       dialog = new Dialog();       dialog.setAutoCenter(true);       dialog.setIsModal(true);       dialog.setShowHeader(false);       dialog.setShowEdges(false);       dialog.setEdgeSize(10);       dialog.setWidth(500);       dialog.setHeight(400);       dialog.setShowToolbar(false);       dialog.setWidth(130);       dialog.setHeight(110);       Map bodyDefaults = new HashMap();       bodyDefaults.put("layoutLeftMargin", 5);       bodyDefaults.put("membersMargin", 10);       dialog.setBodyDefaults(bodyDefaults);       final IButton yes = new IButton("YES");       yes.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {         public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) {           YesNoMaybeItem.seCurrentValue(yes.getTitle());         }       });       final IButton no = new IButton("NO");       no.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {         public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) {           YesNoMaybeItem.seCurrentValue(no.getTitle());         }       });       final IButton maybe = new IButton("MAYBE");       maybe.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {         public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) {           YesNoMaybeItem.seCurrentValue(maybe.getTitle());         }       });       dialog.addItem(yes);       dialog.addItem(no);       dialog.addItem(maybe);     }     // set the specified value and dismiss the picker dialog     private static void seCurrentValue(String value) {       currentEditor.setValue(value);       dialog.hide();     }     // show the picker dialog at the specified position     private static void showDialog(int left, int top) {       dialog.show();       dialog.moveTo(left, top);     }     public YesNoMaybeItem() {       // use default trigger icon here. User can customize.       // [SKIN]/DynamicForm/default_formItem_icon.gif       FormItemIcon formItemIcon = new FormItemIcon();       setIcons(formItemIcon);       addIconClickHandler(new IconClickHandler() {         public void onIconClick(IconClickEvent event) {           // get global coordinates of the clicked picker icon           Rectangle iconRect = getIconPageRect(event.getIcon());           // lazily create the YesNoMaybe picker dialog the first time a           // yesNoMaybe editor is clicked           if (YesNoMaybeItem.dialog == null) {             YesNoMaybeItem.makeDialog();           }           // remember what editor is active, so we can set its value from the           // picker dialog           YesNoMaybeItem.currentEditor = YesNoMaybeItem.this;           // show the picker dialog           YesNoMaybeItem.showDialog(iconRect.getLeft(), iconRect.getTop());         }       });     }   } }                  SmartGWT.zip( 9,880 k)