IDEMPIERE-664 Zk: Zoom on empty field should goes to create new record mode.

This commit is contained in:
Heng Sin Low 2013-02-25 19:45:07 +08:00
parent e40910d646
commit 4216a8caed
3 changed files with 82 additions and 3 deletions

View File

@ -460,6 +460,8 @@ public class BreadCrumb extends Div implements EventListener<Event> {
} }
else else
{ {
if (text.indexOf("-1/0") >= 0)
text = text.replace("-1/0", "0/0");
btnRecordInfo.setLabel(text); btnRecordInfo.setLabel(text);
} }

View File

@ -26,7 +26,9 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.util.Callback;
import org.adempiere.webui.ValuePreference; import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.adwindow.ADWindow;
import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Searchbox; import org.adempiere.webui.component.Searchbox;
import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuEvent;
@ -34,19 +36,24 @@ import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.event.DialogEvents; 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.exception.ApplicationException;
import org.adempiere.webui.factory.InfoManager; import org.adempiere.webui.factory.InfoManager;
import org.adempiere.webui.grid.WQuickEntry; 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.window.WFieldRecordInfo; import org.adempiere.webui.window.WFieldRecordInfo;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.model.Lookup; import org.compiere.model.Lookup;
import org.compiere.model.MLookup; import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory; import org.compiere.model.MLookupFactory;
import org.compiere.model.MQuery;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Util;
import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.Executions;
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;
@ -269,14 +276,46 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value
} }
public void actionZoom() public void actionZoom()
{
if (getValue() == null || Util.isEmpty(getValue().toString()))
{
onNewRecord();
}
else
{ {
AEnv.actionZoom(lookup, getValue()); AEnv.actionZoom(lookup, getValue());
} }
}
private void actionZoom(Object value) private void actionZoom(Object value)
{ {
AEnv.actionZoom(lookup, value); AEnv.actionZoom(lookup, value);
} }
private void onNewRecord() {
try
{
MQuery query = new MQuery("");
query.addRestriction("1=2");
query.setRecordCount(0);
SessionManager.getAppDesktop().openWindow(lookup.getZoom(query), query, new Callback<ADWindow>() {
@Override
public void onCallback(ADWindow result) {
if(result == null)
return;
GridTab tab = result.getADWindowContent().getActiveGridTab();
tab.dataNew(false);
}
});
}
catch (Exception e)
{
throw new ApplicationException(e.getMessage(), e);
}
}
public void onMenu(ContextMenuEvent evt) public void onMenu(ContextMenuEvent evt)
{ {
if (WEditorPopupMenu.REQUERY_EVENT.equals(evt.getContextEvent())) if (WEditorPopupMenu.REQUERY_EVENT.equals(evt.getContextEvent()))

View File

@ -22,20 +22,26 @@ import java.beans.PropertyChangeEvent;
import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener; import javax.swing.event.ListDataListener;
import org.adempiere.util.Callback;
import org.adempiere.webui.ValuePreference; import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.adwindow.ADWindow;
import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Combobox; import org.adempiere.webui.component.Combobox;
import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuEvent;
import org.adempiere.webui.event.ContextMenuListener; import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.DialogEvents;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.exception.ApplicationException;
import org.adempiere.webui.grid.WQuickEntry; import org.adempiere.webui.grid.WQuickEntry;
import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.window.WFieldRecordInfo; import org.adempiere.webui.window.WFieldRecordInfo;
import org.adempiere.webui.window.WLocationDialog; import org.adempiere.webui.window.WLocationDialog;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.model.Lookup; import org.compiere.model.Lookup;
import org.compiere.model.MBPartnerLocation; import org.compiere.model.MBPartnerLocation;
import org.compiere.model.MLocation; import org.compiere.model.MLocation;
import org.compiere.model.MQuery;
import org.compiere.model.MTable; import org.compiere.model.MTable;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
@ -421,9 +427,41 @@ ContextMenuListener, IZoomableEditor
* @see org.adempiere.webui.editor.IZoomableEditor#actionZoom() * @see org.adempiere.webui.editor.IZoomableEditor#actionZoom()
*/ */
public void actionZoom() public void actionZoom()
{
if (getValue() == null)
{
onNewRecord();
}
else
{ {
AEnv.actionZoom(lookup, getValue()); AEnv.actionZoom(lookup, getValue());
} }
}
private void onNewRecord() {
try
{
MQuery query = new MQuery("");
query.addRestriction("1=2");
query.setRecordCount(0);
SessionManager.getAppDesktop().openWindow(lookup.getZoom(query), query, new Callback<ADWindow>() {
@Override
public void onCallback(ADWindow result) {
if(result == null)
return;
GridTab tab = result.getADWindowContent().getActiveGridTab();
tab.dataNew(false);
}
});
}
catch (Exception e)
{
throw new ApplicationException(e.getMessage(), e);
}
}
/** /**
* Action - Special Quick Entry Screen * Action - Special Quick Entry Screen