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 */
016package org.opengion.hayabusa.taglib;
017
018
019import org.opengion.fukurou.util.XHTMLTag;
020
021
022/**
023 * インラインフレームを作成するHTML拡張タグで、引数の受け渡しが可能です。
024 *
025 * @og.formSample
026 * ●形式:<og:iframe src="…" name="…" />
027 * ●body:なし
028 *
029 * ●Tag定義:
030 *   <og:frame
031 *       src              ○【HTML】フレームに表示するソースファイルを指定します(必須)。
032 *       name             ○【HTML】フレーム名を指定します(例:QUERY,RESULT,CONTENTS など)(必須)。
033 *       changeGamen        【TAG】ソース指定の画面を変更します
034 *       keys               【TAG】引数を指定します
035 *       dbTable            【TAG】前ページで選択したデータ列の情報を次のページに渡すかどうか[true/false]を指定します(初期値:false)
036 *       width              【HTML】フレームの幅を指定します
037 *       height             【HTML】フレームの高さを指定します
038 *       srcdoc             【HTML】フレームに表示する内容を指定します
039 *       seamless           【HTML】シームレス化の指定をします
040 *       sandbox            【HTML】サンドボックスの指定をします
041 *       marginwidth        【HTML】フレームの左右余白サイズ(marginwidth)を指定します(HTML5廃止属性)
042 *       marginheight       【HTML】フレームの上下余白サイズ(marginheight)を指定します(HTML5廃止属性)
043 *       noresize           【HTML】フレームサイズを変更できないよう(noresize)に指定します(HTML5廃止属性)
044 *       scrolling          【HTML】スクロールバー(scrolling)の表示/非表示[auto/yes/no]を指定します(初期値:auto)(HTML5廃止属性)
045 *       frameborder        【HTML】フレームの境界線(frameborder)の[0:非表示/1:表示]を指定します(初期値:1)(HTML5廃止属性)
046 *       id                 【HTML】要素に対して固有の名前(id)をつける場合に設定します
047 *       clazz              【HTML】要素に対して class 属性を設定します
048 *       title              【HTML】要素に対する補足的情報(title)を設定します
049 *       style              【HTML】この要素に対して適用させるスタイルシート(style)を設定します
050 *       caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20)
051 *       caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20)
052 *       caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:true) 5.7.7.2 (2014/06/20)
053 *       caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:true) 5.7.7.2 (2014/06/20)
054 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
055 *   />
056 *
057 * ●使用例:
058 *    ・一般的な例:インラインフレームの構成はHTML準拠。リクエスト変数は各フレームまで転送されます。
059 *        <og:iframe src="query.jsp"   name="QUERY"  />
060 *    </frameset>
061 *
062 *
063 * @og.group 画面部品
064 *
065 * @version  5.0
066 * @author       Takahashi Masakazu
067 * @since    JDK5.0,
068 */
069public class IframeTag extends FrameTag {
070        //* このプログラムのVERSION文字列を設定します。   {@value} */
071        private static final String VERSION = "5.9.1.2 (2015/10/23)" ;
072
073        private static final long serialVersionUID = 421120080430L ;
074
075
076        /**
077         * タグリブオブジェクトをリリースします。
078         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
079         *
080         *
081         */
082        @Override
083        protected void release2() {
084                super.release2();
085        }
086
087        /**
088         * リンクを作成します。
089         *
090         * @return      リンクタグ文字列
091         */
092        @Override
093        protected String makeTag() {
094                if( changeGmn != null ) { set( "src",changeGmn ); }
095
096                String cmd = getRequest().getParameter( "command" );
097                if( "RENEW".equals( cmd ) ) { dbTable = false; }
098
099                setIdName();
100                String urlEnc = getUrlEncode();
101                return XHTMLTag.iframe( getAttributes(),urlEnc );
102        }
103
104
105        /**
106         * 【HTML】フレームに表示するコンテンツ(srcdoc)を指定します。
107         *
108         * @og.tag srcdocを指定します。
109         *
110         * @param       srcdoc 表示コンテンツ
111         */
112        public void setSrcdoc( final String srcdoc ) {
113                set( "srcdoc",getRequestParameter( srcdoc ) );
114        }
115        
116        /**
117         * 【HTML】シームレス表示(seamless)を指定します。
118         *  HTML上は属性値が省略可能なため、seamlessやtrue等を指定してください。
119         *
120         * @og.tag seamlessを指定します。
121         *
122         * @param       seamless シームレス表示指定
123         */
124        public void setSeamless( final String seamless ) {
125                set( "seamless",getRequestParameter( seamless ) );
126        }
127        
128        /**
129         * 【HTML】フレームに表示するコンテンツのセキュリティ上の制限(sandbox)を指定します。
130         * スペース等で空指定して属性を付加する事でサンドボックス化され、セキュリティが強化されます。
131         * 属性値を指定すると、対応した制限が解除されます。
132         * 標準は属性無し(サンドボックス化無し)です。
133         *
134         * @og.tag sandboxを指定します。
135         *
136         * @param       sandbox 表示コンテンツ
137         */
138        public void setSandbox( final String sandbox ) {
139                set( "sandbox",getRequestParameter( sandbox ) );
140        }
141        
142        /**
143         * 【HTML】フレームの幅を指定します
144         *
145         * @og.tag widthを指定します。
146         *
147         * @param       width 幅
148         */
149        public void setWidth( final String width ) {
150                set( "width",getRequestParameter( width ) );
151        }
152        
153        /**
154         * 【HTML】フレームの高さを指定します。
155         *
156         * @og.tag heightを指定します。
157         *
158         * @param       height 高さ
159         */
160        public void setHeight( final String height ) {
161                set( "height",getRequestParameter( height ) );
162        }
163
164        /**
165         * 【HTML】フレームの左右余白サイズ(marginwidth)を指定します。
166         * HTML5では廃止されている属性のため、可能であればCSSを利用してください。
167         *
168         * @og.tag フレームの左右余白サイズを指定します。
169         *
170         * @param       marginwidth 左右余白サイズ
171         */
172        @Override
173        public void setMarginwidth( final String marginwidth ) {
174                set( "marginwidth",getRequestParameter( marginwidth ) );
175        }
176
177        /**
178         * 【HTML】フレームの上下余白サイズ(marginheight)を指定します。
179         * HTML5では廃止されている属性のため、可能であればCSSを利用してください。
180         *
181         * @og.tag フレームの上下余白サイズを指定します。
182         *
183         * @param       marginheight 上下余白サイズ
184         */
185        @Override
186        public void setMarginheight( final String marginheight ) {
187                set( "marginheight",getRequestParameter( marginheight ) );
188        }
189
190        /**
191         * 【HTML】スクロールバー(scrolling)の表示/非表示[auto/yes/no]を指定します(初期値:auto)。
192         *  HTML5では廃止されている属性のため、可能であればCSSを利用してください。
193         *
194         * @og.tag
195         * auto:必要に応じてスクロールバーを表示(初期値)
196         * yes:常にスクロールバーを表示
197         * no:常にスクロールバーを表示しない
198         *
199         * @param       scrolling  スクロールバーの表示/非表示[auto:自動/yes:常時表示/no:非表示]
200         */
201        @Override
202        public void setScrolling( final String scrolling ) {
203                set( "scrolling",getRequestParameter( scrolling ) );
204        }
205
206        /**
207         * 【HTML】フレームの境界線(frameborder)の[0:非表示/1:表示]を指定します(初期値:1)。
208         *  HTML5では廃止されている属性のため、可能であればCSSを利用してください。
209         *
210         * @og.tag
211         * 0:枠を表示しない
212         * 1:枠を表示する。
213         * 初期値は、1:枠を表示する です。
214         *
215         * @param       frameborder     フレームの境界線[0:枠非表示/1:枠表示]
216         */
217        @Override
218        public void setFrameborder( final String frameborder ) {
219                set( "frameborder",getRequestParameter( frameborder ) );
220        }
221
222
223}