/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.document.library.google.docs.internal.display.context;
import com.liferay.document.library.display.context.DLUIItemKeys;
import com.liferay.document.library.google.docs.internal.util.GoogleDocsConstants;
import com.liferay.document.library.google.docs.internal.util.GoogleDocsMetadataHelper;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.servlet.taglib.ui.MenuItem;
import com.liferay.portal.kernel.servlet.taglib.ui.ToolbarItem;
import com.liferay.portal.kernel.servlet.taglib.ui.UIItem;
import com.liferay.portal.kernel.servlet.taglib.ui.URLMenuItem;
import com.liferay.portal.kernel.servlet.taglib.ui.URLToolbarItem;
import com.liferay.portal.kernel.servlet.taglib.ui.URLUIItem;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ResourceBundleUtil;
import com.liferay.portal.kernel.util.WebKeys;
import java.util.List;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
/**
* @author Iván Zaera
*/
public class GoogleDocsUIItemsProcessor {
public GoogleDocsUIItemsProcessor(
HttpServletRequest request,
GoogleDocsMetadataHelper googleDocsMetadataHelper) {
_request = request;
_googleDocsMetadataHelper = googleDocsMetadataHelper;
}
public void processMenuItems(List<MenuItem> menuItems) {
_removeUnsupportedUIItems(menuItems);
URLMenuItem urlMenuItem = _insertEditInGoogleURLUIItem(
new URLMenuItem(), menuItems);
urlMenuItem.setMethod("GET");
}
public void processToolbarItems(List<ToolbarItem> toolbarItems) {
_removeUnsupportedUIItems(toolbarItems);
_insertEditInGoogleURLUIItem(new URLToolbarItem(), toolbarItems);
}
private int _getIndex(List<? extends UIItem> uiItems, String key) {
for (int i = 0; i < uiItems.size(); i++) {
UIItem uiItem = uiItems.get(i);
if (key.equals(uiItem.getKey())) {
return i;
}
}
return -1;
}
private <T extends URLUIItem> T _insertEditInGoogleURLUIItem(
T urlUIItem, List<? super T> urlUIItems) {
if (!_googleDocsMetadataHelper.containsField(
GoogleDocsConstants.DDM_FIELD_NAME_URL)) {
return urlUIItem;
}
int index = _getIndex(
(List<? extends UIItem>)urlUIItems, DLUIItemKeys.EDIT);
if (index == -1) {
index = 0;
}
urlUIItem.setKey(GoogleDocsUIItemKeys.EDIT_IN_GOOGLE);
ThemeDisplay themeDisplay = (ThemeDisplay)_request.getAttribute(
WebKeys.THEME_DISPLAY);
ResourceBundle resourceBundle = ResourceBundleUtil.getBundle(
"content.Language", themeDisplay.getLocale(), getClass());
String message = LanguageUtil.get(
resourceBundle, "edit-in-google-docs");
urlUIItem.setLabel(message);
urlUIItem.setTarget("_blank");
String editURL = _googleDocsMetadataHelper.getFieldValue(
GoogleDocsConstants.DDM_FIELD_NAME_URL);
urlUIItem.setURL(editURL);
urlUIItems.add(index, urlUIItem);
return urlUIItem;
}
private void _removeUIItem(List<? extends UIItem> uiItems, String key) {
int index = _getIndex(uiItems, key);
if (index != -1) {
uiItems.remove(index);
}
}
private void _removeUnsupportedUIItems(List<? extends UIItem> uiItems) {
_removeUIItem(uiItems, DLUIItemKeys.CANCEL_CHECKOUT);
_removeUIItem(uiItems, DLUIItemKeys.CHECKIN);
_removeUIItem(uiItems, DLUIItemKeys.CHECKOUT);
_removeUIItem(uiItems, DLUIItemKeys.DOWNLOAD);
_removeUIItem(uiItems, DLUIItemKeys.OPEN_IN_MS_OFFICE);
}
private final GoogleDocsMetadataHelper _googleDocsMetadataHelper;
private final HttpServletRequest _request;
}