package com.project.website.canvas.client.canvastools.base;
import java.util.ArrayList;
import com.project.website.canvas.client.ToolFactories;
import com.project.website.canvas.client.canvastools.CursorToolboxItem;
import com.project.website.canvas.client.canvastools.MoveToolboxItem;
import com.project.website.canvas.client.canvastools.base.interfaces.CanvasTool;
import com.project.website.canvas.client.canvastools.base.interfaces.CanvasToolFactory;
import com.project.website.canvas.client.canvastools.base.interfaces.ToolboxItem;
import com.project.website.canvas.client.canvastools.image.ImageToolboxItem;
import com.project.website.canvas.client.canvastools.map.MapToolboxItem;
import com.project.website.canvas.client.canvastools.sketch.SketchToolboxItem;
import com.project.website.canvas.client.canvastools.textedit.TextEditToolboxItem;
import com.project.website.canvas.client.canvastools.video.VideoToolboxItem;
import com.project.website.canvas.shared.data.ElementData;
public class BuiltinTools
{
public static final CursorToolboxItem cursorTool = new CursorToolboxItem();
public static final MoveToolboxItem moveTool = new MoveToolboxItem();
private static final ArrayList<ToolboxItem> tools = new ArrayList<ToolboxItem>();
static boolean inited = false;
public static void init()
{
if (inited) {
return;
}
inited = true;
registerBuiltinToolboxItems();
}
private static void registerBuiltinToolboxItems()
{
BuiltinTools.tools.add(cursorTool);
BuiltinTools.tools.add(moveTool);
BuiltinTools.addToolboxItemWithFactory(new TextEditToolboxItem());
BuiltinTools.addToolboxItemWithFactory(new ImageToolboxItem());
BuiltinTools.addToolboxItemWithFactory(new VideoToolboxItem());
BuiltinTools.addToolboxItemWithFactory(new MapToolboxItem());
BuiltinTools.addToolboxItemWithFactory(new SketchToolboxItem());
// TODO: Add these as an option in some "labs" or "advanced settings" box
// BuiltinTools.addToolboxItemWithFactory(new SiteCropToolboxItem());
// BuiltinTools.addToolboxItemWithFactory(new TaskListToolboxItem());
}
public static Iterable<ToolboxItem> getTools()
{
init();
return tools;
}
private static void addToolboxItemWithFactory(ToolboxItem toolboxItem)
{
BuiltinTools.tools.add(toolboxItem);
CanvasToolFactory<? extends CanvasTool<? extends ElementData>> factory = toolboxItem.getToolFactory();
ToolFactories.INSTANCE.put(factory.getFactoryId(), factory);
}
}