Coverage Report - org.seasar.eclipse.common.viewer.TableProvider
 
Classes in this File Line Coverage Branch Coverage Complexity
TableProvider
0%
0/33
0%
0/16
0
 
 1  
 /*
 2  
  * Copyright 2004-2008 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.eclipse.common.viewer;
 17  
 
 18  
 import java.util.ArrayList;
 19  
 import java.util.List;
 20  
 
 21  
 import org.eclipse.jface.viewers.CellEditor;
 22  
 import org.eclipse.jface.viewers.ICellModifier;
 23  
 import org.eclipse.jface.viewers.ITableLabelProvider;
 24  
 import org.eclipse.jface.viewers.LabelProvider;
 25  
 import org.eclipse.jface.viewers.TableViewer;
 26  
 import org.eclipse.swt.graphics.Image;
 27  
 import org.eclipse.swt.widgets.Item;
 28  
 import org.seasar.framework.util.ArrayMap;
 29  
 
 30  
 /**
 31  
  * @author taichi
 32  
  * @see org.seasar.eclipse.common.viewer.ColumnDescriptor
 33  
  */
 34  
 public class TableProvider extends LabelProvider implements
 35  
         ITableLabelProvider, ICellModifier {
 36  
 
 37  
     private ArrayMap columnDescs;
 38  
 
 39  
     private TableViewer viewer;
 40  
 
 41  0
     public TableProvider(TableViewer viewer, ColumnDescriptor[] cds) {
 42  0
         this.viewer = viewer;
 43  0
         this.columnDescs = new ArrayMap(cds.length);
 44  0
         List<String> keys = new ArrayList<String>(cds.length);
 45  0
         List<CellEditor> editors = new ArrayList<CellEditor>(cds.length);
 46  0
         for (ColumnDescriptor cd : cds) {
 47  0
             String name = cd.getName();
 48  0
             if (columnDescs.containsKey(name)) {
 49  0
                 name = name + "@" + System.identityHashCode(cd);
 50  
             }
 51  0
             this.columnDescs.put(name, cd);
 52  0
             keys.add(name);
 53  0
             editors.add(cd.getCellEditor());
 54  
         }
 55  0
         this.viewer.setColumnProperties(keys.toArray(new String[keys
 56  
                 .size()]));
 57  0
         this.viewer.setCellEditors(editors
 58  
                 .toArray(new CellEditor[editors.size()]));
 59  0
         this.viewer.setCellModifier(this);
 60  0
     }
 61  
 
 62  
     protected ColumnDescriptor getDescriptor(String name) {
 63  0
         return (ColumnDescriptor) this.columnDescs.get(name);
 64  
     }
 65  
 
 66  
     protected ColumnDescriptor getDescriptor(int index) {
 67  0
         return (ColumnDescriptor) this.columnDescs.get(index);
 68  
     }
 69  
 
 70  
     /*
 71  
      * (non-Javadoc)
 72  
      * 
 73  
      * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
 74  
      *      int)
 75  
      */
 76  
     public Image getColumnImage(Object element, int columnIndex) {
 77  0
         ColumnDescriptor cd = getDescriptor(columnIndex);
 78  0
         return cd != null ? cd.getImage(element) : null;
 79  
     }
 80  
 
 81  
     /*
 82  
      * (non-Javadoc)
 83  
      * 
 84  
      * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
 85  
      *      int)
 86  
      */
 87  
     public String getColumnText(Object element, int columnIndex) {
 88  0
         ColumnDescriptor cd = getDescriptor(columnIndex);
 89  0
         return cd != null ? cd.getText(element) : "";
 90  
     }
 91  
 
 92  
     /*
 93  
      * (non-Javadoc)
 94  
      * 
 95  
      * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object,
 96  
      *      java.lang.String)
 97  
      */
 98  
     public boolean canModify(Object element, String property) {
 99  0
         ColumnDescriptor cd = getDescriptor(property);
 100  0
         return cd != null ? cd.canModify() : false;
 101  
     }
 102  
 
 103  
     /*
 104  
      * (non-Javadoc)
 105  
      * 
 106  
      * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object,
 107  
      *      java.lang.String)
 108  
      */
 109  
     public Object getValue(Object element, String property) {
 110  0
         ColumnDescriptor cd = getDescriptor(property);
 111  0
         return cd != null ? cd.getValue(element) : null;
 112  
     }
 113  
 
 114  
     /*
 115  
      * (non-Javadoc)
 116  
      * 
 117  
      * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object,
 118  
      *      java.lang.String, java.lang.Object)
 119  
      */
 120  
     public void modify(Object element, String property, Object value) {
 121  0
         if (element instanceof Item) {
 122  0
             element = ((Item) element).getData();
 123  
         }
 124  0
         ColumnDescriptor cd = getDescriptor(property);
 125  0
         if (cd != null) {
 126  0
             cd.setValue(element, value);
 127  0
             this.viewer.update(element, new String[] { property });
 128  
         }
 129  0
     }
 130  
 }