blob: de902fbcb2ee67518cc7011a9932579cf43caeff [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Soyatec - initial API and implementation
*******************************************************************************/
package org.eclipse.xwt.jface;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.xwt.XWTException;
public class CellEditorHelper {
protected TableViewer tableViewer;
protected int index;
public CellEditorHelper(TableViewer parent, int index) {
this.index = index;
this.tableViewer = parent;
}
public Class<?> getTargetType() {
ISelection selection = this.tableViewer.getSelection();
if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object element = structuredSelection.getFirstElement();
Object property = this.tableViewer.getColumnProperties()[index];
String propertyName = property.toString();
try {
BeanInfo beanInfo = java.beans.Introspector.getBeanInfo(element.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
if (propertyDescriptor.getName().equalsIgnoreCase(propertyName)) {
return propertyDescriptor.getPropertyType();
}
}
} catch (IntrospectionException e) {
throw new XWTException(e);
}
}
return null;
}
}