ItEr38S05ValidacionEProbasFuncionaisItEr37S06: Adding extra classes to perspectives
This commit is contained in:
parent
76e361bcdf
commit
09aad0b360
11 changed files with 91 additions and 15 deletions
|
|
@ -60,7 +60,7 @@ public class TabsRegistry {
|
|||
public void loadNewName(ITab tab) {
|
||||
if (fromTabToMenuKey.containsKey(tab)) {
|
||||
Object key = fromTabToMenuKey.get(tab);
|
||||
menu.renameMenuItem(key, tab.getName());
|
||||
menu.renameMenuItem(key, tab.getName(), tab.getCssClass());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +94,8 @@ public class TabsRegistry {
|
|||
public void registerAtMenu(IMenuItemsRegister menu) {
|
||||
this.menu = menu;
|
||||
for (final ITab t : tabs) {
|
||||
Object key = menu.addMenuItem(t.getName(), new EventListener() {
|
||||
Object key = menu.addMenuItem(t.getName(), t.getCssClass(),
|
||||
new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,12 @@ public interface ITab {
|
|||
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* the css class is optional so it can be null
|
||||
* @return
|
||||
*/
|
||||
String getCssClass();
|
||||
|
||||
void addToParent(Component parent);
|
||||
|
||||
void show();
|
||||
|
|
|
|||
|
|
@ -52,4 +52,9 @@ public class TabProxy implements ITab {
|
|||
proxiedTab.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCssClass() {
|
||||
return proxiedTab.getCssClass();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,13 +24,15 @@ import org.zkoss.zk.ui.event.EventListener;
|
|||
|
||||
public interface IMenuItemsRegister {
|
||||
/**
|
||||
* @param cssClass
|
||||
* can be null
|
||||
* @return a key to access the new menu item
|
||||
*/
|
||||
public Object addMenuItem(String name, EventListener eventListener);
|
||||
public Object addMenuItem(String name, String cssClass, EventListener eventListener);
|
||||
|
||||
public void activateMenuItem(Object key);
|
||||
|
||||
public void renameMenuItem(Object key, String name);
|
||||
public void renameMenuItem(Object key, String name, String cssClass);
|
||||
|
||||
public void toggleVisibilityTo(Object key, boolean visible);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ import static org.navalplanner.web.I18nHelper._;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.navalplanner.business.users.entities.UserRole;
|
||||
import org.navalplanner.web.security.SecurityUtils;
|
||||
|
|
@ -255,11 +257,14 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
private Button currentOne = null;
|
||||
|
||||
@Override
|
||||
public Object addMenuItem(String name,
|
||||
public Object addMenuItem(String name, String cssClass,
|
||||
org.zkoss.zk.ui.event.EventListener eventListener) {
|
||||
Vbox insertionPoint = getRegisteredItemsInsertionPoint();
|
||||
Button button = new Button();
|
||||
button.setLabel(_(name));
|
||||
if (cssClass != null) {
|
||||
toggleDomainCssClass(cssClass, button);
|
||||
}
|
||||
setDeselectedClass(button);
|
||||
button.addEventListener(Events.ON_CLICK, doNotCallTwice(button,
|
||||
eventListener));
|
||||
|
|
@ -274,9 +279,24 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void renameMenuItem(Object key, String name) {
|
||||
public void renameMenuItem(Object key, String name, String cssClass) {
|
||||
Button button = (Button) key;
|
||||
button.setLabel(name);
|
||||
if (cssClass != null) {
|
||||
toggleDomainCssClass(cssClass, button);
|
||||
}
|
||||
}
|
||||
|
||||
private void toggleDomainCssClass(String cssClass, Button button) {
|
||||
Matcher matcher = perspectiveCssClass
|
||||
.matcher(button.getSclass() == null ? "" : button.getSclass());
|
||||
String previousPerspectiveClass;
|
||||
if (matcher.find()) {
|
||||
previousPerspectiveClass = matcher.group();
|
||||
} else {
|
||||
previousPerspectiveClass = "";
|
||||
}
|
||||
button.setSclass(previousPerspectiveClass + " " + cssClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -287,11 +307,32 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
}
|
||||
|
||||
private void setSelectClass(final Button button) {
|
||||
button.setSclass("perspective-active");
|
||||
togglePerspectiveClassTo(button, "perspective-active");
|
||||
}
|
||||
|
||||
private void setDeselectedClass(Button button) {
|
||||
button.setSclass("perspective");
|
||||
togglePerspectiveClassTo(button, "perspective");
|
||||
}
|
||||
|
||||
private static final Pattern perspectiveCssClass = Pattern
|
||||
.compile("\\bperspective(-\\w+)?\\b");
|
||||
|
||||
private void togglePerspectiveClassTo(final Button button,
|
||||
String newPerspectiveClass) {
|
||||
button
|
||||
.setSclass(togglePerspectiveCssClass(newPerspectiveClass,
|
||||
button));
|
||||
}
|
||||
|
||||
private String togglePerspectiveCssClass(String newPerspectiveClass,
|
||||
Button button) {
|
||||
String sclass = button.getSclass();
|
||||
if (!perspectiveCssClass.matcher(sclass).find()) {
|
||||
return newPerspectiveClass + " " + sclass;
|
||||
} else {
|
||||
Matcher matcher = perspectiveCssClass.matcher(sclass);
|
||||
return matcher.replaceAll(newPerspectiveClass);
|
||||
}
|
||||
}
|
||||
|
||||
private EventListener doNotCallTwice(final Button button,
|
||||
|
|
@ -324,7 +365,6 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
return;
|
||||
}
|
||||
if (currentOne != null) {
|
||||
currentOne.setSclass("sub_menu");
|
||||
setDeselectedClass(currentOne);
|
||||
}
|
||||
setSelectClass(button);
|
||||
|
|
|
|||
|
|
@ -233,6 +233,7 @@ public class AdvancedAllocationTabCreator {
|
|||
|
||||
};
|
||||
return new CreatedOnDemandTab(ADVANCED_ALLOCATION_VIEW,
|
||||
"advanced-allocation",
|
||||
advanceAllocationComponentCreator) {
|
||||
private boolean firstTime = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,16 +32,23 @@ public class CreatedOnDemandTab implements ITab {
|
|||
private Component parent;
|
||||
private final IComponentCreator componentCreator;
|
||||
private Component component;
|
||||
private final String cssClass;
|
||||
|
||||
public interface IComponentCreator {
|
||||
public Component create(Component parent);
|
||||
}
|
||||
|
||||
public CreatedOnDemandTab(String name, IComponentCreator componentCreator) {
|
||||
this(name, null, componentCreator);
|
||||
}
|
||||
|
||||
public CreatedOnDemandTab(String name, String cssClass,
|
||||
IComponentCreator componentCreator) {
|
||||
Validate.notNull(name);
|
||||
Validate.notNull(componentCreator);
|
||||
this.componentCreator = componentCreator;
|
||||
this.name = name;
|
||||
this.cssClass = cssClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -73,4 +80,9 @@ public class CreatedOnDemandTab implements ITab {
|
|||
protected void afterShowAction() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCssClass() {
|
||||
return cssClass;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ public class OrdersTabCreator {
|
|||
}
|
||||
|
||||
private ITab createGlobalOrdersTab() {
|
||||
return new CreatedOnDemandTab(ORDERS_VIEW, ordersTabCreator) {
|
||||
return new CreatedOnDemandTab(ORDERS_VIEW, "orders", ordersTabCreator) {
|
||||
@Override
|
||||
protected void afterShowAction() {
|
||||
orderCRUDController.goToList();
|
||||
|
|
@ -124,7 +124,8 @@ public class OrdersTabCreator {
|
|||
}
|
||||
|
||||
private ITab createOrderOrdersTab() {
|
||||
return new CreatedOnDemandTab(ORDER_ORDERS_VIEW, ordersTabCreator) {
|
||||
return new CreatedOnDemandTab(ORDER_ORDERS_VIEW, "order-data",
|
||||
ordersTabCreator) {
|
||||
@Override
|
||||
protected void afterShowAction() {
|
||||
breadcrumbs.getChildren().clear();
|
||||
|
|
|
|||
|
|
@ -128,7 +128,8 @@ public class PlanningTabCreator {
|
|||
}
|
||||
|
||||
};
|
||||
return new CreatedOnDemandTab(ENTERPRISE_VIEW, componentCreator) {
|
||||
return new CreatedOnDemandTab(ENTERPRISE_VIEW, "company-scheduling",
|
||||
componentCreator) {
|
||||
@Override
|
||||
protected void afterShowAction() {
|
||||
companyPlanningController.setConfigurationForPlanner();
|
||||
|
|
@ -159,7 +160,8 @@ public class PlanningTabCreator {
|
|||
}
|
||||
|
||||
};
|
||||
return new CreatedOnDemandTab(ORDER_ENTERPRISE_VIEW, componentCreator) {
|
||||
return new CreatedOnDemandTab(ORDER_ENTERPRISE_VIEW,
|
||||
"order-scheduling", componentCreator) {
|
||||
@Override
|
||||
protected void afterShowAction() {
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public class ResourcesLoadTabCreator {
|
|||
}
|
||||
|
||||
};
|
||||
return new CreatedOnDemandTab(ORDER_RESOURCE_LOAD_VIEW,
|
||||
return new CreatedOnDemandTab(ORDER_RESOURCE_LOAD_VIEW, "order-load",
|
||||
componentCreator) {
|
||||
|
||||
@Override
|
||||
|
|
@ -132,7 +132,8 @@ public class ResourcesLoadTabCreator {
|
|||
}
|
||||
|
||||
};
|
||||
return new CreatedOnDemandTab(RESOURCE_LOAD_VIEW, componentCreator) {
|
||||
return new CreatedOnDemandTab(RESOURCE_LOAD_VIEW, "company-load",
|
||||
componentCreator) {
|
||||
@Override
|
||||
protected void afterShowAction() {
|
||||
resourceLoadControllerGlobal.filterBy(null);
|
||||
|
|
|
|||
|
|
@ -116,6 +116,11 @@ public class TabOnModeType implements ITab {
|
|||
return getCurrentTab().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCssClass() {
|
||||
return getCurrentTab().getCssClass();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide() {
|
||||
beingShown = false;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue