Coverage Report - org.kuali.student.lum.lu.ui.tools.client.widgets.itemlist.ItemList
 
Classes in this File Line Coverage Branch Coverage Complexity
ItemList
0%
0/46
0%
0/14
1.636
ItemList$1
0%
0/5
N/A
1.636
ItemList$MyGwtEvent
0%
0/3
N/A
1.636
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.lum.lu.ui.tools.client.widgets.itemlist;
 17  
 
 18  
 import java.util.ArrayList;
 19  
 import java.util.List;
 20  
 
 21  
 import org.kuali.student.common.ui.client.mvc.Callback;
 22  
 
 23  
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 24  
 import com.google.gwt.event.logical.shared.ValueChangeHandler;
 25  
 import com.google.gwt.event.shared.HandlerRegistration;
 26  
 import com.google.gwt.user.client.ui.Composite;
 27  
 import com.google.gwt.user.client.ui.FlexTable;
 28  
 import com.google.gwt.user.client.ui.HasValue;
 29  
 import com.google.gwt.user.client.ui.SimplePanel;
 30  
 import com.google.gwt.user.client.ui.VerticalPanel;
 31  
 import com.google.gwt.user.client.ui.Widget;
 32  
 
 33  0
 public class ItemList<V extends ItemValue<V>> extends Composite implements HasValue<List<V>> {
 34  
     
 35  
     private List<V> value;
 36  0
     protected SimplePanel mainPanel = new SimplePanel();
 37  0
     private List<ValueChangeHandler<List<V>>> valueChangeHandlers =
 38  
         new ArrayList<ValueChangeHandler<List<V>>>(3);
 39  0
     private boolean editable = true; // default to editable
 40  
     
 41  0
     public ItemList() {
 42  0
         super.initWidget(mainPanel);
 43  0
     }
 44  
     
 45  
     @Override
 46  
     public List<V> getValue() {
 47  0
         return value;
 48  
     }
 49  
 
 50  
     @Override
 51  
     public void setValue(List<V> value, boolean fireEvents) {
 52  0
         this.value = value;
 53  0
         redraw();
 54  0
         if (fireEvents) {
 55  0
             callHandlers();
 56  
         }
 57  0
     }
 58  
 
 59  
     @Override
 60  
     public void setValue(List<V> value) {
 61  0
         this.value = value;
 62  0
         redraw();
 63  0
         callHandlers();
 64  0
     }
 65  
     
 66  
     private void callHandlers() {
 67  0
         if (valueChangeHandlers != null) {
 68  0
             MyGwtEvent myEvent = new MyGwtEvent(value);
 69  0
             for (ValueChangeHandler<List<V>> handler : valueChangeHandlers) {
 70  0
                 handler.onValueChange(myEvent);
 71  
             }
 72  
         }
 73  0
     }
 74  
     
 75  
     private void redraw() {
 76  0
         VerticalPanel itemsPanel = new VerticalPanel();
 77  0
         FlexTable itemTable = new FlexTable();
 78  0
         int row = 0;
 79  0
         mainPanel.clear();
 80  0
         if (value != null) {
 81  0
             for (V val : value) {
 82  0
                 val.setDeleteCallback(new Callback<V>() {
 83  
                     @Override
 84  
                     public void exec(V itemDeleted) {
 85  0
                         value.remove(itemDeleted);
 86  0
                         redraw();
 87  0
                         callHandlers();
 88  0
                     }
 89  
                 });
 90  0
                 val.setEditable(isEditable());
 91  0
                 List<Widget> displayWidgets = val.generateDisplayWidgets();
 92  0
                 if (displayWidgets != null) {
 93  0
                     int column = 0;
 94  0
                     for (Widget displayWidget : displayWidgets) {
 95  0
                         itemTable.setWidget(row, column, displayWidget);
 96  0
                         column++;
 97  
                     }
 98  
                 }
 99  0
                 itemsPanel.add(itemTable);
 100  0
                 row++;
 101  0
             }
 102  0
             mainPanel.setWidget(itemsPanel);
 103  
         }
 104  0
     }
 105  
     
 106  
     @Override
 107  
     public HandlerRegistration addValueChangeHandler(ValueChangeHandler<List<V>> handler) {
 108  0
         valueChangeHandlers.add(handler);
 109  0
         return null;
 110  
     }
 111  
     
 112  
     public class MyGwtEvent extends ValueChangeEvent<List<V>> {
 113  0
         public MyGwtEvent(List<V> value) {
 114  0
             super(value);
 115  0
         }
 116  
     }
 117  
 
 118  
     public boolean isEditable() {
 119  0
         return editable;
 120  
     }
 121  
 
 122  
     public void setEditable(boolean editable) {
 123  0
         this.editable = editable;
 124  0
     }
 125  
     
 126  
 }