001    /*
002     * Copyright (c) 2009 The openGion Project.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013     * either express or implied. See the License for the specific language
014     * governing permissions and limitations under the License.
015     */
016    package org.opengion.plugin.column;
017    
018    import java.util.Locale;
019    import java.util.Map;
020    import java.util.HashMap;
021    
022    import org.opengion.hayabusa.db.AbstractRenderer;
023    import org.opengion.hayabusa.db.CellRenderer;
024    import org.opengion.hayabusa.db.DBColumn;
025    
026    /**
027     * ICON レンãƒ?ƒ©ãƒ¼ã¯ã€ã‚«ãƒ©ãƒ??ファイルåã?æ‹¡å¼µå­ã‹ã‚‰ã‚¢ã‚¤ã‚³ãƒ³ãƒ•ァイルã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚¿ã‚°ã‚’作æ?ã—ã¾ã™ã?
028     * イメージãƒ??ã‚¿ã¯ã€jsp/image/thumb を使用ã—ã¾ã™ã?
029     *
030     * 実質çš?«ã¯ã€ã‚¢ã‚¤ã‚³ãƒ³ã§ã¯ãªãã?サãƒ?ƒã‚¤ãƒ«ã¨ã—ã¦åˆ©ç”¨ã—ã¾ã™ã?
031     * 
032     * 縦横比をãã?ã¾ã¾ã«ã€ç¸¦ã‹æ¨ªã®æœ?¤§å€¤ã«ç”»åƒã‚µã‚¤ã‚ºã‚’åˆã‚ã›ã‚‹ã«ã¯ã€?
033     * style="max-width:100; max-height:100;" ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ã§å¯¾å¿œã§ãã¾ã™ã?
034     * class="ICON" 属æ?ã‚’å?力ã—ã¦ãŠãã¾ã™ã?ã§ã€CSSファイルã§è¨˜è¿°ã—ã¦ãã ã•ã„ã€?
035     *
036     * (例�
037     *<pre>
038     *  &lt;style type="text/css"&gt;
039     *      img.ICON { max-width:100px; max-height:100px; }
040     *  &lt;/style&gt;
041     *</pre>
042     *
043     * ã“ã?クラスã¯ã€ä¸å¤‰ã‚ªãƒ–ジェクトã¨ã—ã¦ã€å?有ã•れã¾ã™ã?
044     *
045     * @og.rev 5.6.5.1 (2013/06/14) æ–°è¦ä½œæ?
046     *
047     * @og.group �?タ表示
048     *
049     * @version  4.0
050     * @author       Kazuhiko Hasegawa
051     * @since    JDK5.0,
052     */
053    public class Renderer_ICON extends AbstractRenderer {
054            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
055            private static final String VERSION = "5.6.5.1 (2013/06/14)" ;
056    
057            private static final CellRenderer dbCell = new Renderer_ICON() ;
058    
059            // アイコンファイルã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã‚‹æ‹¡å¼µå­ã¨ãƒ•ァイルã®é–¢é€£(MAP)æƒ??
060            private static final Map<String,String> ICON_MAP ;
061            static {
062                    ICON_MAP = new HashMap<String,String>();
063    
064                    ICON_MAP.put( "doc"             ,       "../image/thumb/doc.png" );
065                    ICON_MAP.put( "docx"    ,       "../image/thumb/doc.png" );
066                    ICON_MAP.put( "xls"             ,       "../image/thumb/xls.png" );
067                    ICON_MAP.put( "xlsx"    ,       "../image/thumb/xls.png" );
068                    ICON_MAP.put( "ppt"             ,       "../image/thumb/ppt.png" );
069                    ICON_MAP.put( "pptx"    ,       "../image/thumb/ppt.png" );
070                    ICON_MAP.put( "pdf"             ,       "../image/thumb/pdf.png" );
071                    ICON_MAP.put( "txt"             ,       "../image/thumb/text.png" );
072                    ICON_MAP.put( "zip"             ,       "../image/thumb/zip.png" );
073            }
074            private static final String DOC_VIEW = "../image/thumb/docview.png" ;           // ãã?ä»–ã?アイコン
075    
076            /**
077             * å?‚ªãƒ–ジェクトã‹ã‚‰è?åˆ??インスタンスを返ã—ã¾ã™ã?
078             * 自åˆ??身をキャãƒ?‚·ãƒ¥ã™ã‚‹ã®ã‹ã?æ–°ãŸã«ä½œæ?ã™ã‚‹ã®ã‹ã?ã€å„サブクラスã®å®Ÿè£?«
079             * ã¾ã‹ã•れã¾ã™ã?
080             *
081             * @param       clm     DBColumnオブジェク�
082             *
083             * @return      CellRendererオブジェク�
084             */
085            public CellRenderer newInstance( final DBColumn clm ) {
086                    return dbCell;
087            }
088    
089            /**
090             * ãƒ??ã‚¿ã®è¡¨ç¤ºç”¨æ–?­—å?ã‚’è¿”ã—ã¾ã™ã?
091             *
092             * @param       value 入力å?
093             *
094             * @return      ãƒ??ã‚¿ã®è¡¨ç¤ºç”¨æ–?­—å?
095             */
096            @Override
097            public String getValue( final String value ) {
098                    String icon = null;
099    
100                    if( value != null ) {
101                            String sufix = null;
102                            int idx = value.lastIndexOf(".");
103                            if( idx >= 0 ) {
104                                    sufix = value.substring( idx+1 ).toLowerCase( Locale.JAPAN );
105                                    icon = ICON_MAP.get( sufix );
106                            }
107                    }
108    
109                    if( icon == null ) { icon = DOC_VIEW; }
110    
111                    return "<img class=\"ICON\" src=\"" + icon + "\" alt=\"" + value + "\" />" ;
112            }
113    }