package org.orienteer.core.widget;
import org.apache.wicket.model.IModel;
import org.orienteer.core.component.FAIcon;
import org.orienteer.core.component.command.EditODocumentCommand;
import org.orienteer.core.component.command.SaveODocumentCommand;
import org.orienteer.core.component.meta.IDisplayModeAware;
import org.orienteer.core.component.property.DisplayMode;
import com.orientechnologies.orient.core.record.impl.ODocument;
/**
* Abstract widget class for widgets wich should be aware of page {@link DisplayMode}
*
* @param <T> the type of main data object linked to this widget
*/
public abstract class AbstractModeAwareWidget<T> extends AbstractWidget<T> implements IDisplayModeAware {
private IModel<DisplayMode> displayModeModel = DisplayMode.VIEW.asModel();
public AbstractModeAwareWidget(String id, IModel<T> model,
IModel<ODocument> widgetDocumentModel) {
super(id, model, widgetDocumentModel);
}
@Override
protected void onInitialize() {
super.onInitialize();
IDisplayModeAware parent = findParent(DashboardPanel.class).findParent(IDisplayModeAware.class);
if(parent!=null) {
displayModeModel.setObject(parent.getModeObject());
}
}
@Override
public IModel<DisplayMode> getModeModel() {
return displayModeModel;
}
@Override
public DisplayMode getModeObject() {
return displayModeModel.getObject();
}
public AbstractModeAwareWidget<T> setModeObject(DisplayMode mode)
{
displayModeModel.setObject(mode);
return this;
}
}