<%--
 * Copyright by Intland Software
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Intland Software. ("Confidential Information"). You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Intland.
 *
 * $Revision$ $Date$
--%>

<%@ taglib uri="struts-html" prefix="html" %>


<%@ taglib uri="jstl-c" prefix="c" %>
<%@ taglib uri="jstl-fmt" prefix="fmt" %>

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>

<%@ taglib uri="taglib" prefix="tag" %>
<%@ taglib uri="uitaglib" prefix="ui" %>
<%@ taglib uri="callTag" prefix="ct" %>

<%@page import="com.intland.codebeamer.ui.view.actionmenubuilder.ArtifactListContextActionMenuBuilder"%>

<%-- set the default icons on the ajaxDocumentLockController from the java class --%>
<script type="text/javascript">
	AjaxDocumentLockController.prototype.ICON_URL_LOCKED = '<%=ArtifactListContextActionMenuBuilder.ICON_URL_LOCKED%>';
	AjaxDocumentLockController.prototype.ICON_URL_NOT_LOCKED = '<%=ArtifactListContextActionMenuBuilder.ICON_URL_NOT_LOCKED%>';
</script>

<html:errors />

<c:set var="searchMode" value="${!empty listDocumentForm.searchPattern}" />

<html:form action="/proj/doc/documentProperties" method="GET" styleId="documentPropertiesForm">

<html:hidden property="action" />

<c:choose>
	<c:when test="${!empty listDocumentForm.doc_id}">
		<html:hidden property="doc_id" />
	</c:when>

	<c:when test="${!empty listDocumentForm.proj_id}">
		<html:hidden property="proj_id" />
	</c:when>
</c:choose>

<c:set var="currentDirectory" value="${listDocumentForm.currentDirectory}" />
<%-- wiki description of the current dir --%>
<c:if test="${!empty currentDirectory.description}">
	<div class="descriptionBox">
		<tag:transformText value="${currentDirectory.description}" format="${currentDirectory.descriptionFormat}" />
	</div>
</c:if>

<div class="actionBar">
	<ui:rightAlign>
		<jsp:attribute name="filler">
			<ui:actionMenu title="more" builder="artifactActionMenuBuilder" subject="${listDocumentForm}" keys="Properties, trash, Delete..." />
		</jsp:attribute>
		<jsp:attribute name="rightAligned">
		</jsp:attribute>
		<jsp:body>
			<ui:actionGenerator builder="artifactActionMenuBuilder" actionListName="artifactActions" subject="${listDocumentForm}">
				<ui:actionLink keys="newFile, newDirectory, newWikiNote" actions="${artifactActions}" />

				<script type="text/javascript">
					// submit the form if at least one checkbox of 'selectedArtifactIds' is selected
					// @param for The form to submit
					// @param params The parameters to add to the submit
					function submitOnComboSelection(form, params) {
						var cansubmit = submitIfSelected(form, 'selectedArtifactIds');
						if (cansubmit) {
							// Important: this is NOT the action-url of the form, but the hidden action field!
							form.action.value = params;
							form.submit();
						}
					}

					// callback when the selection changes
					function onSelectionChange(selectbox) {
						var action = selectbox.options[selectbox.selectedIndex].value;
						var form = selectbox.form;
						var success = false;

						switch (action) {
							case "cut":
								success = submitOnComboSelection(form, 'cut');
								break;
							case "copy":
								success =  submitOnComboSelection(form, 'copy');
								break;
							case "paste":
								success = disableButtonsAndSubmit(form, 'paste');
								break;
							case "delete":
								success = confirmDelete(form);
								break;
							case "permissions":
								success = submitOnComboSelection(form, 'permissions');
								break;
							case "notification":
								success = submitOnComboSelection(form, 'notification');
								break;
						}

						if (!success) {
							// can not submit because no checkbox was checked,
							// reset the selectbox to the 1st selection so "More Actions..." will be selected
							selectbox.selectedIndex = 0;
						}
					}
				</script>
				<ui:actionComboBox keys="cut, copy, paste, delete, permissions, notification" actions="${artifactActions}"
					onchange="javascript:onSelectionChange(this);" id="actionCombo"
				/>
			</ui:actionGenerator>
		</jsp:body>
	</ui:rightAlign>
</div>

<%-- include the JS and hidden field for deleting one/multiple documents --%>
<jsp:include page="/docs/includes/deleteArtifacts.jsp" >
	<jsp:param name="confirmMessageKey" value="docs.delete.confirm" />
	<jsp:param name="confirmOneMessageKey" value="docs.deleteOneDoc.confirm" />
	<jsp:param name="confirmOneDirMessageKey" value="docs.deleteOneDir.confirm" />
