class CollectTool extends Tool {
    constructor(key) {
        super("Collect", "collect", key);
    }

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

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

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

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

    onKeyUp(key) {
        if (key.keyCode === 17) {
            state.setTool(state.previousTool);
        }
    }
}