package org.orienteer.devutils;
import org.apache.wicket.Component;
import org.apache.wicket.application.IComponentInitializationListener;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.devutils.debugbar.DebugBar;
import org.apache.wicket.devutils.inspector.LiveSessionsPage;
import org.apache.wicket.markup.ComponentTag;
import org.orienteer.core.CustomAttribute;
import org.orienteer.core.OrienteerWebApplication;
import org.orienteer.core.module.AbstractOrienteerModule;
import org.orienteer.core.module.IOrienteerModule;
import org.orienteer.core.util.OSchemaHelper;
import org.orienteer.core.web.BasePage;
import org.orienteer.devutils.web.ToolsPage;
import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
import com.orientechnologies.orient.core.record.impl.ODocument;
import ru.ydn.wicket.wicketconsole.devutils.WicketConsolePage;
import com.orientechnologies.orient.core.metadata.schema.OType;
/**
* {@link IOrienteerModule} for 'orienteer-devutils' module
*/
public class Module extends AbstractOrienteerModule implements IComponentInitializationListener{
protected Module() {
super("devutils", 1);
}
@Override
public ODocument onInstall(OrienteerWebApplication app, ODatabaseDocument db) {
super.onInstall(app, db);
OSchemaHelper helper = OSchemaHelper.bind(db);
//Install data model
ODocument moduleDoc = new ODocument(OMODULE_CLASS);
moduleDoc.field(OMODULE_ACTIVATE, false);
return moduleDoc;
}
@Override
public void onInitialize(OrienteerWebApplication app, ODatabaseDocument db) {
super.onInitialize(app, db);
app.mountPages("org.orienteer.devutils.web");
WicketConsolePage.setWicketConsolePageImplementation(ToolsPage.class);
app.mountPackage("/devutils", LiveSessionsPage.class);
app.mountPage("/wicket-console", WicketConsolePage.class);
app.registerWidgets("org.orienteer.devutils.component.widget");
app.getComponentInitializationListeners().add(this);
}
@Override
public void onDestroy(OrienteerWebApplication app, ODatabaseDocument db) {
super.onDestroy(app, db);
app.getComponentInitializationListeners().remove(this);
WicketConsolePage.setWicketConsolePageImplementation(null);
app.unmountPages("org.orienteer.devutils.web");
app.unmount("/devutils/"+LiveSessionsPage.class.getSimpleName());
app.unmount("/wicket-console");
app.unregisterWidgets("org.orienteer.devutils.component.widget");
}
@Override
public void onInitialize(Component component) {
if(component instanceof BasePage) {
BasePage<?> page = (BasePage<?>)component;
page.addUiPlugin(new DebugBar(page.nextUiPluginComponentId())
.add(new AttributeAppender("style", "position: fixed; left: 0; bottom: 0; top: inherit;", "; ")));
}
}
}