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.plugin.column; 017 018// import org.opengion.hayabusa.common.HybsSystem; // 8.0.0.0 (2021/07/31) Delete 019import org.opengion.hayabusa.db.AbstractRenderer; 020import org.opengion.hayabusa.db.CellRenderer; 021import org.opengion.hayabusa.db.DBColumn; 022import org.opengion.fukurou.util.StringFormat; 023import org.opengion.fukurou.util.StringUtil; 024import org.opengion.fukurou.util.TagBuffer; 025 026/** 027 * URLCALL レï¾ï¾ƒï¾žï¾—ï½°ã¯ã€æ±Žç”¨ï¾Žï¾žï¾€ï¾ã«URLをクリックã™ã‚‹æ©Ÿèƒ½ã‚’é©ç”¨ã™ã‚‹ï½¸ï¾—ï½½ã§ã™ã€‚ 028 * 029 * ボタï¾ã®ï¾—ï¾ï¾žï¾™ã¯ã€ï¾—ï¾ï¾žï¾™ï¾˜ï½¿ï½°ï½½ã‹ã‚‰å–å¾—ã—ã¾ã™ã€‚ãれ以外ã«å€¤ã«è¨å®šã•ã‚ŒãŸæ–‡å—列ã‹ã‚‰ã€ 030 * 変数 $1,$2,$3,$4 ã‚’é©ç”¨ã§ãã¾ã™ã€‚ 031 * AAA:BBB:CCC:DDD ã¨ã„ã†å€¤ã‚’ã€$1,$2,$3,$4 ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚ 032 * 033 * <button name="CC" id="CC" type="button" onclick="window.open('URL','CC_FRM').close();" >CC</button> 034 * <iframe style="display:none;" name="CC_FRM"><!-- --></iframe> 035 * 036 * window.open ã§ã€ã™ãã«é–‰ã˜ã‚‹ã®ã¨ã€iframe ã‚’ 見ãˆãªãã™ã‚‹ã“ã¨ã§ã€ajax ã¨åŒã˜ã‚ˆã†ãªæ„Ÿã˜ã§å®Ÿè¡Œã§ãる。 037 * 038 * ※ 色々ã¨è©¦è¡ŒéŒ¯èª¤ã—ãŸçµæžœã€window.open + 見ãˆãªã„ iframe æ–¹å¼ã§è¡Œã„ã¾ã™ã€‚ 039 * 040 * ä¸æŽ¡ç”¨æ¡ˆ1:ajaxã«ã‚ˆã‚‹éžåŒæœŸé€šä¿¡ 041 * <button name="AA" id="AA" type="button" onclick="ajaxCall('URL');" >ï¾—ï¾ï¾žï¾™AA</button> 042 * default.js ã« ajaxCall を用æ„ã—ã¦ã€éžåŒæœŸã«URLを呼ã³å‡ºã™ã€‚ 043 * IE11 ã§ã¯ã€localhost ç‰ã‹ã‚‰å‘¼ã³å‡ºã›ãªã„(セキï½ï¾˜ï¾ƒï½¨)を低ã«ã™ã‚Œã°å‹•ä½œã™ã‚‹ã€‚Microsoft Edge ã§ã¯å®Ÿè¡Œå¯èƒ½ã€‚ 044 * å°†æ¥çš„ã«ã¯ã€ã“ã¡ã‚‰ã®æ–¹æ³•ã«ãªã‚‹å¯èƒ½æ€§ã¯å¤§ãã„ 045 * 046 * ä¸æŽ¡ç”¨æ¡ˆ2:location.href é·ç§» 047 * <button name="BB" id="BB" type="button" onclick="location.href='URL'" >ï¾—ï¾ï¾žï¾™BB</button> 048 * ã©ã†ã—ã¦ã‚‚ã€URLã«é£›ã‚“ã§ç”»é¢é·ç§»ã—ã¦ã—ã¾ã†ã€‚return false; を入れã¦ã‚‚ã™ã§ã«é·ç§»ã—ã¦ã—ã¾ã†ã€‚ 049 * 050 * @og.rev 7.4.2.0 (2021/05/14) æ–°è¦ä½œæˆ 051 * @og.group データ表示 052 * 053 * @version 7.4 054 * @author Kazuhiko Hasegawa 055 * @since JDK11, 056 */ 057public class Renderer_URLCALL extends AbstractRenderer { 058 /** ã“ã®ï¾Œï¾Ÿï¾›ï½¸ï¾žï¾—ムã®VERSIONæ–‡å—列をè¨å®šã—ã¾ã™ã€‚ {@value} */ 059 private static final String VERSION = "8.5.3.0 (2023/09/08)" ; 060 061// private static final CellRenderer DB_CELL = new Renderer_URLCALL() ; 062 063 private String name; 064 private String label; 065 private String param; 066 067 /** 068 * デフォルトコï¾ï½½ï¾„ラクター。 069 * ã“ã®ï½ºï¾ï½½ï¾„ラクターã§ã€åŸºæœ¬ï½µï¾Œï¾žï½¼ï¾žï½ªï½¸ï¾„を作æˆã—ã¾ã™ã€‚ 070 * 071 */ 072 public Renderer_URLCALL() { 073 super(); 074 } 075 076 /** 077 * DBColumnオブジェクトを指定ã—ãŸprivateコï¾ï½½ï¾„ラクター。 078 * 079 * @og.rev 8.5.3.0 (2023/09/08) DynamicAttributes対応 080 * 081 * @param clm DBColumnオブジェクト 082 */ 083 private Renderer_URLCALL( final DBColumn clm ) { 084 super(); 085 086 name = clm.getName(); 087 label = clm.getLabel(); 088// param = StringUtil.nvalAdd( clm.getRendererParam() , 089// clm.getRendererAttributes().get( "optionAttributes" ) ); 090 // 8.5.3.0 (2023/09/08) optionAttributesã®ä½¿ã„æ–¹ãŒåˆ†ã‹ã‚‰ãªã„為ã€optionAttributesã®ï½¾ï½¯ï¾„ã‚’å»ƒæ¢ 091 param = StringUtil.nval( clm.getRendererParam() , "" ); 092 } 093 094 /** 095 * å„オブジェクトã‹ã‚‰è‡ªåˆ†ã®ï½²ï¾ï½½ï¾€ï¾ï½½ã‚’è¿”ã—ã¾ã™ã€‚ 096 * 自分自身をキャッシï½ã™ã‚‹ã®ã‹ã€æ–°ãŸã«ä½œæˆã™ã‚‹ã®ã‹ã¯ã€å„サブクラスã®å®Ÿè£…ã« 097 * ã¾ã‹ã•ã‚Œã¾ã™ã€‚ 098 * 099 * @param clm DBColumnオブジェクト 100 * @return CellRendererオブジェクト 101 * @og.rtnNotNull 102 */ 103 public CellRenderer newInstance( final DBColumn clm ) { 104 return new Renderer_URLCALL( clm ); 105 } 106 107 /** 108 * データã®è¡¨ç¤ºç”¨æ–‡å—列を返ã—ã¾ã™ã€‚ 109 * 110 * @og.rev 7.4.2.0 (2021/05/14) æ–°è¦ä½œæˆ 111 * 112 * @param value 入力値 113 * @return データã®è¡¨ç¤ºç”¨æ–‡å—列 114 * @og.rtnNotNull 115 */ 116 @Override 117 public String getValue( final String value ) { 118 return makeButton( name, value ); 119 } 120 121 /** 122 * データ出力用ã®æ–‡å—列を作æˆã—ã¾ã™ã€‚ 123 * ファイルç‰ã«å‡ºåŠ›ã™ã‚‹å½¢å¼ã‚’想定ã—ã¾ã™ã®ã§ã€HTMLタグをå«ã¾ãªã„ 124 * データを返ã—ã¾ã™ã€‚ 125 * 基本ã¯ã€#getValue( String ) ã‚’ãã®ã¾ã¾è¿”ã—ã¾ã™ã€‚ 126 * 127 * @og.rev 7.4.2.0 (2021/05/14) æ–°è¦ä½œæˆ 128 * 129 * @param value 入力値 130 * @return データ出力用ã®æ–‡å—列 131 * @og.rtnNotNull 132 * @see #getValue( String ) 133 */ 134 @Override 135 public String getWriteValue( final String value ) { 136 return value == null ? "" : value; 137 } 138 139 /** 140 * データã®è¡¨ç¤ºç”¨æ–‡å—列を返ã—ã¾ã™ã€‚ 141 * 142 * @og.rev 7.4.2.0 (2021/05/14) æ–°è¦ä½œæˆ 143 * @og.rev 8.5.2.0 (2023/07/14) iframeã®nameã« "_FRM" è¿½åŠ 144 * 145 * @param name カラムå 146 * @param value 入力値 表示ã™ã‚‹ï¾Œï½§ï½²ï¾™ã®ï½±ï¾„゙レス 147 * @return データ表示用ã®æ–‡å—列 148 * @og.rtnNotNull 149 */ 150 private String makeButton( final String name,final String value ) { 151 final String newVal = new StringFormat( param, value, name ).format(); // $C 㯠name ã«ç½®ãæ›ãˆã‚‹ã€‚ 152 153 final String button = new TagBuffer( "button" ) 154 .add( "name" , name ) 155 .add( "id" , name ) 156 .add( "type" , "button" ) 157 .add( "onclick" , "window.open('" + newVal + "','" + name + "_FRM').close();" ) 158 .addBody( label ) // ボタï¾ã®è¡¨ç¤º 159 .makeTag(); 160 161 final String iframe = new TagBuffer( "iframe" ) 162// .add( "name" , name ) 163 .add( "name" , name + "_FRM" ) // 8.5.2.0 (2023/07/14) Modify 164 .add( "style" , "display:none;" ) 165 .makeTag(); 166 167 return button + iframe; 168 } 169}