IDEMPIERE-5317 Improvements for Workflow Activities (#1366)

* IDEMPIERE-5317 Improvements for Workflow Activities

IDEMPIERE-5317 #resolve

* IDEMPIERE-5317 Improvements for Workflow Activities

* tooltip text for button
* minor layout tweaks
* minor clean up
* processing prompt for refresh

Co-authored-by: hengsin <hengsin@gmail.com>
This commit is contained in:
Carlos Ruiz 2022-06-15 11:09:43 +02:00 committed by GitHub
parent 8f6f6dbbb3
commit 71b97d7a40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 51 additions and 23 deletions

View File

@ -22,6 +22,8 @@ import java.util.logging.Level;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListHeader;
@ -53,11 +55,13 @@ import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.Trx;
import org.compiere.util.Util;
import org.compiere.util.ValueNamePair;
import org.compiere.wf.MWFActivity;
import org.compiere.wf.MWFNode;
import org.compiere.wf.MWFProcess;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
@ -69,6 +73,7 @@ import org.zkoss.zul.Hbox;
import org.zkoss.zul.Html;
import org.zkoss.zul.North;
import org.zkoss.zul.South;
import org.zkoss.zul.Vlayout;
/**
* Direct port from WFActivity
@ -81,7 +86,7 @@ public class WWFActivity extends ADForm implements EventListener<Event>
/**
*
*/
private static final long serialVersionUID = -8405802852868437716L;
private static final long serialVersionUID = -1658595186719510159L;
/** Window No */
private int m_WindowNo = 0;
/** Open Activities */
@ -113,14 +118,14 @@ public class WWFActivity extends ADForm implements EventListener<Event>
private Textbox fTextMsg = new Textbox();
private Button bOK = new Button();
private WSearchEditor fForward = null; // dynInit
private Label lForward = new Label(Msg.getMsg(Env.getCtx(), "Forward"));
private Label lOptional = new Label("(" + Msg.translate(Env.getCtx(), "Optional") + ")");
private Label lForward = new Label(Msg.getMsg(Env.getCtx(), "Forward") + " (" + Msg.translate(Env.getCtx(), "Optional") + ")");
private StatusBarPanel statusBar = new StatusBarPanel();
private Button bRefresh = new Button();
private ListModelTable model = null;
private WListbox listbox = new WListbox();
private final static String HISTORY_DIV_START_TAG = "<div style='height: 100px; border: 1px solid #7F9DB9;'>";
private final static String HISTORY_DIV_START_TAG = "<div style='overflow-y:scroll;height: 100px; border: 1px solid #7F9DB9;'>";
public WWFActivity()
{
super();
@ -133,13 +138,18 @@ public class WWFActivity extends ADForm implements EventListener<Event>
fAnswerList.setMold("select");
if (ThemeManager.isUseFontIconForImage()) {
if (ThemeManager.isUseFontIconForImage()) {
bZoom.setIconSclass("z-icon-Zoom");
bOK.setIconSclass("z-icon-Ok");
bRefresh.setIconSclass("z-icon-Refresh");
} else {
bZoom.setImage(ThemeManager.getThemeResource("images/Zoom16.png"));
bOK.setImage(ThemeManager.getThemeResource("images/Ok16.png"));
bRefresh.setImage(ThemeManager.getThemeResource("images/Refresh16.png"));
}
setTooltipText(bZoom, "Zoom");
setTooltipText(bOK, "Ok");
setTooltipText(bRefresh, "Refresh");
MLookup lookup = MLookupFactory.get(Env.getCtx(), m_WindowNo,
0, 10443, DisplayType.Search);
@ -150,14 +160,26 @@ public class WWFActivity extends ADForm implements EventListener<Event>
display(-1);
}
private void setTooltipText(Button btn, String key) {
String text = Util.cleanAmp(Msg.translate(Env.getCtx(), key));
if (!Util.isEmpty(text, true))
btn.setTooltiptext(text);
}
private void init()
{
Grid grid = new Grid();
ZKUpdateUtil.setWidth(grid, "100%");
ZKUpdateUtil.setHeight(grid, "100%");
grid.setStyle("margin:0; padding:0; position: absolute; align: center; valign: center;");
grid.setStyle("margin:0; padding:0;");
grid.makeNoStrip();
grid.setOddRowSclass("even");
Columns columns = new Columns();
grid.appendChild(columns);
Column column = new Column();
ZKUpdateUtil.setWidth(column, "30%");
columns.appendChild(column);
column = new Column();
ZKUpdateUtil.setWidth(column, "70%");
columns.appendChild(column);
Rows rows = new Rows();
grid.appendChild(rows);
@ -169,7 +191,6 @@ public class WWFActivity extends ADForm implements EventListener<Event>
div.appendChild(lNode);
row.appendChild(div);
row.appendChild(fNode);
ZKUpdateUtil.setWidth(fNode, "100%");
ZKUpdateUtil.setHflex(fNode, "true");
fNode.setReadonly(true);
@ -182,7 +203,6 @@ public class WWFActivity extends ADForm implements EventListener<Event>
row.appendChild(div);
row.appendChild(fDescription);
fDescription.setMultiline(true);
ZKUpdateUtil.setWidth(fDescription, "100%");
ZKUpdateUtil.setHflex(fDescription, "true");
fDescription.setReadonly(true);
@ -195,10 +215,8 @@ public class WWFActivity extends ADForm implements EventListener<Event>
row.appendChild(fHelp);
fHelp.setMultiline(true);
fHelp.setRows(3);
ZKUpdateUtil.setWidth(fHelp, "100%");
ZKUpdateUtil.setHflex(fHelp, "true");
fHelp.setReadonly(true);
row.appendChild(new Label());
row = new Row();
rows.appendChild(row);
@ -208,7 +226,6 @@ public class WWFActivity extends ADForm implements EventListener<Event>
row.appendChild(div);
row.appendChild(fHistory);
ZKUpdateUtil.setHflex(fHistory, "true");
row.appendChild(new Label());
row = new Row();
rows.appendChild(row);
@ -221,9 +238,9 @@ public class WWFActivity extends ADForm implements EventListener<Event>
ZKUpdateUtil.setHflex(fAnswerText, "true");
hbox.appendChild(fAnswerList);
hbox.appendChild(fAnswerButton);
fAnswerButton.addEventListener(Events.ON_CLICK, this);
hbox.appendChild(bZoom);
row.appendChild(hbox);
row.appendChild(bZoom);
fAnswerButton.addEventListener(Events.ON_CLICK, this);
bZoom.addEventListener(Events.ON_CLICK, this);
row = new Row();
@ -233,10 +250,8 @@ public class WWFActivity extends ADForm implements EventListener<Event>
div.appendChild(lTextMsg);
row.appendChild(div);
row.appendChild(fTextMsg);
ZKUpdateUtil.setHflex(fTextMsg, "true");
fTextMsg.setMultiline(true);
ZKUpdateUtil.setWidth(fTextMsg, "100%");
row.appendChild(new Label());
row = new Row();
rows.appendChild(row);
@ -246,15 +261,16 @@ public class WWFActivity extends ADForm implements EventListener<Event>
row.appendChild(div);
hbox = new Hbox();
hbox.appendChild(fForward.getComponent());
hbox.appendChild(lOptional);
hbox.appendChild(bOK);
hbox.appendChild(bRefresh);
row.appendChild(hbox);
row.appendChild(bOK);
bOK.addEventListener(Events.ON_CLICK, this);
bRefresh.addEventListener(Events.ON_CLICK, this);
Borderlayout layout = new Borderlayout();
ZKUpdateUtil.setWidth(layout, "100%");
ZKUpdateUtil.setHeight(layout, "100%");
layout.setStyle("background-color: transparent; position: absolute;");
layout.setStyle("background-color: transparent; position: relative;");
North north = new North();
north.appendChild(listbox);
@ -267,7 +283,11 @@ public class WWFActivity extends ADForm implements EventListener<Event>
listbox.addEventListener(Events.ON_SELECT, this);
Center center = new Center();
center.appendChild(grid);
Vlayout vlayout = new Vlayout();
vlayout.appendChild(grid);
vlayout.setWidth("100%");
vlayout.setHeight("99%");
center.appendChild(vlayout);
layout.appendChild(center);
center.setStyle("background-color: transparent; overflow:auto");
ZKUpdateUtil.setVflex(grid, "1");
@ -279,7 +299,7 @@ public class WWFActivity extends ADForm implements EventListener<Event>
south.setStyle("background-color: transparent");
this.appendChild(layout);
this.setStyle("height: 100%; width: 100%; position: absolute;");
this.setStyle("height: 100%; width: 100%; position: relative;");
}
public void onEvent(Event event) throws Exception
@ -291,6 +311,14 @@ public class WWFActivity extends ADForm implements EventListener<Event>
{
if (comp == bZoom)
cmd_zoom();
else if (comp == bRefresh)
{
Clients.showBusy(Msg.getMsg(Env.getCtx(), "Processing"));
Executions.schedule(getDesktop(), e -> {
loadActivities();
Clients.clearBusy();
}, new Event("onRefresh"));
}
else if (comp == bOK)
{
Clients.showBusy(Msg.getMsg(Env.getCtx(), "Processing"));