export default class Tool {
    constructor(name, icon, key) {
        this.name = name;
        this.icon = icon;
        this.key = key;
        this.warnings = false;
    }

    getName() {
        return this.name;
    }

    getKey() {
        return this.key;
    }

    getIcon() {
        return this.icon;
    }

    onToolActivate() {
        if (this.warnings) {
            console.warn('Method "onToolActivate" not implemented.');
        }
    }

    onToolDeactivate(nextTool) {
        if (this.warnings) {
            console.warn('Method "onToolDeactivate" not implemented.');
        }
    }

    onNodeClick(node) {
        if (this.warnings) {
            console.warn('Method "onNodeClick" not implemented.');
        }
    }

    onLinkClick(link) {
        if (this.warnings) {
            console.warn('Method "onLinkClick" not implemented.');
        }
    }

    onKeyDown(key) {
        if (this.warnings) {
            console.warn('Method "onKeyDown" not implemented.');
        }
    }

    onKeyUp(key) {
        if (this.warnings) {
            console.warn('Method "onKeyUp" not implemented.');
        }
    }

    nodeCanvasObject(node, ctx, globalScale) {
        if (this.warnings) {
            console.warn('Method "nodeCanvasObject" not implemented.');
        }
    }

    nodeCanvasObjectMode(node) {
        if (this.warnings) {
            console.warn('Method "nodeCanvasObjectMode" not implemented.');
        }
    }

    nodePointerAreaPaint(node, color, ctx) {
        if (this.warnings) {
            console.warn('Method "nodePointerAreaPaint" not implemented.');
        }
    }

    linkWidth(link) {
        if (this.warnings) {
            console.warn('Method "linkWidth" not implemented.');
        }
    }

    linkDirectionalParticles() {
        if (this.warnings) {
            console.warn('Method "linkDirectionalParticles" not implemented.');
        }
    }

    linkDirectionalParticleWidth(link) {
        if (this.warnings) {
            console.warn(
                'Method "linkDirectionalParticleWidth" not implemented.'
            );
        }
    }

    linkColor(link) {
        if (this.warnings) {
            console.warn(
                'Method "linkColor" not implemented.'
            );
        }
    }

    nodeColor(node) {
        if (this.warnings) {
            console.warn(
                'Method "nodeColor" not implemented.'
            );
        }
    }

    onBackgroundClick(event, positions) {
        if (this.warnings) {
            console.warn('Method "onBackgroundClick" not implemented.');
        }
    }
}