package org.orienteer.core.component.widget.index;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.orienteer.core.component.FAIcon;
import org.orienteer.core.component.FAIconType;
import org.orienteer.core.component.command.EditSchemaCommand;
import org.orienteer.core.component.command.RebuildOIndexCommand;
import org.orienteer.core.component.command.SaveSchemaCommand;
import org.orienteer.core.component.meta.OIndexMetaPanel;
import org.orienteer.core.component.structuretable.OrienteerStructureTable;
import org.orienteer.core.web.schema.OIndexPage;
import org.orienteer.core.widget.AbstractModeAwareWidget;
import org.orienteer.core.widget.Widget;
import ru.ydn.wicket.wicketorientdb.proto.OIndexPrototyper;
import com.orientechnologies.orient.core.index.OIndex;
import com.orientechnologies.orient.core.metadata.schema.OProperty;
import com.orientechnologies.orient.core.record.impl.ODocument;
/**
* Widget to show and modify {@link OIndex} configuration
*/
@Widget(id="index-configuration", domain="index", tab="configuration", autoEnable=true)
public class OIndexConfigurationWidget extends AbstractModeAwareWidget<OIndex<?>> {
private OrienteerStructureTable<OIndex<?>, String> structureTable;
public OIndexConfigurationWidget(String id, IModel<OIndex<?>> model,
IModel<ODocument> widgetDocumentModel) {
super(id, model, widgetDocumentModel);
Form<OIndex<?>> form = new Form<OIndex<?>>("form");
structureTable = new OrienteerStructureTable<OIndex<?>, String>("attributes", getModel(), OIndexPrototyper.OINDEX_ATTRS) {
@Override
protected Component getValueComponent(String id, final IModel<String> rowModel) {
return new OIndexMetaPanel<Object>(id, getModeModel(), OIndexConfigurationWidget.this.getModel(), rowModel);
}
};
form.add(structureTable);
add(form);
}
@Override
protected void onInitialize() {
super.onInitialize();
structureTable.addCommand(new EditSchemaCommand<OIndex<?>>(structureTable, getModeModel()));
structureTable.addCommand(new SaveSchemaCommand<OIndex<?>>(structureTable, getModeModel(), getModel()));
structureTable.addCommand(new RebuildOIndexCommand(structureTable));
}
@Override
protected FAIcon newIcon(String id) {
return new FAIcon(id, FAIconType.bars);
}
@Override
protected IModel<String> getDefaultTitleModel() {
return new ResourceModel("index.configuration");
}
@Override
protected String getWidgetStyleClass() {
return "strict";
}
}