import Tool from "./tool";
import { CONTEXT } from "../state";
import { CollectMenu, COLLECTION_KEY } from "./menus/collectmenu";
import CollectIcon from "../../images/tools/collect.png";
import { Editor } from "../components/editor";

export default class CollectTool extends Tool {
    constructor(key) {
        super("Collect", CollectIcon, key, new CollectMenu());
    }

    onNodeClick(node) {
        if (Editor.globalState.itemsContext !== CONTEXT.node) {
            Editor.globalState.clearSelectedItems();
            Editor.globalState.itemsContext = CONTEXT.node;
        }

        if (Editor.globalState.selectedItems.has(node)) {
            Editor.globalState.removeSelectedItem(node);
        } else {
            Editor.globalState.addSelectedItem(node);
        }

        this.menu.value(COLLECTION_KEY, Editor.globalState.selectedItems);
    }

    onLinkClick(link) {
        if (Editor.globalState.itemsContext !== CONTEXT.link) {
            Editor.globalState.clearSelectedItems();
            Editor.globalState.itemsContext = CONTEXT.link;
        }

        if (Editor.globalState.selectedItems.has(link)) {
            Editor.globalState.removeSelectedItem(link);
        } else {
            Editor.globalState.addSelectedItem(link);
        }

        this.menu.value(COLLECTION_KEY, Editor.globalState.selectedItems);
    }

    onMenuChange(key, value) {
        if (key === COLLECTION_KEY && value === undefined) {
            Editor.globalState.clearSelectedItems();
            this.menu.value(COLLECTION_KEY, []);
        }
    }
}