Announcement

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

    Checkbox tree problem by upgrading from SGWT 4.1d to 4.1p

    Hello, as mentioned, trying to upgrade from SmartGWT 4.1d PRO to 4.1p PRO.

    The porblem occurred by a checkboxtree, which has a tree with closed folders.

    In the version 4.1d i could normally select nodes (tree.selectRecord(Record)) under a closed folder. As result the folder gets a partial selection (the option setPartialSelection(true) is set).

    But the same code didn't work in version 4.1p. Result: No selected record and no partial selection by the folder. The code only work, when the folder is open!

    The following code represents the sample from the showcase, which I updated with two Buttons to demonstrate the bug!

    When the tree is open, the record will be select.
    When the tree is closed, no record will be select.

    Code:
     
    /*
     * Smart GWT (GWT for SmartClient)
     * Copyright 2008 and beyond, Isomorphic Software, Inc.
     *
     * Smart GWT 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.  Smart GWT is also
     * available under typical commercial license terms - see
     * [url]http://smartclient.com/license[/url]
     *
     * 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.
     */
    
    import com.smartgwt.client.types.SelectionAppearance;
    import com.smartgwt.client.types.TreeModelType;
    import com.smartgwt.client.widgets.Canvas;
    import com.smartgwt.client.widgets.events.DrawEvent;
    import com.smartgwt.client.widgets.events.DrawHandler;
    import com.smartgwt.client.widgets.form.DynamicForm;
    import com.smartgwt.client.widgets.form.fields.ButtonItem;
    import com.smartgwt.client.widgets.form.fields.CheckboxItem;
    import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
    import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
    import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
    import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
    import com.smartgwt.client.widgets.grid.CellFormatter;
    import com.smartgwt.client.widgets.grid.ListGridRecord;
    import com.smartgwt.client.widgets.layout.HLayout;
    import com.smartgwt.client.widgets.layout.VLayout;
    import com.smartgwt.client.widgets.tree.Tree;
    import com.smartgwt.client.widgets.tree.TreeGrid;
    import com.smartgwt.client.widgets.tree.TreeGridField;
    import com.smartgwt.client.widgets.tree.TreeNode;
    import com.google.gwt.core.client.EntryPoint;
    
    public class Checkboxtree_BUG implements EntryPoint {
    
        public static final TreeNode[] employeeData = new TreeNode[] {
                new EmployeeTreeNode("4", "1", "Charles Madigen", "Chief Operating Officer", true),
                new EmployeeTreeNode("189", "4", "Gene Porter", "Mgr Tech Plng IntIS T", false),
                new EmployeeTreeNode("265", "189", "Olivier Doucet", "Asset Spec Lines Stns", false),
                new EmployeeTreeNode("264", "189", "Cheryl Pearson", "Dsl Sys Rep", false),
                new EmployeeTreeNode("188", "4", "Rogine Leger", "Mgr Syst P P", true)
        };
        
        private Tree employeeTree = new Tree();
        private TreeGrid employeeTreeGrid = new TreeGrid();
    
        public void onModuleLoad() {
    
            employeeTree.setModelType(TreeModelType.PARENT);
            employeeTree.setRootValue(1);
            employeeTree.setNameProperty("Name");
            employeeTree.setIdField("EmployeeId");
            employeeTree.setParentIdField("ReportsTo");
            employeeTree.setOpenProperty("isOpen");
            employeeTree.setData(employeeData);
    
    
            employeeTreeGrid.setWidth(200);
            employeeTreeGrid.setHeight(240);
            employeeTreeGrid.setNodeIcon("icons/16/person.png");  
            employeeTreeGrid.setFolderIcon("icons/16/person.png");  
            employeeTreeGrid.setShowOpenIcons(false);
            employeeTreeGrid.setShowDropIcons(false);
            employeeTreeGrid.setClosedIconSuffix("");
            employeeTreeGrid.setData(employeeTree);
            employeeTreeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
            employeeTreeGrid.setShowSelectedStyle(false);
            employeeTreeGrid.setShowPartialSelection(true);
            employeeTreeGrid.setCascadeSelection(true);
    
            employeeTreeGrid.addDrawHandler(new DrawHandler() {
                public void onDraw(DrawEvent event) {
                    employeeTreeGrid.getTree().openAll();
                }
            });
    
            DynamicForm df = new DynamicForm();
            
            DynamicForm dfButtons = new DynamicForm();
    
            final CheckboxItem partialSelection = new CheckboxItem("partialSelect", "Allow Partial Selection");
            partialSelection.setDefaultValue(true);
            partialSelection.addChangeHandler(new ChangeHandler() {
                public void onChange(ChangeEvent event) {
                    boolean selected = partialSelection.getValueAsBoolean();
                    employeeTreeGrid.setShowPartialSelection(!selected);
                    employeeTreeGrid.redraw();
                }
            });
            
            final ButtonItem selectRecord = new ButtonItem("selectRecord", "Select record");
            selectRecord.addClickHandler(new ClickHandler() {
    			
    			@Override
    			public void onClick(ClickEvent event) {
    				employeeTreeGrid.selectRecord(3);
    			}
    		});
    
            final ButtonItem deselectRecord = new ButtonItem("deselectRecord", "Deselect record");
            deselectRecord.addClickHandler(new ClickHandler() {
    			
    			@Override
    			public void onClick(ClickEvent event) {
    				employeeTreeGrid.deselectAllRecords();
    			}
    		});
            
            df.setFields(partialSelection);
            dfButtons.setFields(selectRecord, deselectRecord);
    
            HLayout layout = new HLayout(20);
            layout.addMember(employeeTreeGrid);
            layout.addMember(df);
            layout.addMember(dfButtons);
    
            layout.draw();
        }
    
        public static class EmployeeTreeNode extends TreeNode {
            public EmployeeTreeNode(String employeeId, String reportsTo, String name, String job, boolean isOpen) {
                setAttribute("EmployeeId", employeeId);
                setAttribute("ReportsTo", reportsTo);
                setAttribute("Name", name);
                setAttribute("Job", job);
                setAttribute("isOpen", isOpen);
            }
        }
    
    }
    Last edited by Wilhelm.Stoll; 7 Apr 2014, 01:00.

    #2
    Is there any update to that issue? I have the same problem with selecting records.

    Comment

    Working...
    X