</jsp:include>

<c:set var="checkAll">
	<INPUT TYPE="CHECKBOX" TITLE="Select/Clear All"
		NAME="SELECT_ALL" VALUE="on"
		ONCLICK="setAllStatesFrom(this, 'selectedArtifactIds')">
</c:set>

<c:set var="export" value="false" />

<ui:displaytagPaging defaultPageSize="${pagesize}" items="${listDocumentForm.content}" excludedParams="page"/>

<c:set var="docTable">
	<display:table requestURI="/proj/doc.do" id="fileAttributes" name="${listDocumentForm.content}" cellpadding="0"
		export="${export}" decorator="com.intland.codebeamer.ui.view.table.DocumentListDecorator" sort="external" defaultsort="4"
		excludedParams="emptyTrash trashMode" >

		<display:setProperty name="paging.banner.some_items_found" value="${allItems}" />
		<display:setProperty name="paging.banner.all_items_found"><div class="pagebanner">{0} {1} found.</div></display:setProperty>
		<display:setProperty name="paging.banner.onepage" value="" />
		<display:setProperty name="paging.banner.placement" value="${empty listDocumentForm.content.list ? 'none' : 'bottom'}"/>

		<c:if test="${export}">
			<display:setProperty name="export.csv.decorator" value="com.intland.codebeamer.ui.view.table.DocumentListDecorator" />
			<display:setProperty name="export.excel.decorator" value="com.intland.codebeamer.ui.view.table.DocumentListDecorator" />
			<display:setProperty name="export.xml.decorator" value="com.intland.codebeamer.ui.view.table.DocumentListDecorator" />
			<display:setProperty name="export.pdf.decorator" value="com.intland.codebeamer.ui.view.table.DocumentListDecorator" />
			<display:setProperty name="export.rtf.decorator" value="com.intland.codebeamer.ui.view.table.DocumentListDecorator" />
		</c:if>

		<display:column title="${checkAll}" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" media="html"
			headerClass="checkbox-column-minwidth" class="checkbox-column-minwidth">

			<ct:call return="isSelected" object="${listDocumentForm}" method="isSelected" param1="${fileAttributes.id}" />
			<ct:call return="cutToClipboard" object="${listDocumentForm}" method="isCutToClipboard" param1="${sessionScope.clipboard}" param2="${fileAttributes}" />

			<c:if test="${!cutToClipboard && fileAttributes.exists}">
				<input type="checkbox" name="selectedArtifactIds" value="${fileAttributes.id}"
					<c:if test="${isSelected}" >checked="checked"</c:if> />
			</c:if>
		</display:column>

		<display:column class="rawData" title="" property="actionInfo" media="html" />
		<display:column class="rawData" title="" property="subscription" media="html" />

		<%-- Show the path for searchMode --%>
		<c:choose>
			<c:when test="${searchMode}">
				<display:column title="Name" property="path" sortable="true" headerClass="textData expand" class="textData" />
			</c:when>
			<c:otherwise>
				<display:column title="Name" property="name" sortable="true" sortProperty="sortName" headerClass="textData" class="textData" />
			</c:otherwise>
		</c:choose>

		<display:column title="" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" media="html" class="action-column-minwidth">
			<ui:actionGenerator builder="artifactListContextActionMenuBuilder"  subject="${fileAttributes}" actionListName="actions"
				deniedKeys="Open Directory,Display Wiki Note">
				<ui:actionMenu actions="${actions}" />
			</ui:actionGenerator>
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Version" property="version" headerClass="numberData" class="numberData smallerText" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<c:if test="${!searchMode}">
			<display:column title="Description" property="description" sortable="true" sortProperty="sortDescription" headerClass="textData expand" class="textDataWrap smallerText" />

			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />
		</c:if>

		<display:column title="Modified at" property="lastModifiedAt" sortable="true" sortProperty="sortLastModifiedAt" headerClass="dateData" class="dateData" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Modified by" property="lastModifiedBy" sortable="true" sortProperty="sortLastModifiedBy" headerClass="textData" class="textData" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Status" property="status" sortable="true" sortProperty="sortStatus" headerClass="textData" class="textData" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Size" property="size" sortable="true" sortProperty="sortSize" headerClass="numberData" class="numberData" />

	</display:table>
</c:set>

<jsp:include page="./includes/docTreeLayout.jsp">
	<jsp:param name="middlePanel" value="${docTable}" />
</jsp:include>

</html:form>
