/*******************************************************************************
* 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.papyrus.xwt.javabean.metadata;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.papyrus.xwt.IXWTLoader;
import org.eclipse.papyrus.xwt.metadata.IMetaclass;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.TableColumn;
public class TableViewerColumnMetaClass extends Metaclass {
public TableViewerColumnMetaClass(IMetaclass superClass, IXWTLoader xwtLoader) {
super(TableViewerColumn.class, superClass, xwtLoader);
}
/**
* @see org.eclipse.papyrus.xwt.javabean.metadata.Metaclass#newInstance(java.lang. Object[])
*/
@Override
public Object newInstance(Object[] parameters) {
Object object = doNewInstance(parameters);
if(object != null) {
initialize(object);
}
return object;
}
@Override
public Object doNewInstance(Object[] parameters) {
try {
if(parameters.length == 1 && parameters[0] instanceof TableViewer) {
Constructor<?> constructor = getType().getConstructor(TableViewer.class, int.class);
return constructor.newInstance(parameters[0], SWT.NONE);
} else if(parameters.length == 2) {
if(parameters[0] instanceof TableViewer && parameters[1] instanceof Integer) {
Constructor<?> constructor = getType().getConstructor(TableViewer.class, int.class);
return constructor.newInstance(parameters);
} else if(parameters[0] instanceof TableViewer && parameters[1] instanceof TableColumn) {
Constructor<?> constructor = getType().getConstructor(TableViewer.class, TableColumn.class);
return constructor.newInstance(parameters);
}
} else if(parameters.length == 3 && parameters[0] instanceof TableViewer && parameters[1] instanceof Integer && parameters[2] instanceof Integer) {
Constructor<?> constructor = getType().getConstructor(TableViewer.class, int.class, int.class);
return constructor.newInstance(parameters[0], ((Integer)parameters[1]).intValue(), ((Integer)parameters[2]).intValue());
}
} catch (SecurityException e) {
} catch (IllegalArgumentException e) {
} catch (NoSuchMethodException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
return super.newInstance(parameters);
}
}