Announcement

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

    Custom picker does not work in Calendar event editor

    Hi guys,
    calling FormItem.setValue(...) in calendar's event editor has no effect. Thus custom pickers do not work there - no matter whether these are using SelectItems or just TextItems etc.
    I am using smartGWT 2.5 with GWT 2.3.0 and was able to reproduce this issue in IE8.0.7601 and chrome 15.0.874.106m in both hosted and web mode. Running on Win7 with java 1.6.

    Any thoughts?
    Thank you!
    Cheers
    Miro

    Here is a sample code created using the custom picker show case example.
    When the picker calls setValue, no value is set in the TextItem:

    Code:
     
    public class CalendarPanel extends VLayout{
    	public static class Factory implements PanelFactory {
    		private static Canvas canvas;
    		private static String id;
    		public Canvas create() {
    			canvas = new CalendarPanel();
    			id =  canvas.getID();
    			return canvas;
    		}
    		
    		public String getID() {
    			return id;
    		}
    	}
    	
    	public CalendarPanel(){
            Calendar calendar = new Calendar();  
            calendar.setDataSource(CalendarDS.getInstance());  
            calendar.setAutoFetchData(true);
    
            //specify the last field from the default fields so that subsequent fields come after the  
            //default fields  
            TextItem descItem = new TextItem("description", "Description");  
            descItem.setName("description"); 
            descItem.setAttribute("type", "textArea");
            
            TextItem  nameItem = new TextItem (CalendarDS.EVENT_NAME,"Subject");
            
    		YesNoMaybeItem decision = new YesNoMaybeItem();  
            decision.setTitle("Decision");
    		
    		calendar.setEventEditorFields(nameItem, descItem, decision);
            calendar.setEventNameFieldTitle("Subject");
            addMember(calendar);
    	}
    	
        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  
    	    			if (iconRect != null) {
    	    				YesNoMaybeItem.showDialog(iconRect.getLeft(), iconRect.getTop());
    					} else {
    						YesNoMaybeItem.showDialog(EventHandler.getY(), EventHandler.getX());
    					}
                    }  
                });  
            }  
        }  
    
    }
Working...
X