package com.psddev.cms.tool; import com.psddev.cms.db.ToolUi; import com.psddev.dari.db.ObjectType; import com.psddev.dari.db.Record; import com.psddev.dari.db.Recordable; import com.psddev.dari.db.State; import com.psddev.dari.util.StringUtils; import java.io.IOException; @Recordable.Embedded public abstract class ContentEditWidget extends Record { private ContentEditWidgetPlacement placementOverride; public ContentEditWidgetPlacement getPlacementOverride() { return placementOverride; } public void setPlacementOverride(ContentEditWidgetPlacement placementOverride) { this.placementOverride = placementOverride; } public boolean shouldDisplay(ToolPageContext page, Object content) { ObjectType type = State.getInstance(content).getType(); return type != null && type.as(ToolUi.class).isPublishable(); } public abstract ContentEditWidgetPlacement getPlacement(ToolPageContext page, Object content); public double getPosition(ToolPageContext page, Object content, ContentEditWidgetPlacement placement) { return 0.0; } public abstract String getHeading(ToolPageContext page, Object content); public abstract void display(ToolPageContext page, Object content, ContentEditWidgetPlacement placement) throws IOException; @Override public String getLabel() { return StringUtils.toLabel(getClass().getSimpleName()); } }