Skip to content

Commit

Permalink
menu fix for edit debug object, task
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Oct 7, 2015
1 parent 86e4782 commit a7c332e
Show file tree
Hide file tree
Showing 8 changed files with 211 additions and 84 deletions.
@@ -0,0 +1,101 @@
/*
* Copyright (c) 2010-2015 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.web.component.menu;

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.io.Serializable;

/**
* @author Viliam Repan (lazyman)
*/
public class BaseMenuItem implements Serializable {

private IModel<String> name;
private Class<? extends WebPage> page;
private PageParameters params;
private VisibleEnableBehaviour visibleEnable;
private Class<? extends WebPage>[] aliases;

public BaseMenuItem(IModel<String> name, Class<? extends WebPage> page) {
this(name, page, null, null);
}

public BaseMenuItem(IModel<String> name, Class<? extends WebPage> page,
PageParameters params, VisibleEnableBehaviour visibleEnable,
Class<? extends WebPage>... aliases) {
this.aliases = aliases;
this.name = name;
this.page = page;
this.params = params;
this.visibleEnable = visibleEnable;
}

/**
* @return Returns array of {@link WebPage} classes where this menu should be marked as <b>active</b>.
*/
public Class<? extends WebPage>[] getAliases() {
return aliases;
}

public IModel<String> getName() {
return name;
}

public Class<? extends WebPage> getPage() {
return page;
}

public PageParameters getParams() {
return params;
}

public VisibleEnableBehaviour getVisibleEnable() {
return visibleEnable;
}

public boolean isMenuActive(WebPage page) {
if (page == null) {
return false;
}

Class pageClass = page.getClass();

if (this.page == null) {
return false;
}

if (pageClass.isAssignableFrom(this.page)) {
return true;
}

if (aliases == null) {
return false;
}

for (Class c : aliases) {
if (pageClass.isAssignableFrom(c)) {
return true;
}
}

return false;
}
}
Expand Up @@ -17,25 +17,20 @@

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.PageBase;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import org.apache.wicket.model.IModel;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* @author Viliam Repan (lazyman)
*/
public class MainMenuItem implements Serializable {
public class MainMenuItem extends BaseMenuItem {

public static final String F_ITEMS = "items";
public static final String F_ICON_CLASS = "iconClass";

private String iconClass;
private IModel<String> name;
private Class<? extends PageBase> page;
private VisibleEnableBehaviour visibleEnable;
private List<MenuItem> items;

public MainMenuItem(String iconClass, IModel<String> name) {
Expand All @@ -46,17 +41,16 @@ public MainMenuItem(String iconClass, IModel<String> name, Class<? extends PageB
this(iconClass, name, page, null);
}

public MainMenuItem(String iconClass, IModel<String> name, Class<? extends PageBase> page, List<MenuItem> items) {
public MainMenuItem(String iconClass, IModel<String> name, Class<? extends PageBase> page,
List<MenuItem> items) {
this(iconClass, name, page, items, null);
}

public MainMenuItem(String iconClass, IModel<String> name, Class<? extends PageBase> page,
List<MenuItem> items, VisibleEnableBehaviour visibleEnable) {
super(name, page, null, visibleEnable);
this.iconClass = iconClass;
this.items = items;
this.name = name;
this.page = page;
this.visibleEnable = visibleEnable;
}

public String getIconClass() {
Expand All @@ -69,16 +63,4 @@ public List<MenuItem> getItems() {
}
return items;
}

public IModel<String> getName() {
return name;
}

public VisibleEnableBehaviour getVisibleEnable() {
return visibleEnable;
}

public Class<? extends PageBase> getPage() {
return page;
}
}
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.web.security.SecurityUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
Expand Down Expand Up @@ -59,15 +60,12 @@ protected void initLayout() {

@Override
public String getObject() {
Class page = getPage().getClass();

Class type = menu.getPage();
if (type != null && page.isAssignableFrom(type)) {
if (menu.isMenuActive((WebPage) getPage())) {
return "active";
}

for (MenuItem item : menu.getItems()) {
if (item.getPage() != null && page.isAssignableFrom(item.getPage())) {
if (item.isMenuActive((WebPage) getPage())) {
return "active";
}
}
Expand Down Expand Up @@ -127,10 +125,7 @@ private void createSubmenu(final ListItem<MenuItem> listItem) {

@Override
public String getObject() {
Class page = getPage().getClass();
Class type = menu.getPage();

return page.isAssignableFrom(type) ? "active" : null;
return menu.isMenuActive((WebPage) getPage()) ? "active" : null;
}
}));

Expand All @@ -144,7 +139,25 @@ public String getObject() {

@Override
public boolean isVisible() {
return SecurityUtils.isMenuAuthorized(listItem.getModelObject());
MenuItem mi = listItem.getModelObject();

boolean visible = true;
if (mi.getVisibleEnable() != null) {
visible = mi.getVisibleEnable().isVisible();
}

return visible && SecurityUtils.isMenuAuthorized(mi);
}

@Override
public boolean isEnabled() {
MenuItem mi = listItem.getModelObject();

if (mi.getVisibleEnable() == null) {
return true;
}

return mi.getVisibleEnable().isEnabled();
}
});
}
Expand Down
Expand Up @@ -20,44 +20,17 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.io.Serializable;

/**
* @author Viliam Repan (lazyman)
*/
public class MenuItem implements Serializable {

private IModel<String> name;
private Class<? extends WebPage> page;
private PageParameters params;

private VisibleEnableBehaviour visibleEnable;
public class MenuItem extends BaseMenuItem {

public MenuItem(IModel<String> name, Class<? extends WebPage> page) {
this(name, page, null, null);
}

public MenuItem(IModel<String> name, Class<? extends WebPage> page,
PageParameters params, VisibleEnableBehaviour visibleEnable) {
this.name = name;
this.page = page;
this.params = params;
this.visibleEnable = visibleEnable;
}

public IModel<String> getName() {
return name;
}

public Class<? extends WebPage> getPage() {
return page;
}

public PageParameters getParams() {
return params;
}

public VisibleEnableBehaviour getVisibleEnable() {
return visibleEnable;
PageParameters params, VisibleEnableBehaviour visibleEnable, Class<? extends WebPage>... aliases) {
super(name, page, params, visibleEnable, aliases);
}
}
Expand Up @@ -87,8 +87,14 @@ public boolean isVisible() {
@Override
public boolean isVisible() {
SideBarMenuItem mainMenu = item.getModelObject();

for (MainMenuItem i : mainMenu.getItems()) {
if (SecurityUtils.isMenuAuthorized(i)) {
boolean visible = true;
if (i.getVisibleEnable() != null) {
visible = i.getVisibleEnable().isVisible();
}

if (visible && SecurityUtils.isMenuAuthorized(i)) {
return true;
}
}
Expand Down

0 comments on commit a7c332e

Please sign in to comment.