package br.com.centralit.citajax.html;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import br.com.centralit.citajax.framework.ParserRequest;
import br.com.centralit.citajax.util.JavaScriptUtil;
public class DocumentHTML {
private final Map hashElementos;
private List comandsExecute;
private final Collection metodosTratamento;
private int scriptCount;
private Object bean;
private Map forms;
private Map valuesForm = null;
private Object returnScriptSystem;
private Object returnScriptUser;
private boolean ignoreNextMethod;
/**
* Adicionado por valdoilo.damasceno
*
* @since 03.02.2014
*/
private String language;
public DocumentHTML() {
forms = null;
hashElementos = new HashMap<>();
comandsExecute = new ArrayList<>();
metodosTratamento = new ArrayList<>();
}
public HTMLElement getElementById(final String objId) throws Exception {
return this.getElementById(objId, HTMLElement.class);
}
public void setElement(final String objId, final HTMLElement element) {
if (!hashElementos.containsKey(objId)) {
hashElementos.put(objId, element);
}
}
private HTMLElement getElementById(final String objId, final Class classeElement) throws Exception {
HTMLElement element;
if (hashElementos.containsKey(objId)) {
element = (HTMLElement) hashElementos.get(objId);
} else {
final Class[] parmClassConstrutor = {String.class, DocumentHTML.class};
Constructor construtor = null;
try {
construtor = classeElement.getConstructor(parmClassConstrutor);
} catch (final SecurityException e) {
throw new Exception("Problema com o Construtor do Objeto HTML: " + e.getMessage());
} catch (final NoSuchMethodException e) {
throw new Exception("Problema com o Construtor do Objeto HTML: " + e.getMessage());
}
final Object[] parmsInitObj = {objId, this};
element = (HTMLElement) construtor.newInstance(parmsInitObj);
this.setElement(objId, element);
}
return element;
}
public HTMLSelect getSelectById(final String objId) throws Exception {
return (HTMLSelect) this.getElementById(objId, HTMLSelect.class);
}
public HTMLTextBox getTextBoxById(final String objId) throws Exception {
return (HTMLTextBox) this.getElementById(objId, HTMLTextBox.class);
}
public HTMLTextArea getTextAreaById(final String objId) throws Exception {
return (HTMLTextArea) this.getElementById(objId, HTMLTextArea.class);
}
public HTMLCheckbox getCheckboxById(final String objId) throws Exception {
return (HTMLCheckbox) this.getElementById(objId, HTMLCheckbox.class);
}
public HTMLRadio getRadioById(final String objId) throws Exception {
return (HTMLRadio) this.getElementById(objId, HTMLRadio.class);
}
public HTMLTable getTableById(final String objId) throws Exception {
return (HTMLTable) this.getElementById(objId, HTMLTable.class);
}
public HTMLTreeView getTreeViewById(final String objId) throws Exception {
return (HTMLTreeView) this.getElementById(objId, HTMLTreeView.class);
}
public HTMLJanelaPopup getJanelaPopupById(final String objId) throws Exception {
return (HTMLJanelaPopup) this.getElementById(objId, HTMLJanelaPopup.class);
}
public void executeScript(final String script) {
scriptCount++;
comandsExecute.add(script);
}
public HTMLForm getForm(final String nameForm) {
if (forms == null) {
forms = new HashMap();
}
HTMLForm form = (HTMLForm) forms.get(nameForm);
if (form == null) {
form = new HTMLForm(nameForm, this);
forms.put(nameForm, form);
}
return form;
}
public void focusInFirstActivateField(final HTMLForm form) {
final List lst = this.getComandsExecute();
if (form == null) {
lst.add("HTMLUtils.focusInFirstActivateField()");
} else {
lst.add("HTMLUtils.focusInFirstActivateField(document." + form.getName() + ")");
}
}
public void setTitle(final String title) {
final List lst = this.getComandsExecute();
lst.add("document.getElementById('spanTitulo').innerHTML = '" + JavaScriptUtil.escapeJavaScript(title) + "'");
}
public void alert(final String msg) {
final List lst = this.getComandsExecute();
lst.add("alert('" + JavaScriptUtil.escapeJavaScript(msg) + "')");
}
public Collection getAllScripts() {
final Collection col = comandsExecute;
final Collection colRetorno = new ArrayList();
ScriptExecute script;
String mName;
for (final Iterator it = metodosTratamento.iterator(); it.hasNext();) {
mName = (String) it.next();
script = new ScriptExecute();
if (mName.indexOf("click") > -1) {
final String nameObj[] = mName.split("_");
if (nameObj != null && nameObj.length > 0) {
script.setScript("addEvent(document.getElementById('" + nameObj[0] + "'), 'click', DEFINEALLPAGES_trataEventos_Click, false)");
colRetorno.add(script);
}
} else if (mName.indexOf("change") > -1) {
final String nameObj[] = mName.split("_");
if (nameObj != null && nameObj.length > 0) {
script.setScript("addEvent(document.getElementById('" + nameObj[0] + "'), 'change', DEFINEALLPAGES_trataEventos_Change, false)");
colRetorno.add(script);
}
}
}
for (final Iterator it = col.iterator(); it.hasNext();) {
script = new ScriptExecute();
script.setScript((String) it.next());
colRetorno.add(script);
}
return colRetorno;
}
public List getComandsExecute() {
return comandsExecute;
}
public void setComandsExecute(final List comandsExecute) {
this.comandsExecute = comandsExecute;
}
public Collection getMetodosTratamento() {
return metodosTratamento;
}
public void setMetodosTratamentoByMethods(final Collection col) {
Method m;
for (final Iterator it = col.iterator(); it.hasNext();) {
m = (Method) it.next();
metodosTratamento.add(m.getName());
}
}
public Collection getInternalBeanCollection(final String internalForm, final Class classe) {
final ParserRequest parser = new ParserRequest();
Collection col = null;
try {
col = parser.converteValoresRequestToInternalBean(valuesForm, classe, internalForm);
} catch (final Exception e) {
e.printStackTrace();
return null;
}
return col;
}
public Object getBean() {
return bean;
}
public void setBean(final Object bean) {
this.bean = bean;
}
public Map getForms() {
return forms;
}
public void setForms(final Map forms) {
this.forms = forms;
}
public Map getValuesForm() {
return valuesForm;
}
public void setValuesForm(final Map valuesForm) {
this.valuesForm = valuesForm;
}
public Object getReturnScriptSystem() {
return returnScriptSystem;
}
public void setReturnScriptSystem(final Object returnScriptSystem) {
this.returnScriptSystem = returnScriptSystem;
}
public Object getReturnScriptUser() {
return returnScriptUser;
}
public void setReturnScriptUser(final Object returnScriptUser) {
this.returnScriptUser = returnScriptUser;
}
public boolean isIgnoreNextMethod() {
return ignoreNextMethod;
}
public void setIgnoreNextMethod(final boolean ignoreNextMethod) {
this.ignoreNextMethod = ignoreNextMethod;
}
/**
* Retorna a language do usu�rio logado.
*
* @return language - Linguagem do usu�rio logado.
* @author valdoilo.damasceno
* @since 03.02.2014
*/
public String getLanguage() {
return language;
}
/**
* Atribui valor da language do usu�rio logado.
*
* @param language
* - Linguagem do usu�rio logado.
* @author valdoilo.damasceno
* @since 03.02.2014
*/
public void setLanguage(final String language) {
this.language = language;
}
}