IDEMPIERE-1338:Create a record from Info window

This commit is contained in:
hieplq 2015-08-04 04:22:52 +08:00
parent 41efd70ce9
commit 8159e67f60
3 changed files with 57 additions and 4 deletions

View File

@ -446,7 +446,7 @@ public class WQuickEntry extends Window implements EventListener<Event>, ValueCh
public int getRecord_ID() public int getRecord_ID()
{ {
if (quickPOs.get(0) == null) if (quickPOs.isEmpty() || quickPOs.get(0) == null)
return 0; return 0;
return quickPOs.get(0).get_ID(); return quickPOs.get(0).get_ID();

View File

@ -43,8 +43,10 @@ import org.adempiere.webui.editor.WEditor;
import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.editor.WSearchEditor;
import org.adempiere.webui.editor.WTableDirEditor; import org.adempiere.webui.editor.WTableDirEditor;
import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.editor.WebEditorFactory;
import org.adempiere.webui.event.DialogEvents;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.event.ValueChangeListener;
import org.adempiere.webui.grid.WQuickEntry;
import org.adempiere.webui.panel.InfoPanel; import org.adempiere.webui.panel.InfoPanel;
import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.theme.ThemeManager;
@ -71,12 +73,14 @@ import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Util; import org.compiere.util.Util;
import org.compiere.util.ValueNamePair; import org.compiere.util.ValueNamePair;
import org.zkoss.zk.au.out.AuEcho;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.SwipeEvent; import org.zkoss.zk.ui.event.SwipeEvent;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Center; import org.zkoss.zul.Center;
import org.zkoss.zul.Checkbox; import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Comboitem; import org.zkoss.zul.Comboitem;
@ -2005,5 +2009,41 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
return true; return true;
} }
@Override
protected boolean hasNew() {
return getADWindowID () > 0;
}
/**
* Get id of window link with main table of this info window
* @param tableName
* @return
*/
protected int getADWindowID() {
String isSOTrx = Env.getContext(Env.getCtx(), p_WindowNo, "IsSOTrx");
if (!isLookup() && Util.isEmpty(isSOTrx)) {
isSOTrx = "Y";
}
return super.getAD_Window_ID(MTable.getTableName(Env.getCtx(), infoWindow.getAD_Table_ID()), isSOTrx.equalsIgnoreCase("Y"));
}
@Override
protected void newRecordAction() {
final WQuickEntry vqe = new WQuickEntry (0, getADWindowID());
vqe.loadRecord (0);
vqe.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
Clients.response(new AuEcho(InfoWindow.this, "onQueryCallback", null));
}
});
vqe.setVisible(true);
AEnv.showWindow(vqe);
}
} }

View File

@ -123,10 +123,8 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
protected final static String ON_RUN_PROCESS = "onRunProcess"; protected final static String ON_RUN_PROCESS = "onRunProcess";
// attribute key of info process // attribute key of info process
protected final static String ATT_INFO_PROCESS_KEY = "INFO_PROCESS"; protected final static String ATT_INFO_PROCESS_KEY = "INFO_PROCESS";
protected int pageSize; protected int pageSize;
protected MInfoRelated[] relatedInfoList; protected MInfoRelated[] relatedInfoList;
public static InfoPanel create (int WindowNo, public static InfoPanel create (int WindowNo,
String tableName, String keyColumn, String value, String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
@ -246,6 +244,7 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
} }
confirmPanel = new ConfirmPanel(true, true, true, true, true, true); // Elaine 2008/12/16 confirmPanel = new ConfirmPanel(true, true, true, true, true, true); // Elaine 2008/12/16
confirmPanel.addComponentsLeft(confirmPanel.createButton(ConfirmPanel.A_NEW));
confirmPanel.addActionListener(Events.ON_CLICK, this); confirmPanel.addActionListener(Events.ON_CLICK, this);
confirmPanel.setHflex("1"); confirmPanel.setHflex("1");
@ -253,6 +252,7 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
confirmPanel.getButton(ConfirmPanel.A_CUSTOMIZE).setVisible(hasCustomize()); confirmPanel.getButton(ConfirmPanel.A_CUSTOMIZE).setVisible(hasCustomize());
confirmPanel.getButton(ConfirmPanel.A_HISTORY).setVisible(hasHistory()); confirmPanel.getButton(ConfirmPanel.A_HISTORY).setVisible(hasHistory());
confirmPanel.getButton(ConfirmPanel.A_ZOOM).setVisible(hasZoom()); confirmPanel.getButton(ConfirmPanel.A_ZOOM).setVisible(hasZoom());
confirmPanel.getButton(ConfirmPanel.A_NEW).setVisible(hasNew());
// //
if (!isLookup()) if (!isLookup())
{ {
@ -1189,7 +1189,6 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
confirmPanel.getButton(ConfirmPanel.A_ZOOM).setEnabled(!enable?enable : (contentPanel.getSelectedCount() == 1) ); //red1 only zoom for single record confirmPanel.getButton(ConfirmPanel.A_ZOOM).setEnabled(!enable?enable : (contentPanel.getSelectedCount() == 1) ); //red1 only zoom for single record
if (hasProcess()) if (hasProcess())
confirmPanel.getButton(ConfirmPanel.A_PROCESS).setEnabled(enable); confirmPanel.getButton(ConfirmPanel.A_PROCESS).setEnabled(enable);
// IDEMPIERE-1334 start // IDEMPIERE-1334 start
for (Button btProcess : btProcessList){ for (Button btProcess : btProcessList){
btProcess.setEnabled(enable); btProcess.setEnabled(enable);
@ -1262,6 +1261,12 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
* @return true if it has zoom (default false) * @return true if it has zoom (default false)
*/ */
protected boolean hasZoom() {return false;} protected boolean hasZoom() {return false;}
/**
* Has new function for create new record (false)
* To be overwritten by concrete classes
* @return
*/
protected boolean hasNew() {return false;}
/** /**
* Save Selection Details * Save Selection Details
* To be overwritten by concrete classes * To be overwritten by concrete classes
@ -1378,6 +1383,9 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
if (isLookup()) if (isLookup())
this.detach(); this.detach();
} }
}else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_NEW)))
{
newRecordAction ();
} }
// IDEMPIERE-1334 handle event click into process button start // IDEMPIERE-1334 handle event click into process button start
else if (ON_RUN_PROCESS.equals(event.getName())){ else if (ON_RUN_PROCESS.equals(event.getName())){
@ -1706,6 +1714,11 @@ public abstract class InfoPanel extends Window implements EventListener<Event>,
} }
} }
/**
* process action when user click to new button
*/
protected void newRecordAction (){}
public void addValueChangeListener(ValueChangeListener listener) public void addValueChangeListener(ValueChangeListener listener)
{ {
if (listener == null) if (listener == null)