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 org.opengion.hayabusa.db.AbstractRenderer;
019    import org.opengion.hayabusa.db.CellRenderer;
020    import org.opengion.hayabusa.db.DBColumn;
021    import org.opengion.hayabusa.db.Selection;
022    
023    /**
024     * MENU レン?ーは、カラ????タをコードリソースに対応したラベルで
025     * プル?ンメニュー表示する場合に使用するクラスです?
026     *
027     *  カラ??表示に?な属?は, DBColumn オブジェク?より取り出します?
028     * こ?クラスは、DBColumn オブジェクト毎に?つ作?されます?
029     *
030     * @og.group ??タ表示
031     *
032     * @version  4.0
033     * @author   Kazuhiko Hasegawa
034     * @since    JDK5.0,
035     */
036    public class Renderer_MENU extends AbstractRenderer {
037            //* こ?プログラ??VERSION??を設定します?       {@value} */
038            private static final String VERSION = "5.5.1.0 (2012/04/03)" ;
039    
040            // 3.2.3.0 (2003/06/06) final を削除。サブクラスからアクセスできるように変更?
041            private final Selection selection  ;
042            private final String useSLabel ;        // 5.5.1.0 (2012/04/03)
043    
044            /**
045             * ?ォルトコンストラクター?
046             * こ?コンストラクターで、基本オブジェクトを作?します?
047             *
048             * @og.rev 3.1.1.1 (2003/04/03) ?ブジェクトから???インスタンスを返すファクトリメソ?を追??
049             * @og.rev 3.2.3.0 (2003/06/06) key 変数をローカル化?
050             * @og.rev 5.5.1.0 (2012/04/03) Slabel対?
051             *
052             */
053            public Renderer_MENU() {
054                    selection  = null;
055                    useSLabel = "auto";             // 5.5.1.0 (2012/04/03)
056            }
057    
058            /**
059             * ?ォルトコンストラクター?
060             *
061             * @og.rev 3.1.1.1 (2003/04/03) ?ブジェクトから???インスタンスを返すファクトリメソ?を追??
062             * @og.rev 3.2.3.0 (2003/06/06) key 変数をローカル化?
063             * @og.rev 3.3.1.1 (2003/07/03) CodeSelection の設定において、バグ修正?
064             * @og.rev 3.5.4.2 (2003/12/15) makeCodeSelection メソ??CodeSelectionクラスに変更?
065             * @og.rev 3.5.5.7 (2004/05/10) SelectionFactory を使用して、オブジェクト作?
066             * @og.rev 4.0.0.0 (2005/01/31) Selection_CODE の作?の引数?CodeData に変更?
067             * @og.rev 4.0.0.0 (2007/11/07) SelectionオブジェクトをDBColumnから取?
068             * @og.rev 5.5.1.0 (2012/04/03) Slabel対?
069             *
070             * @param       clm     DBColumnオブジェク?
071             */
072            private Renderer_MENU( final DBColumn clm ) {
073                    selection = clm.getSelection();                                                                         // 4.0.0.0 (2007/11/07)
074                    useSLabel = clm.getUseSLabel() ;        // 5.5.1.0 (2012/04/03)
075            }
076    
077            /**
078             * ?ブジェクトから???インスタンスを返します?
079             * 自??身をキャ?ュするのか?新たに作?するのか?、各サブクラスの実?
080             * まかされます?
081             *
082             * @og.rev 3.1.1.1 (2003/04/03) ?ブジェクトから???インスタンスを返すファクトリメソ?を追??
083             * @og.rev 3.1.2.1 (2003/04/10) synchronized を?削除します?
084             *
085             * @param       clm     DBColumnオブジェク?
086             *
087             * @return      CellRendererオブジェク?
088             */
089            public CellRenderer newInstance( final DBColumn clm ) {
090                    return new Renderer_MENU( clm );
091            }
092    
093            /**
094             * ??タの表示用??を返します?
095             *
096             * @og.rev 5.5.1.0 (2012/04/03) Slabel対?
097             *
098             * @param   value 入力?
099             *
100             * @return  ??タの表示用??
101             */
102            @Override
103            public String getValue( final String value ) {
104    //              final boolean uslbl = "true".equalsIgnoreCase( useSLabel );             // 5.5.1.0 (2012/04/03)
105                    final boolean uslbl = !"true".equals(useSLabel) ? false : true; // 5.5.1.0 (2012/04/03)
106    //              return selection.getValueLabel( value,false );
107                    return selection.getValueLabel( value,uslbl ); // 5.5.1.0 (2012/04/03)
108            }
109    
110            /**
111             * name属?を変えた???タ表示/編?のHTML??を作?します?
112             * ??ブル上? name に 行番号を付加して、名前_行番号 で登録するキーを作??
113             * リクエスト情報を1つ毎?フィールドで処?きます?
114             *
115             * @og.rev 4.0.0.0 (2005/11/30) ?表示では、短縮ラベルを使用します?
116             * @og.rev 5.5.1.0 (2012/04/03) Slabel対?
117             *
118             * @param   row   行番号
119             * @param   value 入力?
120             *
121             * @return  ??タ表示/編?の??
122             */
123            @Override
124            public String getValue( final int row,final String value ) {
125    //              final boolean uslbl = ("auto".equals(useSLabel) || "true".equals(useSLabel) ) ? true : false; // 5.5.1.0 (2012/04/03)
126                    final boolean uslbl = "auto".equalsIgnoreCase( useSLabel ) || "true".equalsIgnoreCase( useSLabel );             // 5.5.1.0 (2012/04/03)
127    //              return selection.getValueLabel( value,true )
128                    return selection.getValueLabel( value,uslbl );
129            }
130    }