IDEMPIERE-3340 Adaxa's User Favorite which allow user to organize their menu, create folders (#569)
* Login Automatic Open Sequence -> buttons don't require names * Login Automatic Open Sequence -> buttons look bad with non-font icons * Clicking on + on an item of the favourites throws an NPE * Implement same approach about checking for new button restricted on menu search, menu popup and quick entry popup
This commit is contained in:
parent
373225a62c
commit
0669760711
|
@ -14,21 +14,5 @@ INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Expand/Collapse Tree',0,0,'Y',TO_DATE('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,200658,'Tooltip_ExpandCollapseTree','D','26463bcc-7a17-444c-aab4-51fda0fde442')
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Expand/Collapse Tree',0,0,'Y',TO_DATE('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,200658,'Tooltip_ExpandCollapseTree','D','26463bcc-7a17-444c-aab4-51fda0fde442')
|
||||||
;
|
;
|
||||||
|
|
||||||
-- May 7, 2020 7:15:41 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Down',0,0,'Y',TO_DATE('2020-05-07 19:15:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-05-07 19:15:40','YYYY-MM-DD HH24:MI:SS'),100,200608,'MoveDown','D','525bf4d4-5ce3-4a7d-9081-2e3b96708cf1')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:04 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Up',0,0,'Y',TO_DATE('2020-05-07 19:16:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-05-07 19:16:03','YYYY-MM-DD HH24:MI:SS'),100,200609,'MoveUp','D','bdf56785-ce50-49ce-a2c5-d20a1a08ec96')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:17 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Left',0,0,'Y',TO_DATE('2020-05-07 19:16:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-05-07 19:16:16','YYYY-MM-DD HH24:MI:SS'),100,200610,'MoveLeft','D','f0082f8f-7ecf-4682-9ee2-593b6b21fe41')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:31 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Right',0,0,'Y',TO_DATE('2020-05-07 19:16:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2020-05-07 19:16:30','YYYY-MM-DD HH24:MI:SS'),100,200611,'MoveRight','D','0d2f8a50-350d-43c5-9629-64c3a6ea88d1')
|
|
||||||
;
|
|
||||||
|
|
||||||
SELECT register_migration_script('202101181900_IDEMPIERE-3340.sql') FROM dual
|
SELECT register_migration_script('202101181900_IDEMPIERE-3340.sql') FROM dual
|
||||||
;
|
;
|
|
@ -11,21 +11,5 @@ INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Expand/Collapse Tree',0,0,'Y',TO_TIMESTAMP('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,200658,'Tooltip_ExpandCollapseTree','D','26463bcc-7a17-444c-aab4-51fda0fde442')
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Expand/Collapse Tree',0,0,'Y',TO_TIMESTAMP('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-01-18 18:56:38','YYYY-MM-DD HH24:MI:SS'),100,200658,'Tooltip_ExpandCollapseTree','D','26463bcc-7a17-444c-aab4-51fda0fde442')
|
||||||
;
|
;
|
||||||
|
|
||||||
-- May 7, 2020 7:15:41 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Down',0,0,'Y',TO_TIMESTAMP('2020-05-07 19:15:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-05-07 19:15:40','YYYY-MM-DD HH24:MI:SS'),100,200608,'MoveDown','D','525bf4d4-5ce3-4a7d-9081-2e3b96708cf1')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:04 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Up',0,0,'Y',TO_TIMESTAMP('2020-05-07 19:16:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-05-07 19:16:03','YYYY-MM-DD HH24:MI:SS'),100,200609,'MoveUp','D','bdf56785-ce50-49ce-a2c5-d20a1a08ec96')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:17 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Left',0,0,'Y',TO_TIMESTAMP('2020-05-07 19:16:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-05-07 19:16:16','YYYY-MM-DD HH24:MI:SS'),100,200610,'MoveLeft','D','f0082f8f-7ecf-4682-9ee2-593b6b21fe41')
|
|
||||||
;
|
|
||||||
|
|
||||||
-- May 7, 2020 7:16:31 PM IST
|
|
||||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Move Right',0,0,'Y',TO_TIMESTAMP('2020-05-07 19:16:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2020-05-07 19:16:30','YYYY-MM-DD HH24:MI:SS'),100,200611,'MoveRight','D','0d2f8a50-350d-43c5-9629-64c3a6ea88d1')
|
|
||||||
;
|
|
||||||
|
|
||||||
SELECT register_migration_script('202101181900_IDEMPIERE-3340.sql') FROM dual
|
SELECT register_migration_script('202101181900_IDEMPIERE-3340.sql') FROM dual
|
||||||
;
|
;
|
|
@ -27,6 +27,8 @@ import org.adempiere.webui.util.TreeItemAction;
|
||||||
import org.adempiere.webui.util.TreeNodeAction;
|
import org.adempiere.webui.util.TreeNodeAction;
|
||||||
import org.adempiere.webui.util.TreeUtils;
|
import org.adempiere.webui.util.TreeUtils;
|
||||||
import org.adempiere.webui.util.ZKUpdateUtil;
|
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||||
|
import org.compiere.model.MMenu;
|
||||||
|
import org.compiere.model.MToolBarButtonRestrict;
|
||||||
import org.compiere.model.MTreeNode;
|
import org.compiere.model.MTreeNode;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
@ -302,6 +304,12 @@ public class MenuSearchController implements EventListener<Event>{
|
||||||
Clients.showBusy(selected, null);
|
Clients.showBusy(selected, null);
|
||||||
Events.echoEvent(ON_LOAD_MORE, layout, null);
|
Events.echoEvent(ON_LOAD_MORE, layout, null);
|
||||||
} else {
|
} else {
|
||||||
|
if (newRecord) {
|
||||||
|
Treeitem ti = (Treeitem)item.getData();
|
||||||
|
MMenu menu = MMenu.get(Integer.parseInt(ti.getValue()));
|
||||||
|
if (MToolBarButtonRestrict.isNewButtonRestricted(menu.getAD_Window_ID()))
|
||||||
|
newRecord = false;
|
||||||
|
}
|
||||||
selectTreeitem(item.getData(), newRecord);
|
selectTreeitem(item.getData(), newRecord);
|
||||||
selected.setAttribute(ONSELECT_TIMESTAMP, System.currentTimeMillis());
|
selected.setAttribute(ONSELECT_TIMESTAMP, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,6 +257,7 @@ public class FavoriteSimpleTreeModel extends SimpleTreeModel implements EventLis
|
||||||
|
|
||||||
if (Events.ON_DROP.equals(eventName) || Events.ON_RIGHT_CLICK.equals(eventName)
|
if (Events.ON_DROP.equals(eventName) || Events.ON_RIGHT_CLICK.equals(eventName)
|
||||||
|| (Events.ON_CLICK.equals(eventName) && comp instanceof Toolbarbutton
|
|| (Events.ON_CLICK.equals(eventName) && comp instanceof Toolbarbutton
|
||||||
|
&& ((Toolbarbutton) event.getTarget()).getAttribute(FavoriteSimpleTreeModel.MOBILE_TOOLBAR_CTX_MENU) != null
|
||||||
&& (boolean) ((Toolbarbutton) event.getTarget()).getAttribute(FavoriteSimpleTreeModel.MOBILE_TOOLBAR_CTX_MENU)))
|
&& (boolean) ((Toolbarbutton) event.getTarget()).getAttribute(FavoriteSimpleTreeModel.MOBILE_TOOLBAR_CTX_MENU)))
|
||||||
{
|
{
|
||||||
for (EventListener<Event> listener : onDropListners)
|
for (EventListener<Event> listener : onDropListners)
|
||||||
|
|
|
@ -72,10 +72,10 @@ public class LoginOpenSequenceDialog extends Window
|
||||||
/** Logger */
|
/** Logger */
|
||||||
protected static final CLogger log = CLogger.getCLogger(LoginOpenSequenceDialog.class);
|
protected static final CLogger log = CLogger.getCLogger(LoginOpenSequenceDialog.class);
|
||||||
|
|
||||||
private Button bAdd = ButtonFactory.createNamedButton("MoveRight", true, true);
|
private Button bAdd = ButtonFactory.createNamedButton("Next", false, true);
|
||||||
private Button bRemove = ButtonFactory.createNamedButton("MoveLeft", true, true);
|
private Button bRemove = ButtonFactory.createNamedButton("Previous", false, true);
|
||||||
private Button bUp = ButtonFactory.createNamedButton("MoveUp", true, true);
|
private Button bUp = ButtonFactory.createNamedButton("Parent", false, true);
|
||||||
private Button bDown = ButtonFactory.createNamedButton("MoveDown", true, true);
|
private Button bDown = ButtonFactory.createNamedButton("Detail", false, true);
|
||||||
|
|
||||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true, false, true, false, false, false);
|
private ConfirmPanel confirmPanel = new ConfirmPanel(true, false, true, false, false, false);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.compiere.model.Lookup;
|
||||||
import org.compiere.model.MFieldSuggestion;
|
import org.compiere.model.MFieldSuggestion;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
|
import org.compiere.model.MToolBarButtonRestrict;
|
||||||
import org.compiere.model.MZoomCondition;
|
import org.compiere.model.MZoomCondition;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
@ -141,18 +142,25 @@ public class WEditorPopupMenu extends Menupopup implements EventListener<Event>
|
||||||
for (MZoomCondition zoomCondition : MZoomCondition.getConditions(table.getAD_Table_ID())) {
|
for (MZoomCondition zoomCondition : MZoomCondition.getConditions(table.getAD_Table_ID())) {
|
||||||
Boolean canAccessZoom = MRole.getDefault().getWindowAccess(zoomCondition.getAD_Window_ID());
|
Boolean canAccessZoom = MRole.getDefault().getWindowAccess(zoomCondition.getAD_Window_ID());
|
||||||
if (canAccessZoom != null && canAccessZoom) {
|
if (canAccessZoom != null && canAccessZoom) {
|
||||||
this.zoomEnabled = true;
|
this.zoomEnabled = true;
|
||||||
if (hasQuickEntryField(zoomCondition.getAD_Window_ID(), 0, tableName)) {
|
if (hasQuickEntryField(zoomCondition.getAD_Window_ID(), 0, tableName)) {
|
||||||
this.newEnabled = true;
|
if (MToolBarButtonRestrict.isNewButtonRestricted(zoomCondition.getAD_Window_ID()))
|
||||||
this.updateEnabled = true;
|
this.newEnabled = false;
|
||||||
}
|
else
|
||||||
|
this.newEnabled = true;
|
||||||
|
this.updateEnabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (hasQuickEntryField(winID,winIDPO,tableName)) {
|
if (hasQuickEntryField(winID,winIDPO,tableName)) {
|
||||||
this.newEnabled = true;
|
if ( !MToolBarButtonRestrict.isNewButtonRestricted(winID)
|
||||||
|
|| (winIDPO > 0 && winIDPO != winID && !MToolBarButtonRestrict.isNewButtonRestricted(winIDPO)))
|
||||||
|
this.newEnabled = true;
|
||||||
|
else
|
||||||
|
this.newEnabled = false;
|
||||||
this.updateEnabled = true;
|
this.updateEnabled = true;
|
||||||
} else {
|
} else {
|
||||||
this.newEnabled = false;
|
this.newEnabled = false;
|
||||||
|
|
|
@ -30,6 +30,7 @@ import org.adempiere.webui.theme.ThemeManager;
|
||||||
import org.adempiere.webui.util.ZKUpdateUtil;
|
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||||
import org.compiere.model.MMenu;
|
import org.compiere.model.MMenu;
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
|
import org.compiere.model.MToolBarButtonRestrict;
|
||||||
import org.compiere.model.MTree;
|
import org.compiere.model.MTree;
|
||||||
import org.compiere.model.MTreeNode;
|
import org.compiere.model.MTreeNode;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
@ -264,6 +265,11 @@ public abstract class AbstractMenuPanel extends Panel implements EventListener<E
|
||||||
if (comp instanceof Treeitem)
|
if (comp instanceof Treeitem)
|
||||||
{
|
{
|
||||||
Treeitem selectedItem = (Treeitem) comp;
|
Treeitem selectedItem = (Treeitem) comp;
|
||||||
|
if (newRecord) {
|
||||||
|
MMenu menu = MMenu.get(Integer.parseInt(selectedItem.getValue()));
|
||||||
|
if (MToolBarButtonRestrict.isNewButtonRestricted(menu.getAD_Window_ID()))
|
||||||
|
newRecord = false;
|
||||||
|
}
|
||||||
if(selectedItem.getValue() != null)
|
if(selectedItem.getValue() != null)
|
||||||
{
|
{
|
||||||
if (newRecord)
|
if (newRecord)
|
||||||
|
@ -279,6 +285,11 @@ public abstract class AbstractMenuPanel extends Panel implements EventListener<E
|
||||||
if (comp instanceof Treerow)
|
if (comp instanceof Treerow)
|
||||||
{
|
{
|
||||||
Treeitem selectedItem = (Treeitem) comp.getParent();
|
Treeitem selectedItem = (Treeitem) comp.getParent();
|
||||||
|
if (newRecord) {
|
||||||
|
MMenu menu = MMenu.get(Integer.parseInt(selectedItem.getValue()));
|
||||||
|
if (MToolBarButtonRestrict.isNewButtonRestricted(menu.getAD_Window_ID()))
|
||||||
|
newRecord = false;
|
||||||
|
}
|
||||||
if(selectedItem.getValue() != null)
|
if(selectedItem.getValue() != null)
|
||||||
{
|
{
|
||||||
if (newRecord)
|
if (newRecord)
|
||||||
|
|
Loading…
Reference in New Issue