package org.orienteer.core.component.widget; import com.google.inject.Inject; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.record.impl.ODocument; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.orienteer.core.behavior.UpdateOnActionPerformedEventBehavior; import org.orienteer.core.component.FAIcon; import org.orienteer.core.component.FAIconType; import org.orienteer.core.component.property.DisplayMode; import org.orienteer.core.component.table.OrienteerDataTable; import org.orienteer.core.component.table.component.GenericTablePanel; import org.orienteer.core.service.IOClassIntrospector; import org.orienteer.core.tasks.ITaskSession; import org.orienteer.core.tasks.OTask; import org.orienteer.core.tasks.OTaskSessionRuntime; import org.orienteer.core.widget.AbstractWidget; import org.orienteer.core.widget.Widget; import ru.ydn.wicket.wicketorientdb.filter.AbstractFilteredDataProvider; import ru.ydn.wicket.wicketorientdb.model.OQueryDataProvider; /** * Widget for {@link OTask} * */ @Widget(domain="document",selector=OTask.TASK_CLASS, id=OTaskWidget.WIDGET_TYPE_ID, order=20, autoEnable=true) public class OTaskWidget extends AbstractWidget<ODocument>{ public static final String WIDGET_TYPE_ID = "task"; private static final long serialVersionUID = 1L; @Inject private IOClassIntrospector oClassIntrospector; public OTaskWidget(String id, IModel<ODocument> model, final IModel<ODocument> widgetDocumentModel) { super(id, model, widgetDocumentModel); IModel<DisplayMode> modeModel = DisplayMode.VIEW.asModel(); OClass taskSessionClass = getModelObject().getDatabase().getMetadata().getSchema().getClass(OTaskSessionRuntime.TASK_SESSION_CLASS); AbstractFilteredDataProvider<ODocument> provider = new OQueryDataProvider<ODocument>("select from "+ITaskSession.TASK_SESSION_CLASS+" where "+ ITaskSession.Field.TASK_LINK.fieldName()+"="+getModelObject().getIdentity()); oClassIntrospector.defineDefaultSorting(provider, taskSessionClass); GenericTablePanel<ODocument> tablePanel = new GenericTablePanel<>("tablePanel", oClassIntrospector.getColumnsFor(taskSessionClass, true, modeModel), provider, 20); OrienteerDataTable<ODocument, String> table = tablePanel.getDataTable(); add(tablePanel); add(UpdateOnActionPerformedEventBehavior.INSTANCE_ALL_CONTINUE); } @Override protected FAIcon newIcon(String id) { return new FAIcon(id, FAIconType.bars); } @Override protected IModel<String> getDefaultTitleModel() { return new ResourceModel("task.title"); } @Override protected String getWidgetStyleClass() { return "strict"; } }