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){ this.CoreSystem = CoreSystem; this.tools = {}; this.loadTools(); this.activeTool = null; this.__onUpdate = null; //this.selectTool('Select') } 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){ let tool = this.tools[key]; this.activeTool = tool; this.update() } loadTools(){ 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](); }) } 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:{ padding: 5 }, activeTool:{ backgroundColor:'green', padding: 5 } })