diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LayoutUtils.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LayoutUtils.java
index 6610153249..ebcfb6a8f1 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LayoutUtils.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LayoutUtils.java
@@ -19,6 +19,7 @@ import org.zkoss.zk.ui.HtmlBasedComponent;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Div;
+import org.zkoss.zul.Window;
/**
*
@@ -72,4 +73,34 @@ public final class LayoutUtils {
return div;
}
+
+ /**
+ * open popup window overlapping the ref component
+ * @param ref
+ * @param window
+ */
+ public static void openPopupWindow(Component ref, Window window) {
+ openPopupWindow(ref, window, "overlap");
+ }
+
+ /**
+ * open popup window relative to the ref component
+ * @param ref
+ * @param window
+ * @param position
+ */
+ public static void openPopupWindow(Component ref, Window window, String position) {
+ if (window.getPage() == null)
+ window.setPage(ref.getPage());
+ StringBuilder script = new StringBuilder();
+ script.append("_idempiere_popup_window('#")
+ .append(ref.getUuid())
+ .append("','#")
+ .append(window.getUuid())
+ .append("','")
+ .append(position)
+ .append("');");
+ window.doPopup();
+ Clients.response("_openPopupWindow_", new AuScript(window, script.toString()));
+ }
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/TimelineEventFeed.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/TimelineEventFeed.java
index fe6b8506e5..8004ea8f32 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/TimelineEventFeed.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/TimelineEventFeed.java
@@ -123,11 +123,13 @@ public class TimelineEventFeed extends HttpServlet {
}
if (slot.getMAssignment() != null) {
//encode assignment id as coordinate x
- String link = "Edit";
+ String link = "Edit";
xml.append("\r\n").append(XMLs.encodeText(link));
}
xml.append("\r\n").append("").append("\r\n");
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java
index 0af7f0e53d..1fd8fd48a7 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java
@@ -7,6 +7,7 @@ import java.text.NumberFormat;
import java.util.logging.Level;
import org.adempiere.util.Callback;
+import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.EditorBox;
import org.adempiere.webui.event.ContextMenuEvent;
@@ -162,7 +163,8 @@ public class WAssignmentEditor extends WEditor implements ContextMenuListener {
processNewValue(oldValue, ma);
}
});
- AEnv.showWindow(vad);
+ vad.setTitle(null);
+ LayoutUtils.openPopupWindow(this.getComponent().getTextbox(), vad);
}
// Start InfoSchedule directly
else
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java
index c4b603c802..d2ca26b81c 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java
@@ -20,6 +20,7 @@ package org.adempiere.webui.editor;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.component.Locationbox;
import org.adempiere.webui.event.ContextMenuEvent;
@@ -189,10 +190,8 @@ public class WLocationEditor extends WEditor implements EventListener, Pr
setValue(ii);
}
});
- getComponent().appendChild(ld);
- ld.setPosition("parent");
ld.setTitle(null);
- ld.doPopup();
+ LayoutUtils.openPopupWindow(getComponent(), ld);
}
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java
index 7e2803d6d4..31f72186eb 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java
@@ -24,6 +24,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
+import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.EditorBox;
@@ -249,10 +250,8 @@ public class WLocatorEditor extends WEditor implements EventListener, Pro
}
});
// display
- getComponent().appendChild(ld);
- ld.setPosition("parent");
ld.setTitle(null);
- ld.doPopup();
+ LayoutUtils.openPopupWindow(getComponent(), ld);
}
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java
index 2fa4f93843..c70c99f134 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java
@@ -18,13 +18,13 @@ package org.adempiere.webui.panel;
import java.text.DateFormat;
import java.util.Date;
-import java.util.TimeZone;
import java.util.logging.Level;
-import org.adempiere.webui.apps.AEnv;
+import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Panel;
import org.adempiere.webui.component.ToolBarButton;
import org.adempiere.webui.event.DialogEvents;
+import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.window.InfoSchedule;
import org.adempiere.webui.window.WAssignmentDialog;
import org.compiere.model.MResourceAssignment;
@@ -127,7 +127,8 @@ public class WSchedule extends Panel implements EventListener
hourBand.setIntervalUnit("hour");
hourBand.setWidth("40%");
hourBand.setIntervalPixels(40);
- hourBand.setTimeZone(TimeZone.getDefault());
+ hourBand.setTimeZone(SessionManager.getAppDesktop().getClientInfo().timeZone);
+ hourBand.setId("WScheduleHourBand");
if (dayBand != null)
dayBand.detach();
@@ -137,9 +138,10 @@ public class WSchedule extends Panel implements EventListener
dayBand.setWidth("35%");
dayBand.setIntervalPixels(100);
dayBand.setSyncWith(hourBand.getId());
- dayBand.setTimeZone(TimeZone.getDefault());
+ dayBand.setTimeZone(SessionManager.getAppDesktop().getClientInfo().timeZone);
// listening band scroll event
dayBand.addEventListener("onBandScroll", this);
+ dayBand.setId("WScheduleDayBand");
if (mthBand != null)
mthBand.detach();
@@ -149,7 +151,7 @@ public class WSchedule extends Panel implements EventListener
mthBand.setWidth("25%");
mthBand.setIntervalPixels(150);
mthBand.setSyncWith(dayBand.getId());
- mthBand.setTimeZone(TimeZone.getDefault());
+ mthBand.setTimeZone(SessionManager.getAppDesktop().getClientInfo().timeZone);
}
/**
@@ -166,7 +168,7 @@ public class WSchedule extends Panel implements EventListener
// if (m_center == null || date.getTime() != m_center.getTime())
// hourBand.scrollToCenter(date);
//
-
+
String feedUrl = "timeline?S_Resource_ID=" + S_Resource_ID + "&date=" + DateFormat.getInstance().format(date)
+ "&uuid=" + button.getUuid() + "&tlid=" + timeLine.getUuid();
hourBand.setEventSourceUrl(feedUrl);
@@ -184,17 +186,19 @@ public class WSchedule extends Panel implements EventListener
MouseEvent me = (MouseEvent) event;
if (me.getX() > 0) {
MResourceAssignment assignment = new MResourceAssignment(Env.getCtx(), me.getX(), null);
- final WAssignmentDialog wad = new WAssignmentDialog(assignment, false, infoSchedule.isCreateNew());
- wad.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() {
+ final WAssignmentDialog assignmentDialog = new WAssignmentDialog(assignment, false, infoSchedule.isCreateNew());
+ assignmentDialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
- if (!wad.isCancelled()) {
- _assignmentDialogResult = wad.getMResourceAssignment();
+ if (!assignmentDialog.isCancelled()) {
+ _assignmentDialogResult = assignmentDialog.getMResourceAssignment();
Events.echoEvent("onAssignmentCallback", WSchedule.this, null);
}
}
});
- AEnv.showWindow(wad);
+ assignmentDialog.setTitle(null);
+ LayoutUtils.openPopupWindow(this, assignmentDialog, "at_pointer");
+ Events.postEvent(new Event(Events.ON_CLICK, assignmentDialog.getDateFrom()));
}
} else if (event instanceof BandScrollEvent){
BandScrollEvent e = (BandScrollEvent) event;
@@ -207,5 +211,4 @@ public class WSchedule extends Panel implements EventListener
}
}
}
-
} // WSchedule
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java
index a80b9e4baa..74838ff7c5 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java
@@ -27,6 +27,7 @@ import java.util.GregorianCalendar;
import java.util.logging.Level;
import org.adempiere.util.Callback;
+import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.ConfirmPanel;
@@ -52,6 +53,7 @@ import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.compiere.util.TimeUtil;
+import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
@@ -103,10 +105,17 @@ public class InfoSchedule extends Window implements EventListener
super();
setTitle(Msg.getMsg(Env.getCtx(), "InfoSchedule"));
if (createNew)
- setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
+ {
+ setAttribute(Window.MODE_KEY, Window.MODE_POPUP);
+ this.setWidth("600px");
+ }
else
- setAttribute(Window.MODE_KEY, Window.MODE_OVERLAPPED);
- this.setWidth("600px");
+ {
+ setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED);
+ this.setWidth("100%");
+ this.setHeight("100%");
+ }
+
// this.setHeight("600px");
this.setClosable(true);
this.setBorder("normal");
@@ -138,7 +147,9 @@ public class InfoSchedule extends Window implements EventListener
catch(Exception ex)
{
log.log(Level.SEVERE, "InfoSchedule", ex);
- }
+ }
+ AEnv.showWindow(this);
+ displayCalendar();
} // InfoSchedule
/**
@@ -174,7 +185,8 @@ public class InfoSchedule extends Window implements EventListener
//
private WSchedule schedulePane = new WSchedule(this);
private StatusBarPanel statusBar = new StatusBarPanel();
- private ConfirmPanel confirmPanel = new ConfirmPanel(true);
+ private ConfirmPanel confirmPanel = null;
+ private Button btnNew;
/**
* Static Layout
@@ -226,7 +238,11 @@ public class InfoSchedule extends Window implements EventListener
schedulePane.setWidth("100%");
schedulePane.setHeight("400px");
Div div = new Div();
- div.appendChild(confirmPanel);
+ if (m_createNew)
+ {
+ confirmPanel = new ConfirmPanel(true);
+ div.appendChild(confirmPanel);
+ }
div.appendChild(statusBar);
mainLayout.appendChild(div);
@@ -255,18 +271,17 @@ public class InfoSchedule extends Window implements EventListener
bNext.addEventListener(Events.ON_CLICK, this);
//
- //
- confirmPanel.addActionListener(Events.ON_CLICK, this);
+ //
if (createNew) {
- Button btnNew = new Button();
+ confirmPanel.addActionListener(Events.ON_CLICK, this);
+ btnNew = new Button();
btnNew.setName("btnNew");
btnNew.setId("New");
btnNew.setSrc("/images/New24.png");
confirmPanel.addComponentsLeft(btnNew);
btnNew.addEventListener(Events.ON_CLICK, this);
- }
- displayCalendar();
+ }
} // dynInit
/**
@@ -569,7 +584,8 @@ public class InfoSchedule extends Window implements EventListener
mAssignmentCallback(vad.getMResourceAssignment());
}
});
- AEnv.showWindow(vad);
+ vad.setTitle(null);
+ LayoutUtils.openPopupWindow(btnNew, vad, "before_start");
} else {
FDialog.error(0, this, "No available time slot for the selected day.");
}
@@ -587,6 +603,17 @@ public class InfoSchedule extends Window implements EventListener
m_dateFrom = new Timestamp(date.getTime());
fieldDate.setValue(m_dateFrom); // Elaine 2008/12/15
}
+
+ /* (non-Javadoc)
+ * @see org.zkoss.zk.ui.AbstractComponent#onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)
+ */
+ @Override
+ public void onPageAttached(Page newpage, Page oldpage) {
+ super.onPageAttached(newpage, oldpage);
+ if (newpage != null) {
+ displayCalendar();
+ }
+ }
/**
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java
index fc4b8e3af6..438ad54f28 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java
@@ -30,7 +30,6 @@ import java.util.logging.Level;
import org.adempiere.util.Callback;
import org.adempiere.webui.LayoutUtils;
-import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Datebox;
@@ -114,6 +113,8 @@ public class WAssignmentDialog extends Window implements EventListener
log.log(Level.SEVERE, "", e);
}
setDisplay(); // from mAssignment
+ setWidth("600px");
+ setSizable(true);
//
} // VAssignmentDialog
@@ -377,17 +378,8 @@ public class WAssignmentDialog extends Window implements EventListener
// Zoom - InfoResource
else if (e.getTarget().getId().equals("Zoom"))
{
- InfoSchedule is = new InfoSchedule (m_mAssignment, true, new Callback() {
- @Override
- public void onCallback(MResourceAssignment result) {
- if (result != null)
- {
- m_mAssignment = result;
- // setDisplay();
- detach();
- }
- }
- });
+ setVisible(false);
+ Events.echoEvent("onShowSchedule", this, null);
}
// cancel - return
@@ -417,17 +409,40 @@ public class WAssignmentDialog extends Window implements EventListener
}
}
+ public void onShowSchedule()
+ {
+ InfoSchedule is = new InfoSchedule (m_mAssignment, true, new Callback() {
+ @Override
+ public void onCallback(MResourceAssignment result) {
+ if (result != null)
+ {
+ m_mAssignment = result;
+ // setDisplay();
+ detach();
+ }
+ else
+ {
+ setVisible(true);
+ }
+ }
+ });
+ }
+
private void getDateAndTimeFrom(Calendar date) {
Date dateFrom = fDateFrom.getValue();
Date timeFrom = fTimeFrom.getValue();
date.setTime(dateFrom);
Calendar time = new GregorianCalendar();
time.setTime(timeFrom);
- date.set(Calendar.HOUR, time.get(Calendar.HOUR));
+ date.set(Calendar.HOUR_OF_DAY, time.get(Calendar.HOUR_OF_DAY));
date.set(Calendar.MINUTE, time.get(Calendar.MINUTE));
}
public boolean isCancelled() {
return m_cancel;
}
+
+ public Datebox getDateFrom() {
+ return fDateFrom;
+ }
} // VAssignmentDialog
diff --git a/org.adempiere.ui.zk/js/layout.js b/org.adempiere.ui.zk/js/layout.js
index 567965dceb..48aa141cce 100644
--- a/org.adempiere.ui.zk/js/layout.js
+++ b/org.adempiere.ui.zk/js/layout.js
@@ -10,13 +10,10 @@ function _ad_deferBDL(uuid) {
if (cmp) { cmp.resize(); }
}
-function ad_closeBuble(uuid) {
- var cmp = zk.Widget.$(uuid);
- if (cmp) {
- for(var i=0;i
+
diff --git a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
index 1d4d35a809..1591fdb867 100644
--- a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
+++ b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
@@ -596,4 +596,8 @@ div.z-vfiletree-body td.menu-tree-cell {
<%-- dashlet --%>
.z-panel-hl .z-panel-header {
padding: 0 0 2px 0;
+}
+
+div.simileAjax-bubble-container {
+ z-index: 2800 !important;
}
\ No newline at end of file