From 18bbd814c1029089421a4766ef41be31c1df32c7 Mon Sep 17 00:00:00 2001 From: hieplq Date: Wed, 30 Jul 2014 16:28:02 +0700 Subject: [PATCH] IDEMPIERE-1555:code make link to document is duplicate --- .../adempiere/webui/adwindow/StatusBar.java | 31 +----- .../adempiere/webui/apps/ProcessDialog.java | 9 +- .../webui/apps/form/WAllocation.java | 19 +--- .../adempiere/webui/apps/form/WGenForm.java | 37 +------ .../webui/component/DocumentLink.java | 96 +++++++++++++++++++ .../webui/component/ProcessInfoDialog.java | 22 +---- 6 files changed, 110 insertions(+), 104 deletions(-) create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/DocumentLink.java diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/StatusBar.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/StatusBar.java index 53830596c9..8ed8587753 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/StatusBar.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/StatusBar.java @@ -19,6 +19,7 @@ package org.adempiere.webui.adwindow; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; +import org.adempiere.webui.component.DocumentLink; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.Tabpanel; @@ -172,9 +173,7 @@ public class StatusBar extends Panel implements EventListener if (m_logs[i].getP_Msg() != null) { if (m_logs[i].getAD_Table_ID() > 0 && m_logs[i].getRecord_ID() > 0) { - RecordLink recordLink = new RecordLink(m_logs[i].getAD_Table_ID(), m_logs[i].getRecord_ID()); - recordLink.setLabel(m_logs[i].getP_Msg()); - recordLink.addEventListener(Events.ON_CLICK, this); + DocumentLink recordLink = new DocumentLink(m_logs[i].getP_Msg(), m_logs[i].getAD_Table_ID(), m_logs[i].getRecord_ID()); if (!div.getChildren().isEmpty()) div.appendChild(new Separator("horizontal")); div.appendChild(recordLink); @@ -245,9 +244,7 @@ public class StatusBar extends Panel implements EventListener @Override public void onEvent(Event event) throws Exception { - if(event.getTarget() instanceof RecordLink){ - doZoom((RecordLink)event.getTarget()); - } else if (event.getTarget() instanceof Label) { + if (event.getTarget() instanceof Label) { showPopup(); } } @@ -257,16 +254,6 @@ public class StatusBar extends Panel implements EventListener LayoutUtils.openOverlappedWindow(messageContainer, msgPopup, "overlap_end"); } - private void doZoom(RecordLink link) { - int Record_ID = 0; - int AD_Table_ID = 0; - Record_ID = link.recordId; - AD_Table_ID = link.tableId; - if (Record_ID > 0 && AD_Table_ID > 0) { - AEnv.zoom(AD_Table_ID, Record_ID); - } - } - /** * * @return process logs @@ -304,16 +291,4 @@ public class StatusBar extends Panel implements EventListener msgPopup.appendChild(msgPopupCaption); } - class RecordLink extends A { - private static final long serialVersionUID = 3793489614175751401L; - - protected int recordId; - protected int tableId; - - protected RecordLink(int AD_Table_ID, int Record_ID) { - super(); - tableId = AD_Table_ID; - recordId = Record_ID; } - } -} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java index 29917b534a..334d13f327 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java @@ -30,6 +30,7 @@ import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Combobox; import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.DocumentLink; import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Mask; @@ -545,13 +546,7 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene Td td = new Td(); if (log.getP_Msg() != null) { if (log.getAD_Table_ID() > 0 && log.getRecord_ID() > 0) { - A recordLink = new A(); - recordLink.setLabel(log.getP_Msg()); - recordLink.setAttribute("Record_ID", - String.valueOf(log.getRecord_ID())); - recordLink.setAttribute("AD_Table_ID", - String.valueOf(log.getAD_Table_ID())); - recordLink.addEventListener(Events.ON_CLICK, this); + DocumentLink recordLink = new DocumentLink(log.getP_Msg(), log.getAD_Table_ID(), log.getRecord_ID()); td.appendChild(recordLink); } else { Text t = new Text(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WAllocation.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WAllocation.java index 58bb311beb..45780d1169 100755 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WAllocation.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WAllocation.java @@ -28,6 +28,7 @@ import java.util.logging.Level; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Checkbox; +import org.adempiere.webui.component.DocumentLink; import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; @@ -376,23 +377,7 @@ public class WAllocation extends Allocation allocateButton.setEnabled(true); if (allocation != null) { - A link = new A(allocation.getDocumentNo()); - link.setAttribute("Record_ID", allocation.get_ID()); - link.setAttribute("AD_Table_ID", allocation.get_Table_ID()); - link.addEventListener(Events.ON_CLICK, new EventListener() - { - @Override - public void onEvent(Event event) throws Exception - { - Component comp = event.getTarget(); - Integer Record_ID = (Integer) comp.getAttribute("Record_ID"); - Integer AD_Table_ID = (Integer) comp.getAttribute("AD_Table_ID"); - if (Record_ID != null && Record_ID > 0 && AD_Table_ID != null && AD_Table_ID > 0) - { - AEnv.zoom(AD_Table_ID, Record_ID); - } - } - }); + DocumentLink link = new DocumentLink(allocation.getDocumentNo(), allocation.get_Table_ID(), allocation.get_ID()); statusBar.appendChild(link); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WGenForm.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WGenForm.java index f542c5ee05..b9cb75b54f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WGenForm.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WGenForm.java @@ -28,6 +28,7 @@ import org.adempiere.webui.apps.WProcessCtl; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.DesktopTabpanel; +import org.adempiere.webui.component.DocumentLink; import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.ListboxFactory; @@ -252,11 +253,7 @@ public class WGenForm extends ADForm implements EventListener, WTableMode { log.info("Cmd=" + e.getTarget().getId()); // - if(e.getTarget() instanceof A && e.getName().equals(Events.ON_CLICK)){ - doOnClick((A)e.getTarget()); - return; - } - else if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL)) + if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL)) { dispose(); return; @@ -564,13 +561,8 @@ public class WGenForm extends ADForm implements EventListener, WTableMode Td td = new Td(); if (log.getP_Msg() != null) { if (log.getAD_Table_ID() > 0 && log.getRecord_ID() > 0) { - A recordLink = new A(); - recordLink.setLabel(log.getP_Msg()); - recordLink.setAttribute("Record_ID", - String.valueOf(log.getRecord_ID())); - recordLink.setAttribute("AD_Table_ID", - String.valueOf(log.getAD_Table_ID())); - recordLink.addEventListener(Events.ON_CLICK, this); + DocumentLink recordLink = new DocumentLink(log.getP_Msg(), log.getAD_Table_ID(), log.getRecord_ID()); + td.appendChild(recordLink); } else { Text t = new Text(); @@ -584,25 +576,4 @@ public class WGenForm extends ADForm implements EventListener, WTableMode } messageDiv.appendChild(logMessageTable); } - /** - * Handling Anchor link on end of process - * Open document window - * @param btn - */ - private void doOnClick(A btn) { - int Record_ID = 0; - int AD_Table_ID =0; - try - { - Record_ID = Integer.valueOf((String)btn.getAttribute("Record_ID")); - AD_Table_ID= Integer.valueOf((String)btn.getAttribute("AD_Table_ID")); } - catch (Exception e) { - } - - if (Record_ID > 0 && AD_Table_ID > 0) { - - AEnv.zoom(AD_Table_ID, Record_ID); - } - } -} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/DocumentLink.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/DocumentLink.java new file mode 100644 index 0000000000..67925b9e34 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/DocumentLink.java @@ -0,0 +1,96 @@ +/********************************************************************** +* This file is part of Idempiere ERP Bazaar * +* http://www.idempiere.org * +* * +* Copyright (C) Idempiere * +* * +* This program is free software; you can redistribute it and/or * +* modify it under the terms of the GNU General Public License * +* as published by the Free Software Foundation; either version 2 * +* of the License, or (at your option) any later version. * +* * +* 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., 51 Franklin Street, Fifth Floor, Boston, * +* MA 02110-1301, USA. * +* * +**********************************************************************/ + +package org.adempiere.webui.component; + +import org.adempiere.webui.apps.AEnv; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.A; + +/** + * Make link to document window + * @author hieplq + * + */ +public class DocumentLink extends A implements EventListener { + + private static final long serialVersionUID = -2950001959302619043L; + public static final String ATT_RECORD_ID = "Record_ID"; + public static final String ATT_AD_TABLE_ID = "AD_Table_ID"; + + protected int recordId; + + public int getRecordId() { + return recordId; + } + + public void setRecordId(int recordId) { + this.recordId = recordId; + } + + protected int adTableId; + + public int getAdTableId() { + return adTableId; + } + + public void setAdTableId(int adTableId) { + this.adTableId = adTableId; + } + + public DocumentLink(String label, int adTableId, int recordId){ + this(label, adTableId, recordId, null); + } + + public DocumentLink(String label, int adTableId, int recordId, EventListener clickHandle){ + super(); + if (label == null || label.trim().length() == 0) + label = String.valueOf(recordId); + + super.setLabel(label); + + setAdTableId(adTableId); + setRecordId(recordId); + + if (clickHandle == null) + this.addEventListener (Events.ON_CLICK, this); + else + this.addEventListener (Events.ON_CLICK, clickHandle); + + } + + /** + * Go to document window + */ + @Override + public void onEvent(Event event) throws Exception { + if(event.getTarget() instanceof DocumentLink){ + DocumentLink documentLink = (DocumentLink)event.getTarget(); + if (documentLink.getAdTableId() > 0 && documentLink.getAdTableId() > 0) + AEnv.zoom(documentLink.getAdTableId(), documentLink.getRecordId()); + } + } + +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java index d149288bf4..54c58fd727 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java @@ -98,13 +98,8 @@ public class ProcessInfoDialog extends Window implements EventListener { if (log.getAD_Table_ID() > 0 && log.getRecord_ID() > 0) { - A recordLink = new A(); - recordLink.setLabel(sb.toString()); - recordLink.setAttribute("Record_ID", - String.valueOf(log.getRecord_ID())); - recordLink.setAttribute("AD_Table_ID", - String.valueOf(log.getAD_Table_ID())); - recordLink.addEventListener(Events.ON_CLICK, this); + DocumentLink recordLink = new DocumentLink(sb.toString(), log.getAD_Table_ID(), log.getRecord_ID()); + pnlMessage.appendChild(recordLink); } else { Text recordText = new Text(sb.toString()); @@ -153,18 +148,7 @@ public class ProcessInfoDialog extends Window implements EventListener { public void onEvent(Event event) throws Exception { if (event == null) return; - if (event.getTarget() instanceof A) { - int Record_ID = 0; - int AD_Table_ID = 0; - Record_ID = Integer.valueOf((String) event.getTarget() - .getAttribute("Record_ID")); - AD_Table_ID = Integer.valueOf((String) event.getTarget() - .getAttribute("AD_Table_ID")); - - if (Record_ID > 0 && AD_Table_ID > 0) { - AEnv.zoom(AD_Table_ID, Record_ID); - } - } else if (event.getTarget() == btnOk) { + if (event.getTarget() == btnOk) { this.detach(); } }