package org.orienteer.core.method;
import java.io.Serializable;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.orienteer.core.component.BootstrapType;
import org.orienteer.core.component.IBootstrapAware;
import org.orienteer.core.widget.AbstractWidget;
/**
*
* Panel for methods display.
*
*/
public class MethodsView implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private List<IMethod> methods;
private MethodPlace place;
private RepeatingView externalList;
private IModel<?> displayObjectModel;
private Object table;
private BootstrapType bootstrapType;
private boolean bootstrapTypeOverriden = false;
public MethodsView(RepeatingView externalList, IModel<?> displayObjectModel,MethodPlace place,Object table) {
this.externalList = externalList;
this.displayObjectModel = displayObjectModel;
this.place = place;
this.table = table;
}
public void loadMethods(){
AbstractWidget<?> widget = externalList.findParent(AbstractWidget.class);
methods = MethodManager.get().getMethods(new MethodBaseData(displayObjectModel,widget,place,table));
for ( IMethod method : methods) {
Component component = method.getDisplayComponent();
if (component !=null){
if (component instanceof IBootstrapAware && bootstrapTypeOverriden){
((IBootstrapAware)component).setBootstrapType(bootstrapType);
}
externalList.add(component);
}
}
}
/**
* Use it only before loadMethods
* @param type
*/
public MethodsView overrideBootstrapType(BootstrapType bootstrapType){
this.bootstrapType = bootstrapType;
bootstrapTypeOverriden = true;
return this;
}
public List<IMethod> getMethods() {
return methods;
}
}