1. #1
    Sencha Premium Member
    Join Date
    Jul 2011
    Location
    Arizona
    Posts
    64
    Vote Rating
    0
    jdkida is on a distinguished road

      0  

    Default AssertionError w/ RowEditor and Horizontal Scrolling of Grid

    AssertionError w/ RowEditor and Horizontal Scrolling of Grid


    I have not noticed any thing actually being broken or not working, however when ever i create a grid that needs horizontal and vertical scrolling and I add in a RowEditor it causes an AssertionError in the Dev Mode log. However if I actually click on a row and open up the RowEditor i can then scroll with no problems but when i close it they come back again.

    I am using Ext GWT 2.5

    Any Ideas Here is my Grid Code.

    Code:
        public AccountTicketGridPanel(){
            
            setLayout(new FitLayout());
            createNewTicket = new CreateTicketWindow();
            replyToTicket = new ReplyTicketWindow();
            ToolBar topToolBar = new ToolBar();
            Button create = new Button("Create Ticket");
            create.setIconStyle("icon-email-add");
            topToolBar.add(create);
            
            create.addSelectionListener(new SelectionListener<ButtonEvent>() {
    
    
                @Override
                public void componentSelected(ButtonEvent ce) {
                    createNewTicket.getFormPanel().reset();
                    createNewTicket.setCorpAccountNumber(corpAcctNumber);
                    createNewTicket.show();
                }
            
            });
    
    
            final Button reply = new Button("Reply");
            reply.setEnabled(false);
            reply.setIconStyle("icon-email-reply");
            reply.addSelectionListener(new SelectionListener<ButtonEvent>() {
                @Override
                public void componentSelected(ButtonEvent ce) {
                    replyToTicket.show();
                }
            });
            
            topToolBar.add(reply);
            setTopComponent(topToolBar);
            
            // Create Grid Columns
            final SimpleComboBox<String> comboDept = new SimpleComboBox<String>();  
            comboDept.setForceSelection(true);  
            comboDept.setTriggerAction(TriggerAction.ALL);  
            comboDept.add(getDepartments());
            
            //Create Row Editor
            RowEditor<Ticket> rowEdit = new RowEditor<Ticket>();
          
            CellEditor departmentEditor = new CellEditor(comboDept) {  
              @Override  
              public Object preProcessValue(Object value) {  
                if (value == null) {  
                  return value;  
                }  
                return comboDept.findModel(value.toString());  
              }  
              @Override  
              public Object postProcessValue(Object value) {  
                if (value == null) {  
                  return value;  
                }  
                return ((ModelData) value).get("value");  
              }  
            };  
            
            final SimpleComboBox<String> comboPriority = new SimpleComboBox<String>();  
            comboPriority.setForceSelection(true);  
            comboPriority.setTriggerAction(TriggerAction.ALL);  
            comboPriority.add("High");  
            comboPriority.add("Medium");  
            comboPriority.add("Low");  
            comboPriority.add("Resolved");  
            comboPriority.add("In Progress");
            comboPriority.add("Unknown");
            
            CellEditor editorPriority = new CellEditor(comboPriority) {  
              @Override  
              public Object preProcessValue(Object value) {  
                if (value == null) {  
                  return value;  
                }  
                return comboPriority.findModel(value.toString());  
              }  
          
              @Override  
              public Object postProcessValue(Object value) {  
                if (value == null) {  
                  return value;  
                }  
                return ((ModelData) value).get("value");  
              }  
            }; 
            TextField<String> titleText = new TextField<String>();  
               titleText.setAllowBlank(false);
            List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
            ColumnConfig ticketIDColumn = new ColumnConfig("ticketNumber", "Ticket #", 100);
            ColumnConfig ticketlastUpdatedColumn = new ColumnConfig("lastUpdated", "Last Updated", 125);
            ticketlastUpdatedColumn.setDateTimeFormat(DateTimeFormat.getFormat("MM/dd/yyyy hh:mm aa"));
            ColumnConfig ticketTitleColumn = new ColumnConfig("title", "Title", 225);
            ticketTitleColumn.setEditor(new CellEditor(titleText));
            ColumnConfig ticketGroupColumn = new ColumnConfig("department", "Department", 115);
            ticketGroupColumn.setEditor(departmentEditor);
            ColumnConfig ticketAccountColumn = new ColumnConfig("corpAcctNumber", "Account #", 100);
            ColumnConfig ticketIssueColumn = new ColumnConfig("issue", "Issue", 100);
            ColumnConfig ticketPriorityColumn = new ColumnConfig("priority", "Priority", 75);
            ticketPriorityColumn.setEditor(editorPriority);
            ColumnConfig ticketCreatedDateColumn = new ColumnConfig("createDate", "Create Date", 125);
            ticketCreatedDateColumn.setDateTimeFormat(DateTimeFormat.getFormat("MM/dd/yyyy hh:mm aa"));
            columns.add(ticketIDColumn);
            columns.add(ticketAccountColumn);
            columns.add(ticketTitleColumn);
            columns.add(ticketPriorityColumn);
            columns.add(ticketIssueColumn);
            columns.add(ticketlastUpdatedColumn);
            columns.add(ticketGroupColumn);
            columns.add(ticketCreatedDateColumn);
            ColumnModel cm = new ColumnModel(columns);
    
    
            // loader and store
            itemStore = new ListStore<Ticket>();
            Listener<RowEditorEvent> saveListener = new Listener<RowEditorEvent>(){
                @Override
                public void handleEvent(RowEditorEvent be) {
                    Dispatcher.forwardEvent(AppEvents.UpdateTicketHeader, itemStore.getAt(be.getRowIndex()));
                }
            };
            rowEdit.addListener(Events.AfterEdit, saveListener);
            //Create Grid
            rowEdit.setClicksToEdit(ClicksToEdit.TWO);
            grid = new Grid<Ticket>(itemStore,cm);
            grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
            grid.setAutoExpandColumn("title");
            grid.setAutoExpandMin(150);
            
            
            grid.getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<Ticket>() {
                @Override
                public void selectionChanged(SelectionChangedEvent<Ticket> se) {
                    if (se.getSelection().size() > 0){
                        ticketItem = se.getSelectedItem();
                        showTicket(ticketItem);
                        replyToTicket.getFormPanel().reset();
                        replyToTicket.initializeFormFields(ticketItem);
                        reply.setEnabled(true);
                    }else{
                        reply.setEnabled(false);
                    }
                }
            });
            ticketAccountColumn.setHidden(true);
            grid.addPlugin(rowEdit);
            add(grid);
        }

    Here is the error log.

    java.lang.AssertionError: Method must be called after the component is rendered
    at com.extjs.gxt.ui.client.widget.Component.assertAfterRender(Component.java:1503)
    at com.extjs.gxt.ui.client.widget.Component.el(Component.java:405)
    at com.extjs.gxt.ui.client.widget.grid.RowEditor.positionButtons(RowEditor.java:837)
    at com.extjs.gxt.ui.client.widget.grid.RowEditor$1.handleEvent(RowEditor.java:252)
    at com.extjs.gxt.ui.client.widget.grid.RowEditor$1.handleEvent(RowEditor.java:1)
    at com.extjs.gxt.ui.client.event.BaseObservable.callListener(BaseObservable.java:178)
    at com.extjs.gxt.ui.client.event.BaseObservable.fireEvent(BaseObservable.java:86)
    at com.extjs.gxt.ui.client.widget.Component.fireEvent(Component.java:456)
    at com.extjs.gxt.ui.client.widget.grid.GridView.syncScroll(GridView.java:1937)
    at com.extjs.gxt.ui.client.widget.grid.GridView.handleComponentEvent(GridView.java:1208)
    at com.extjs.gxt.ui.client.widget.grid.Grid.onComponentEvent(Grid.java:514)
    at com.extjs.gxt.ui.client.widget.Component.onBrowserEvent(Component.java:884)
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1321)
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1277)
    at sun.reflect.GeneratedMethodAccessor187.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214)
    at sun.reflect.GeneratedMethodAccessor185.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
    at java.lang.Thread.run(Thread.java:662)
    Last edited by jdkida; 30 Sep 2011 at 10:27 AM. Reason: Added error

  2. #2
    Sencha Premium Member
    Join Date
    Jul 2011
    Location
    Arizona
    Posts
    64
    Vote Rating
    0
    jdkida is on a distinguished road

      0  

    Default


    This appears to also happen on the Explorer Demo - Row Editor with a Vertical scrollbar.

    http://www.sencha.com/examples/explo...#roweditorgrid

    To stop the error from happening override RowEditor.positionButtons

    Code:
    RowEditor<ModelData> rowEdit = new RowEditor<ModelData>(){ protected void positionButtons() {
    if(isRendered()){
    super.positionButtons();
    }
    }
    };
    Credit to niloc132 for helping with the overide method

  3. #3
    Software Architect
    Join Date
    Sep 2007
    Posts
    13,971
    Vote Rating
    132
    sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light

      0  

    Default


    Thanks for reporting this issue. Its on the list now and i will inform you once its fixed.

  4. #4

Thread Participants: 1

Tags for this Thread

Turkiyenin en sevilen filmlerinin yer aldigi xnxx internet sitemiz olan ve porn sex tarzi bir site olan mobil porno izle sitemiz gercekten dillere destan bir durumda herkesin sevdigi bir site olarak tarihe gececege benziyor. Sitenin en belirgin ozelliklerinden birisi de Turkiyede gercekten kaliteli ve muntazam, duzenli porno izle siteleri olmamasidir. Bu yuzden iste. Ayrica en net goruntu kalitesine sahip adresinde yayinlanmaktadir. Mesela diğer sitelerimizden bahsedecek olursak, en iyi hd porno video arşivine sahip bir siteyiz. "The Best anal porn videos and slut anus, big asses movies set..." hd porno faketaxi