Ext.namespace('Zarafa.common.rules.dialogs');

/**
 * @class Zarafa.common.rules.dialogs.DeleteLink
 * @extends Zarafa.common.rules.dialogs.FolderSelectionLink
 * @xtype zarafa.deletelink
 *
 * Extension of the {@link Zarafa.common.rules.dialogs.FolderSelectionLink Folder Selection Link}
 * expecially for the {@link Zarafa.common.rules.data.ActionFlags#DELETE DELETE ActionFlag}.
 *
 * This will not show anything to the user, but during {@link #setAction} this will force
 * the {@link #actionFlag} to be {@link Zarafa.common.rules.data.ActionFlags#MOVE MOVE}
 * and the {@link #folder} to be set to the 'Deleted Items' folder.
 */
Zarafa.common.rules.dialogs.DeleteLink = Ext.extend(Zarafa.common.rules.dialogs.FolderSelectionLink, {

	/**
	 * Called when user clicks on a {@link Zarafa.common.rules.dialogs.FolderSelectionLink}
	 * It opens hierarchy folder selection dialog
	 * @param {Ext.DataView} dataView Reference to this object
	 * @param {Number} index The index of the target node
	 * @param {HTMLElement} node The target node
	 * @param {Ext.EventObject} evt The mouse event
	 * @protected
	 */
	onClick : function(dataView, index, node, evt)
	{
		// Don't perform any action
	},

	/**
	 * Apply an action onto the DataView, this will parse the action and show
	 * the contents in a user-friendly way to the user.
	 * @param {Zarafa.common.rules.data.ActionFlags} actionFlag The action type
	 * which identifies the exact type of the action.
	 * @param {Object} action The action to apply
	 */
	setAction : function(actionFlag, action)
	{
		// This component only handles the 'DELETE' action,
		// that equals the 'MOVE' action in combination
		// with the 'Deleted Items' folder.
		this.actionFlag = Zarafa.common.rules.data.ActionFlags.MOVE;
		this.action = action;
		this.isModified = !Ext.isDefined(action);

		var hierarchyStore = container.getHierarchyStore();
		var index = hierarchyStore.findExact('store_entryid', this.storeEntryId);

		this.folder = hierarchyStore.getAt(index).getDefaultFolder('wastebasket');
	},

	/**
	 * Update the contents of this dataview, this will apply the {@link #tpl} for
	 * the {@link #folder}.
	 * @param {Zarafa.hierarchy.data.MAPIFolderRecord} folder The folder to show
	 */
	update : function(folder)
	{
		// Don't show anything
	}
});

Ext.reg('zarafa.deletelink', Zarafa.common.rules.dialogs.DeleteLink);