package com.dlsc.flexgantt.showcase.demo.editing;

import com.dlsc.flexgantt.command.ICommand;
import com.dlsc.flexgantt.model.treetable.DefaultMutableTreeTableNode;
import com.dlsc.flexgantt.model.treetable.DefaultTreeTableModel;
import com.dlsc.flexgantt.model.treetable.ITreeTableModel;
import com.dlsc.flexgantt.policy.treetable.DefaultNodeEditPolicy;

public class EditingDemoNodeEditPolicy extends DefaultNodeEditPolicy {

    @Override
    public ICommand getCreateNodeCommand(Object node, ITreeTableModel model,
            Object key, Object[] values) {
        assertClass("getCreateNodeCommand", "node", //$NON-NLS-1$ //$NON-NLS-2$
                DefaultMutableTreeTableNode.class, node);
        assertClass("getCreateNodeCommand", "model", //$NON-NLS-1$ //$NON-NLS-2$
                DefaultTreeTableModel.class, model);
        return new EditingDemoCreateNodeCommand(
                (DefaultMutableTreeTableNode) node,
                (DefaultTreeTableModel) model, key, values);
    }

    @Override
    public ICommand getInsertNodeCommand(Object node, int childIndex,
            ITreeTableModel model) {
        assertClass("getInsertNodeCommand", "node", //$NON-NLS-1$ //$NON-NLS-2$
                DefaultMutableTreeTableNode.class, node);
        assertClass("getInsertNodeCommand", "model", //$NON-NLS-1$ //$NON-NLS-2$
                DefaultTreeTableModel.class, model);
        return new EditingDemoInsertNodeCommand(
                (DefaultMutableTreeTableNode) node, childIndex,
                (DefaultTreeTableModel) model);
    }
}
