/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.adempiere.webui.window;
import java.util.logging.*;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.component.Window;
import org.compiere.model.*;
import org.compiere.util.*;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zkex.zul.Borderlayout;
import org.zkoss.zkex.zul.Center;
import org.zkoss.zkex.zul.North;
import org.zkoss.zkex.zul.South;
import org.zkoss.zul.Div;
import org.zkoss.zul.Html;
/**
* Application Chat
*
* @author Jorg Janke
* @version $Id: AChat.java,v 1.3 2006/07/30 00:51:27 jjanke Exp $
*/
public class WChat extends Window implements EventListener
{
/**
* Generated serial version Id
*/
private static final long serialVersionUID = 5467212494843748048L;
/**
* Constructor.
* loads Chat, if ID <> 0
* @param WindowNo window no
* @param CM_Chat_ID chat
* @param AD_Table_ID table
* @param Record_ID record key
* @param Description description
* @param trxName transaction
*/
public WChat (int WindowNo, int CM_Chat_ID,
int AD_Table_ID, int Record_ID, String Description,
String trxName)
{
super();
setTitle(Msg.getMsg(Env.getCtx(), "Chat") + " " + Description);
setAttribute(Window.MODE_KEY, Window.MODE_MODAL);
log.config("ID=" + CM_Chat_ID
+ ", Table=" + AD_Table_ID + ", Record=" + Record_ID);
//
m_WindowNo = WindowNo;
//
try
{
staticInit();
}
catch (Exception ex)
{
log.log(Level.SEVERE, "", ex);
}
// Create Model
if (CM_Chat_ID == 0)
m_chat = new MChat (Env.getCtx(), AD_Table_ID, Record_ID, Description, trxName);
else
m_chat = new MChat (Env.getCtx(), CM_Chat_ID, trxName);
loadChat();
//
try
{
newText.focus();
AEnv.showCenterScreen(this);
}
catch (Exception e)
{
}
} // Attachment
/** Window No */
@SuppressWarnings("unused")
private int m_WindowNo;
/** Attachment */
private MChat m_chat;
/** Logger */
private static CLogger log = CLogger.getCLogger(WChat.class);
private Borderlayout mainPanel = new Borderlayout();
private Div historyDiv;
private Html historyText = new Html();
private Textbox newText = new Textbox();
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
/**
* Static Init.
* @throws Exception
*/
private void staticInit () throws Exception
{
this.appendChild(mainPanel);
mainPanel.setStyle("position:absolute; height:90%; width:95%; border: none; background-color: white;");
//
North north = new North();
north.setSplittable(true);
north.setStyle("border: none");
mainPanel.appendChild(north);
historyDiv = new Div();
historyDiv.setStyle("position:absolute; height:100%; width:100%; background-color: lightgray;");
historyDiv.appendChild(historyText);
north.appendChild(historyDiv);
north.setAutoscroll(true);
north.setHeight("150px");
Center center = new Center();
center.appendChild(newText);
newText.setStyle("position:absolute; height:100%; width:100%");
newText.setMultiline(true);
mainPanel.appendChild(center);
//
// South
South south = new South();
south.setHeight("50px");
south.setStyle("border: none; margin-top: 10px");
south.appendChild(confirmPanel);
mainPanel.appendChild(south);
confirmPanel.addActionListener(this);
this.setStyle("position: relative; height: 450px; width: 500px;");
this.setMaximizable(true);
this.setSizable(true);
this.setBorder("normal");
} // staticInit
/**
* Load Chat
*/
private void loadChat()
{
String html = m_chat.getHistory(MChat.CONFIDENTIALTYPE_Internal).toString();
historyText.setContent(html);
} // loadChat
/**
* Action Performed
* @param e event
*/
public void actionPerformed (Event e)
{
if (e.getTarget().getId().equals(ConfirmPanel.A_OK))
{
String data = newText.getText();
if (data != null && data.length() > 0)
{
log.config(data);
if (m_chat.get_ID() == 0)
m_chat.save();
MChatEntry entry = new MChatEntry(m_chat, data);
entry.save();
} // data to be saved
}
dispose();
} // actionPerformed
public void onEvent(Event event) throws Exception {
actionPerformed(event);
}
} // AChat