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:
parent
87a087cd23
commit
ba0a525fc5
4 changed files with 49 additions and 21 deletions
|
|
@ -53,8 +53,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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ import org.springframework.stereotype.Component;
|
|||
import org.zkoss.ganttz.Planner;
|
||||
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;
|
||||
|
|
@ -191,8 +192,8 @@ public class MultipleTabsPlannerController implements Composer,
|
|||
|
||||
@Override
|
||||
public void goToScheduleOf(Order order) {
|
||||
mode.goToOrderMode(order);
|
||||
getTabsRegistry().show(planningTab);
|
||||
getTabsRegistry()
|
||||
.show(planningTab, changeModeTo(order));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -204,8 +205,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);
|
||||
|
|
@ -219,14 +220,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
|
||||
|
|
@ -391,14 +391,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);
|
||||
}
|
||||
|
||||
|
|
@ -409,20 +407,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
|
||||
|
|
@ -430,4 +425,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);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue