0

Help to getInfo between zul files

asked 2011-03-25 14:00:42 +0800

nilsonhp gravatar image nilsonhp
123 3

Hi, everyone.

I've got a lot a trouble to solve the following problem:

First, i've had a zul file, called fornecedor, where this is the code:

Fornecedor.zul


<?page title="new page title" contentType="text/html;charset=UTF-8"?>

<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>

<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./fornecedorBorderlayout"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>

<zk>
	<style>
		.text-filter-card{ margin-bottom: 5px; margin-top: 5px; height:
		24px; valign: middle; font-size: 18px; color:gray; }

		.icon-filter-card{float:left; margin: 5px; valign: middle; }

		.button-filter-card{float:right; padding: 3px 12px; font-size:
		16px; margin-bottom: 5px; margin-top: 5px;}

		.button-toolbar-left{ margin:4px 0px 4px 4px; padding: 4px 6px;
		float:left; } .button-toolbar-right{ margin:4px 0px 4px 4px;
		padding: 4px 6px; float:right; }


	</style>


	<zscript><![CDATA[
	
	import com.laborapix.purchase.vendor.model.entity.Fornecedor;
	import com.laborapix.purchase.vendor.ui.FornecedorController;
	import com.mitahtech.iguassu.model.entity.GenericEntity;
	import org.zkoss.zul.Messagebox;
	import com.laborapix.main.dbinitconfig.DBInitController;
	import org.zkoss.zk.ui.event.EventListener;
	FornecedorController fornecedorController = new FornecedorController();
	Execution exec = Executions.getCurrent();
	fornecedorController.getBasicInformation();
	List getallFornecedor;
	Set telefones = new HashSet();
	ListModel listFornecedor;
	try {
		getallFornecedor = fornecedorController.getAll();
		listFornecedor = new BindingListModelList(getallFornecedor, true);
	} catch (Exception e) {
		e.printStackTrace();
	}
	long idSelecionado = -1;
	void refresh() {
		//prepare the AnnotateDataBinder
		System.out.println("Dentro do bind getAll");

		List getallFornecedor;
		try {
			getallFornecedor = fornecedorController.getAll();
			((Listbox) fornecedorWindowList.getFellow("listboxFornecedor"))
					.setModel(new BindingListModelList(getallFornecedor, true));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	void clear() {
		//prepare the AnnotateDataBinder
		System.out.println("Deixando componentes habilitados");

		idFornecedor.setText("");

		((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor"))
				.setVisible(true);
		((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor"))
				.setVisible(true);

		((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor"))
				.setVisible(false);
		((Listbox) fornecedorWindowList.getFellow("listboxFornecedor"))
				.clearSelection();
	}
	void setToList(Fornecedor fornecedor) {

		try {

			telefones = fornecedor.getTelefones();
			System.out.println("&&&" + telefones);
			

		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	

	void populate() {
		//prepare the AnnotateDataBinder

		Fornecedor fornecedor2 = new Fornecedor();
		fornecedor2.setID(idSelecionado);

		try {
			System.out.println("%%%entrou no Populate!!");

			Fornecedor fornecedor = (Fornecedor) fornecedorController
					.getById(fornecedor2);

			idFornecedor.setValue(fornecedor.getID().toString());

			setToList(fornecedor);

		} catch (Exception e) {
			e.printStackTrace();
		}
		turnEditableOff();
		((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor"))
				.setVisible(true);
		((Button) windowMenuFornecedor.getFellow("buttonEditFornecedor"))
				.setVisible(true);
	}
	
	void delete() {

		Fornecedor fornecedor = new Fornecedor();
		fornecedor.setID(idSelecionado);

		try {
			String message = fornecedorController.delete(fornecedor);
			if (message != null) {
				alert(message);
			} else {
				refresh();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		clear();
		((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor"))
				.setVisible(false);
		((Button) windowMenuFornecedor.getFellow("buttonEditFornecedor"))
				.setVisible(false);

		((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor"))
				.setVisible(false);
		((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor"))
				.setVisible(false);

	}
	void getCardData() {

		Fornecedor fornecedor = new Fornecedor();

		try {
			System.out.println("###entrou no getCArd");
			if (!idFornecedor.getValue().equals("")) {
				System.out.println(idFornecedor.getValue());
				fornecedor.setID(Long.parseLong(idFornecedor.getValue()));
			}

			setToList(fornecedor);			
						
			fornecedorController.create(fornecedor);

			refresh();

			((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor"))
					.setVisible(false);
			((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor"))
					.setVisible(false);
			clear();
			
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	void callPopup() {

		Map arg1 = new HashMap();
		Window tel = new Window();
		if (idSelecionado != -1) {
			if (telefones != null) {
				telBox.getChildren().clear();
				arg1.put("teste", true);
				arg1.put("telefones", telefones);
				arg1.put("parentID", idSelecionado);
				tel = (Window) Executions.createComponents(
						"/web/view/popups/TelefonePopupList.zul", telBox, arg1);
			}										
		} else {
			telBox.getChildren().clear();
			arg1.put("telefones", telefones);
			arg1.put("parentID", idSelecionado);
			tel = (Window) Executions.createComponents(
					"/web/view/popups/TelefonePopupList.zul", telBox, arg1);
		}
	}
	
	
	
	void showReports() {

		System.out.println("ShowReports");
	}
	void showHelp() {

		System.out.println("ShowHelp");
	}
]]>
</zscript>
...

<window id="fornecedorWindowList" width="400px">
				<listbox id="listboxFornecedor" mold="paging"
					multiple="true" model="${listFornecedor}" onCreate="callPopup()"
					onSelect=" idSelecionado = ((Fornecedor)listboxFornecedor.getSelectedItem().getValue()).getID();
					populate(); callPopup(); ">
					<listhead height="32px">
						<listheader
							label="${c:l('nomeOuRazaoSocialFornecedor')}" />
						<listheader
							label="${c:l('numCadastroNacionalFornecedor')}" />
					</listhead>
					<listitem self="@{each=fornecedor}" height="24px"
						value="@{fornecedor}">
						<listcell
							label="@{fornecedor.nomeOuRazaoSocial}">
						</listcell>
						<listcell
							label="@{fornecedor.numCadastroNacional}">
						</listcell>
					</listitem>
				</listbox>
			</window>
...
<groupbox mold="3d" width="100%" closable="true">
					<caption label="${c:l('telefonesFornecedor')}" />
					<window id="telBox" />

				</groupbox>
</zk>

thats is just part of the code.
i take the value of the set telefones, a HashSet, and pass it as a param from the other zul file, telefone:

telefone.zul


<?page title="Telefone" contentType="text/html;charset=UTF-8"?>

<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./listBoxTelefone" ?>
<zk>
	<zscript><![CDATA[
	import com.laborapix.common.persondata.model.entity.Telefone;
	import com.laborapix.common.persondata.ui.TelefoneController;
	import org.zkoss.zk.ui.event.EventListener;
	import org.zkoss.zul.Messagebox;
	Execution exec = Executions.getCurrent();
	Map map = exec.getArg();
	TelefoneController telefoneController = new TelefoneController();
	boolean update = false;
	telefoneController.getBasicInformation();
	ListModel listTipoTelefoneTelefone = new BindingListModelList(
			telefoneController.getData("tipoTelefone"), true);
	long parentID;
	Set telefones;
	if (map.containsKey("teste")) {
		telefones = (Set) map.get("telefones");
		parentID = (Long) map.get("parentID");
	} else {
		Set set = new HashSet();
		telefones = set;
	}
	List listTelefone = new ArrayList(telefones);
	ListModel listmodelTelefone = new BindingListModelList(listTelefone, true);
	//SETOU OS VALORES PARA EXIBICAO DOS DADOS
	Telefone telefoneSelecionado;
	int idSelecionado;
	//Metodo que remove o elemento selecionado da lista
	//Uma mensangem e exibida, se deseja realmente excluir
	void delete() {

		if (idSelecionado != -1) {
			Messagebox.show("Deseja realmente excluir?", "Pergunta",
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION,
					new EventListener() {
						public void onEvent(Event evt) {
							switch (((Integer) evt.getData()).intValue()) {
							case Messagebox.YES: //the Yes button is pressed so delete
								listBoxTelefone.removeItemAt(idSelecionado);
								idSelecionado = -1;
								editTelefoneButton.setDisabled(true);
								deleteTelefoneButton.setDisabled(true);
								break;
							case Messagebox.NO: //do nothing 
								//the No button is pressed
								break;
							}
						}
					});
		}
	}
	void refresh() {
		List list = (List) listBoxTelefone.getListModel();
		telefones.addAll(list);
// here, i get all the elements of the list and add all in the set telefones
// i will need this data in the fornecedor file
		System.out.println("***Parent " + telefones);
		}
]]>
</zscript>
	<listbox fixedLayout="true" id="listBoxTelefone" mold="paging"
		selectedItem="@{selected}" pageSize="5" model="${listmodelTelefone}"
		onSelect="telefoneSelecionado = (Telefone)listBoxTelefone.getSelectedItem().getValue();
					idSelecionado = listBoxTelefone.getSelectedItem().getIndex();
					editTelefoneButton.setDisabled(false); 
 					deleteTelefoneButton.setDisabled(false);">
		<listhead>
			<listheader label="${c:l('Telefone.tipoTelefone.nome')}" />
			<listheader label="${c:l('Telefone.numeroTelefone')}" />
			<listheader label="${c:l('Telefone.codCidade')}" />
			<listheader label="${c:l('Telefone.codPais')}" />
		</listhead>
		<listitem self="@{each=telefone}" value="@{telefone}"
			height="24px">
			<listcell label="@{telefone.tipoTelefone.nome}"></listcell>
			<listcell label="@{telefone.numeroTelefone}"></listcell>
			<listcell label="@{telefone.codCidade}"></listcell>
			<listcell label="@{telefone.codPais}"></listcell>
		</listitem>
	</listbox>
	<separator />
		<button id="deleteTelefoneButton" label="Excluir"
		onClick="delete();" width="100px" height="32px"
		image="/web/view/resources/images/toolbar/trash_20.png"
		disabled="true" />
	<button id="bla" label="Refresh" onClick="refresh()" />
<\zk>

Can someone say how i can get the set telefones that was update in the refresh() in my telkefone.zul nad pass the set to use it in the fornecedor.zul???

thanks a lot

Nilson

delete flag offensive retag edit

2 Replies

Sort by ยป oldest newest

answered 2011-03-25 23:03:43 +0800

woodyki gravatar image woodyki
168

updated 2011-03-25 23:04:31 +0800

ZK Developer's Guide/ZK in Depth/Inter Page, App Communication

ZK Developer's Guide/ZK in Depth/Inter Page, App Communication

link publish delete flag offensive edit

answered 2011-03-26 07:51:02 +0800

caclark gravatar image caclark
1753 2 5
http://clarktrips.intltwi...

What's the flow of your app? Are Fornecedor.zul and telefone.zul being displayed on the page simultaneously? I don't see where telefone.zul is doing anything to open Fornecedor.zul. If you're going to open Fornecedor.zul from telefone.zul using Executions.createComponents(".../Fornecedor.zul", <some parent>, myArgs); then you can construct myArgs like you did arg1 in Fornecedor.zul.

But, to be honest, the first thing I'd do is refactor all of this and move all the zscript out of the .zul files into GenericForwardComposer's and tie them to the .zul with the apply attribute. I know you didn't ask for this kind of advice, but you're getting it anyway....:-)

Then, in the doAfterCompose() of the composer/controller for Fornecedor.zul, you'll have the args autowired variable ready for use.

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2011-03-25 14:00:42 +0800

Seen: 419 times

Last updated: Mar 26 '11

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More