ItEr53S14CUVistaRecursosTempoPorProxectoItEr49S16 : fix the filter of the resource load screen.

Now the selected filter is consistent with the showed information and the zoom level is maintained.
This commit is contained in:
Susana Montes Pedreira 2010-04-14 18:08:50 +02:00 committed by Javier Moran Rua
parent 54aecc4530
commit c6b490df65
3 changed files with 39 additions and 20 deletions

View file

@ -73,9 +73,9 @@ public class ResourcesLoadPanel extends HtmlMacroComponent {
private Listbox listZoomLevels;
private static final String filterResources = _("Filter by resources");
private static final String filterCriterions = _("Filter by criterions");
private boolean filterbyResources = true;
private static final String filterResources = _("by resources");
private static final String filterCriterions = _("by criterions");
private Boolean filterbyResources;
public ResourcesLoadPanel(List<LoadTimeLine> groups,
TimeTracker timeTracker) {
@ -104,10 +104,11 @@ public class ResourcesLoadPanel extends HtmlMacroComponent {
} else {
this.filterbyResources = false;
}
onApplyFilter();
}
public boolean getFilter() {
return filterbyResources;
return (filterbyResources == null) ? true : filterbyResources;
}
public void onApplyFilter() {
@ -142,12 +143,22 @@ public class ResourcesLoadPanel extends HtmlMacroComponent {
public void add(final IToolbarCommand... commands) {
Component toolbar = getToolbar();
resetToolbar(toolbar);
Separator separator = getSeparator();
for (IToolbarCommand c : commands) {
toolbar.insertBefore(asButton(c), separator);
}
}
private void resetToolbar(Component toolbar) {
List<Component> children = toolbar.getChildren();
List<Button> buttons = ComponentsFinder.findComponentsOfType(
Button.class, children);
for (Button b : buttons) {
toolbar.removeChild(b);
}
}
private Button asButton(final IToolbarCommand c) {
Button result = new Button();
result.addEventListener(Events.ON_CLICK, new EventListener() {
@ -224,6 +235,7 @@ public class ResourcesLoadPanel extends HtmlMacroComponent {
@Override
public void afterCompose() {
super.afterCompose();
clearComponents();
getFellow("insertionPointLeftPanel").appendChild(leftPane);
leftPane.afterCompose();

View file

@ -39,14 +39,10 @@ resourcesLoadPanel = self;
</listbox>
<separator/>
Filter:
<listbox id="listFilters" mold="select" rows="1" width="200px"
<listbox id="listFilters" mold="select" rows="1" width="150px"
model="${resourcesLoadPanel.filters}"
onSelect="resourcesLoadPanel.setFilter(self.selectedItem.value);" >
onSelect="resourcesLoadPanel.setFilter(self.selectedItem.value);">
</listbox>
<button image="/common/img/ico_filter.png" style="margin-top: -4px"
tooltiptext="${i18n:_('Apply filtering to resource load satisfying required criteria')}"
onClick="resourcesLoadPanel.onApplyFilter()"/>
</hbox>
</north>

View file

@ -38,6 +38,7 @@ import org.zkoss.ganttz.resourceload.ResourcesLoadPanel;
import org.zkoss.ganttz.resourceload.ResourcesLoadPanel.IToolbarCommand;
import org.zkoss.ganttz.timetracker.TimeTracker;
import org.zkoss.ganttz.timetracker.zoom.SeveralModificators;
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Messagebox;
@ -81,6 +82,8 @@ public class ResourceLoadController implements Composer {
public void reload() {
// by default show the task by resources
boolean filterByResources = true;
timeTracker = null;
resourcesLoadPanel = null;
reload(filterByResources);
}
@ -92,13 +95,14 @@ public class ResourceLoadController implements Composer {
resourceLoadModel.initGlobalView(filterBy, filterByResources);
}
timeTracker = buildTimeTracker();
resourcesLoadPanel = buildResourcesLoadPanel();
addListeners();
buildResourcesLoadPanel();
this.parent.getChildren().clear();
this.parent.appendChild(resourcesLoadPanel);
resourcesLoadPanel.afterCompose();
addCommands(resourcesLoadPanel);
} catch (IllegalArgumentException e) {
try {
Messagebox
@ -123,24 +127,31 @@ public class ResourceLoadController implements Composer {
}
public void onApplyFilter(boolean filterByResources) {
resourcesLoadPanel.clearComponents();
reload(filterByResources);
}
private void addCommands(ResourcesLoadPanel resourcesLoadPanel) {
resourcesLoadPanel.add(commands.toArray(new IToolbarCommand[0]));
}
private TimeTracker buildTimeTracker() {
return timeTracker = new TimeTracker(resourceLoadModel
.getViewInterval(), resourceLoadModel
.calculateInitialZoomLevel(), SeveralModificators.create(),
SeveralModificators.create(new BankHolidaysMarker()), parent);
ZoomLevel zoomLevel = (timeTracker == null) ? resourceLoadModel
.calculateInitialZoomLevel() : timeTracker.getDetailLevel();
return new TimeTracker(resourceLoadModel.getViewInterval(), zoomLevel,
SeveralModificators.create(), SeveralModificators
.create(new BankHolidaysMarker()), parent);
}
private ResourcesLoadPanel buildResourcesLoadPanel() {
return new ResourcesLoadPanel(resourceLoadModel.getLoadTimeLines(),
timeTracker);
private void buildResourcesLoadPanel() {
if (resourcesLoadPanel != null) {
resourcesLoadPanel.init(resourceLoadModel.getLoadTimeLines(),
timeTracker);
} else {
resourcesLoadPanel = new ResourcesLoadPanel(resourceLoadModel
.getLoadTimeLines(), timeTracker);
addListeners();
}
}
public void filterBy(Order order) {