ItEr38S05ValidacionEProbasFuncionaisItEr37S06: Adding extra classes to perspectives

This commit is contained in:
Óscar González Fernández 2009-12-09 12:59:44 +01:00
parent 76e361bcdf
commit 09aad0b360
11 changed files with 91 additions and 15 deletions

View file

@ -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 {

View file

@ -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();

View file

@ -52,4 +52,9 @@ public class TabProxy implements ITab {
proxiedTab.show();
}
@Override
public String getCssClass() {
return proxiedTab.getCssClass();
}
}

View file

@ -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);

View file

@ -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);

View file

@ -233,6 +233,7 @@ public class AdvancedAllocationTabCreator {
};
return new CreatedOnDemandTab(ADVANCED_ALLOCATION_VIEW,
"advanced-allocation",
advanceAllocationComponentCreator) {
private boolean firstTime = true;

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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() {

View file

@ -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);

View file

@ -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;