FEA: ItEr02S03MigracionZK5

Avoid uses of Mode#goToOrderMode that cause unnecessary repaintings

Now the mode is changed after hiding the previous tab, so the previous
tab is not repainted and the new tab is showed with the correct mode.

FEA: ItEr63S03BugFixing
This commit is contained in:
Óscar González Fernández 2010-11-09 17:14:34 +01:00 committed by Farruco Sanjurjo
parent 9a99ef5b0f
commit b4ea86c80f
4 changed files with 49 additions and 21 deletions

View file

@ -54,8 +54,23 @@ public class TabsRegistry {
tabs.add(tab);
}
public interface IBeforeShowAction {
public void doAction();
}
private static final IBeforeShowAction DO_NOTHING = new IBeforeShowAction() {
@Override
public void doAction() {
}
};
public void show(ITab tab) {
show(tab, DO_NOTHING);
}
public void show(ITab tab, IBeforeShowAction beforeShowAction) {
hideAllExcept(tab);
beforeShowAction.doAction();
tab.show();
parent.invalidate();
activateMenuIfRegistered(tab);

View file

@ -24,6 +24,9 @@ import java.util.List;
import org.apache.commons.lang.Validate;
import org.navalplanner.business.orders.entities.Order;
import org.zkoss.ganttz.TabsRegistry;
import org.zkoss.ganttz.TabsRegistry.IBeforeShowAction;
import org.zkoss.ganttz.extensions.ITab;
/**
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -64,6 +67,15 @@ public class Mode {
return current.getOrder();
}
/**
* <p>
* Changes the mode to {@link ModeType#ORDER}. This causes to show the tab
* for the order mode of the given order.
* </p>
* Beware that calling this method and then later showing another tab causes
* an unnecessary repaint. So if you need to change the tab and the mode,
* use {@link TabsRegistry#show(ITab, IBeforeShowAction)} instead.
*/
public void goToOrderMode(Order order) {
changeTo(current.createOrderMode(order));
}

View file

@ -49,6 +49,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.zkoss.ganttz.TabSwitcher;
import org.zkoss.ganttz.TabsRegistry;
import org.zkoss.ganttz.TabsRegistry.IBeforeShowAction;
import org.zkoss.ganttz.adapters.State;
import org.zkoss.ganttz.adapters.TabsConfiguration;
import org.zkoss.ganttz.adapters.TabsConfiguration.ChangeableTab;
@ -190,8 +191,8 @@ public class MultipleTabsPlannerController implements Composer,
@Override
public void goToScheduleOf(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(planningTab);
getTabsRegistry()
.show(planningTab, changeModeTo(order));
}
@Override
@ -203,8 +204,8 @@ public class MultipleTabsPlannerController implements Composer,
public void goToTaskResourceAllocation(Order order,
TaskElement task) {
orderPlanningController.setShowedTask(task);
mode.goToOrderMode(order);
getTabsRegistry().show(planningTab);
getTabsRegistry()
.show(planningTab, changeModeTo(order));
}
}, breadcrumbs);
@ -218,14 +219,13 @@ public class MultipleTabsPlannerController implements Composer,
@Override
public void goToScheduleOf(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(planningTab);
getTabsRegistry()
.show(planningTab, changeModeTo(order));
}
@Override
public void goToOrderDetails(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(ordersTab);
getTabsRegistry().show(ordersTab, changeModeTo(order));
}
@Override
@ -389,14 +389,12 @@ public class MultipleTabsPlannerController implements Composer,
@Override
public void goToOrder(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(planningTab);
getTabsRegistry().show(planningTab, changeModeTo(order));
}
@Override
public void goToOrderElementDetails(OrderElement orderElement, Order order) {
getTabsRegistry().show(ordersTab);
mode.goToOrderMode(order);
getTabsRegistry().show(ordersTab, changeModeTo(order));
orderCRUDController.highLight(orderElement);
}
@ -407,20 +405,17 @@ public class MultipleTabsPlannerController implements Composer,
@Override
public void goToOrderDetails(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(ordersTab);
getTabsRegistry().show(ordersTab, changeModeTo(order));
}
@Override
public void goToResourcesLoad(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(resourceLoadTab);
getTabsRegistry().show(resourceLoadTab, changeModeTo(order));
}
@Override
public void goToAdvancedAllocation(Order order) {
mode.goToOrderMode(order);
getTabsRegistry().show(advancedAllocationTab);
getTabsRegistry().show(advancedAllocationTab, changeModeTo(order));
}
@Override
@ -428,4 +423,13 @@ public class MultipleTabsPlannerController implements Composer,
getTabsRegistry().show(ordersTab);
orderCRUDController.showCreateFormFromTemplate(template);
}
private IBeforeShowAction changeModeTo(final Order order) {
return new IBeforeShowAction() {
@Override
public void doAction() {
mode.goToOrderMode(order);
}
};
}
}

View file

@ -171,7 +171,6 @@ public class PlanningTabCreator {
OrderElement orderElement = task.getOrderElement();
if (orderElement instanceof Order) {
Order order = (Order) orderElement;
mode.goToOrderMode(order);
tabsController.goToOrderDetails(order);
}
}
@ -203,7 +202,6 @@ public class PlanningTabCreator {
OrderElement orderElement = task.getOrderElement();
if (orderElement instanceof Order) {
Order order = (Order) orderElement;
mode.goToOrderMode(order);
tabsController.goToResourcesLoad(order);
}
}
@ -235,7 +233,6 @@ public class PlanningTabCreator {
OrderElement orderElement = task.getOrderElement();
if (orderElement instanceof Order) {
Order order = (Order) orderElement;
mode.goToOrderMode(order);
tabsController.goToAdvancedAllocation(order);
}
}