/**
 * @(#)CECAdapter.java
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 * @author  Intelligent Technology Inc.
 * @version 1.00 2001/10/01-2002/03/26
 */
package	jp.co.nri.rid.table.editor;

//import	java.awt.*;
import	java.awt.event.*;
//import	javax.swing.*;
import	jp.co.nri.rid.*;
import	jp.co.nri.rid.error.*;
import	jp.co.nri.rid.xml.*;
import	jp.co.iti.fagot.util.*;
import	jp.co.iti.fagot.doc.*;
import jp.co.nri.rid.environment.*;

/**
 * Cell Editor Component Adapter セルエディタにActionListenerとして登録しておき、セルエディタより値の変更通知を受け取るとエレメントの属性を更新する。
 */

public class CECAdapter implements ActionListener{
	protected elementBooster		myElement;
	protected String				myAttributeName;
	protected iCellEditorComponent	myEditor;
	
	/**
	 * @param	element	エレメント。
	 * @param	name	属性名。
	 * @since	1.00
	 */
	public CECAdapter(elementBooster element ,String name){
		myElement		= element;
		myAttributeName	= new String(name);
	}
	
	/**
	 * セルエディタを登録する。
	 * @param	editor	セルエディタ。
	 * @since	1.00
	 */
	public void editor(iCellEditorComponent editor){
		myEditor = editor;
	}
	
	/**
	 * ActionListener実装。
	 * @since	1.00
	 */
	public void actionPerformed(ActionEvent evt){
		if(null==myEditor)	return;

/*
		//*** fuku ***
		if ( jp.co.iti.fagot.util.ZInstance.prop().getBoolean("Rid.PropertyPanel.Updating",false) ) {
			jp.co.iti.fagot.util.ZDebug.trace("抑止");
			return;
		}
		jp.co.iti.fagot.util.ZDebug.trace("反映:"+myAttributeName+"="+myEditor.text());
*/

/*
		String text = myEditor.text();
		myElement.attribute(myAttributeName ,text);
		String newtext = myElement.attribute(myAttributeName);
		
		if(null==text){
			if(null==newtext){
				RUpdateManager.update(RUpdateManager.PROPERTY_CHANGED);
				return;
			}
		}
		else{
			if(text.equalsIgnoreCase(newtext)){
				RUpdateManager.update(RUpdateManager.PROPERTY_CHANGED);
				return;
			}
		}
		
		RidException re = (RidException)ZInstance.map().get("setAttribute");
		MessageDialog.showError(re.getMessage());
		
*/
		String	value	= myEditor.text();
		
		if(null!=value){
			if(0>=value.length())	value = null;
		}
		
		((DocDocument)myElement.document().document()).beginTransaction();
		myElement.attribute(myAttributeName ,value);
		((DocDocument)myElement.document().document()).commit();
		String newvalue = myElement.attribute(myAttributeName);
		
		if(null==value){
			if(null==newvalue){
				RUpdateManager.update(RUpdateManager.PROPERTY_CHANGED);
				return;
			}
		}
		else{
			if(value.equalsIgnoreCase(newvalue)){
				RUpdateManager.update(RUpdateManager.PROPERTY_CHANGED);
				return;
			}
		}
		
		RidException re = (RidException)ZInstance.map().get("setAttribute");
		MessageDialog.showError(re.getMessage());
		
		myEditor.text(newvalue);
	}
}
