import Tool from './Tool'; import {Tools} from '../Tools/index' import React from 'react'; import {StyleSheet,View , Text} from 'react-native'; import Mouse from './mouse'; function log(args){ console.log(args) } export default class ToolBox { constructor(CoreSystem, defaultTool = 'Select'){ this.CoreSystem = CoreSystem; this.tools = {}; this.activeTool = null; this.loadTools(defaultTool); this.__onUpdate = null; } on(e) { return this.activeTool.on(e) } editNode(View){ return this.activeTool.editViewNode(this.CoreSystem,View); } onUpdate(fn){ this.__onUpdate = fn; } update(){ this.__onUpdate && this.__onUpdate(); } selectTool(key){ this.activeTool && (this.activeTool.active = false); let tool = this.tools[key]; this.activeTool = tool; tool.active = true; this.update() } loadTools(defaultTool){ log("Loading Tools") Object.keys(Tools).map((key) => { if( Tools[key].prototype instanceof Tool === false ){ throw new Error("This is not a Tool") } if(this.tools[key]){ log("Tool already Exists: ",key); } this.tools[key] = new Tools[key](); }) if(defaultTool && this.tools[defaultTool]) { this.activeTool = this.tools[defaultTool]; } } render(){ let tools = Object.keys(this.tools).map((key) => { let toolStyle = styles.tool; if(this.activeTool !== null){ if(this.activeTool.constructor.name === key){ toolStyle = styles.activeTool; } } return( this.selectTool(key) } style={toolStyle} >{this.tools[key].render()}) }); return tools; } } /** Must be remove from here**/ const styles = StyleSheet.create({ tool:{ }, activeTool:{ } })