001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.imagegallerydisplay.context;
016    
017    import com.liferay.portal.kernel.language.LanguageUtil;
018    import com.liferay.portal.kernel.util.KeyValuePair;
019    import com.liferay.portal.theme.ThemeDisplay;
020    import com.liferay.portal.util.WebKeys;
021    import com.liferay.portlet.documentlibrary.DLPortletInstanceSettings;
022    import com.liferay.portlet.documentlibrary.util.DLUtil;
023    
024    import java.util.ArrayList;
025    import java.util.Arrays;
026    import java.util.List;
027    import java.util.Set;
028    
029    import javax.servlet.http.HttpServletRequest;
030    
031    /**
032     * @author Iv??n Zaera
033     */
034    public class IGConfigurationDisplayContext {
035    
036            public IGConfigurationDisplayContext(
037                    HttpServletRequest request,
038                    DLPortletInstanceSettings dlPortletInstanceSettings) {
039    
040                    _dlPortletInstanceSettings = dlPortletInstanceSettings;
041    
042                    _themeDisplay = (ThemeDisplay)request.getAttribute(
043                            WebKeys.THEME_DISPLAY);
044            }
045    
046            public List<KeyValuePair> getAvailableMimeTypes() {
047                    if (_availableMimeTypes == null) {
048                            _populateMimeTypes();
049                    }
050    
051                    return _availableMimeTypes;
052            }
053    
054            public List<KeyValuePair> getCurrentMimeTypes() {
055                    if (_currentMimeTypes == null) {
056                            _populateMimeTypes();
057                    }
058    
059                    return _currentMimeTypes;
060            }
061    
062            private void _populateMimeTypes() {
063                    String[] mediaGalleryMimeTypes =
064                            _dlPortletInstanceSettings.getMimeTypes();
065    
066                    _currentMimeTypes = new ArrayList<KeyValuePair>();
067    
068                    for (String mimeType : mediaGalleryMimeTypes) {
069                            _currentMimeTypes.add(
070                                    new KeyValuePair(
071                                            mimeType,
072                                            LanguageUtil.get(_themeDisplay.getLocale(), mimeType)));
073                    }
074    
075                    _availableMimeTypes = new ArrayList<KeyValuePair>();
076    
077                    Set<String> allMediaGalleryMimeTypes =
078                            DLUtil.getAllMediaGalleryMimeTypes();
079    
080                    for (String mimeType : allMediaGalleryMimeTypes) {
081                            if (Arrays.binarySearch(mediaGalleryMimeTypes, mimeType) < 0) {
082                                    _availableMimeTypes.add(
083                                            new KeyValuePair(
084                                                    mimeType,
085                                                    LanguageUtil.get(_themeDisplay.getLocale(), mimeType)));
086                            }
087                    }
088            }
089    
090            private List<KeyValuePair> _availableMimeTypes;
091            private List<KeyValuePair> _currentMimeTypes;
092            private final DLPortletInstanceSettings _dlPortletInstanceSettings;
093            private final ThemeDisplay _themeDisplay;
094    
095    }