Added popup in filters to use or not labels inheritance

FEA: ItEr75S15FilteringByLabelsPlanningGantt
This commit is contained in:
Ignacio Diaz Teijido 2011-08-08 14:39:39 +02:00 committed by Manuel Rego Casasnovas
parent 4222ca684b
commit b29a3f013f
5 changed files with 87 additions and 15 deletions

View file

@ -565,6 +565,15 @@ public abstract class OrderElement extends IntegrationEntity implements
return Collections.unmodifiableSet(labels);
}
public Set<Label> getAllLabels() {
Set<Label> allLabels = new HashSet<Label>();
allLabels.addAll(this.labels);
if (parent != null) {
allLabels.addAll(parent.getAllLabels());
}
return allLabels;
}
public void setLabels(Set<Label> labels) {
this.labels = labels;
}

View file

@ -23,6 +23,7 @@ package org.navalplanner.web.orders;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.navalplanner.business.labels.entities.Label;
@ -49,12 +50,15 @@ public class OrderElementPredicate implements IPredicate {
private String name;
private boolean ignoreLabelsInheritance;
public OrderElementPredicate(List<FilterPair> filters, Date startDate,
Date finishDate, String name) {
Date finishDate, String name, boolean ignoreLabelsInheritance) {
this.filters = filters;
this.startDate = startDate;
this.finishDate = finishDate;
this.name = name;
this.ignoreLabelsInheritance = ignoreLabelsInheritance;
}
@Override
@ -153,7 +157,13 @@ public class OrderElementPredicate implements IPredicate {
private boolean existLabelInOrderElement(Label filterLabel,
OrderElement order) {
for(Label label : order.getLabels()){
Set<Label> labels;
if (ignoreLabelsInheritance) {
labels = order.getLabels();
} else {
labels = order.getAllLabels();
}
for (Label label : labels) {
if(label.getId().equals(filterLabel.getId())){
return true;
}

View file

@ -60,8 +60,10 @@ import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Constraint;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Popup;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Treechildren;
@ -88,6 +90,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private Datebox filterFinishDateOrderElement;
private Checkbox labelsWithoutInheritance;
private Textbox filterNameOrderElement;
private OrderElementTreeitemRenderer renderer = new OrderElementTreeitemRenderer();
@ -105,6 +109,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private final IMessagesForUser messagesForUser;
private Popup filterOptionsPopup;
public List<org.navalplanner.business.labels.entities.Label> getLabels() {
return orderModel.getLabels();
}
@ -248,13 +254,18 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
filterComponent.setVariable("treeController", this, true);
bdFiltersOrderElement = (BandboxMultipleSearch) filterComponent
.getFellow("bdFiltersOrderElement");
filterStartDateOrderElement = (Datebox) filterComponent
filterOptionsPopup = (Popup) filterComponent
.getFellow("filterOptionsPopup");
filterStartDateOrderElement = (Datebox) filterOptionsPopup
.getFellow("filterStartDateOrderElement");
filterFinishDateOrderElement = (Datebox) filterComponent
filterFinishDateOrderElement = (Datebox) filterOptionsPopup
.getFellow("filterFinishDateOrderElement");
labelsWithoutInheritance = (Checkbox) filterOptionsPopup
.getFellow("labelsWithoutInheritance");
filterNameOrderElement = (Textbox) filterComponent
.getFellow("filterNameOrderElement");
labelsWithoutInheritance = (Checkbox) filterComponent
.getFellow("labelsWithoutInheritance");
templateFinderPopup = (TemplateFinderPopup) comp
.getFellow("templateFinderPopupAtTree");
operationsForOrderElement.tree(tree)
@ -505,6 +516,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
.getSelectedElements();
Date startDate = filterStartDateOrderElement.getValue();
Date finishDate = filterFinishDateOrderElement.getValue();
boolean ignoreLabelsInheritance = Boolean
.valueOf(labelsWithoutInheritance.isChecked());
String name = filterNameOrderElement.getValue();
if (listFilters.isEmpty() && startDate == null && finishDate == null
@ -512,7 +525,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
return null;
}
return new OrderElementPredicate(listFilters, startDate, finishDate,
name);
name, ignoreLabelsInheritance);
}
private void filterByPredicate(OrderElementPredicate predicate) {
@ -703,4 +716,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
};
}
public void toggleOptions() {
filterOptionsPopup.open(300, 150);
}
}

View file

@ -62,8 +62,10 @@ import org.zkoss.ganttz.util.ProfilingLogFactory;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Constraint;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Popup;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Vbox;
@ -111,9 +113,12 @@ public class OrderPlanningController implements Composer {
private Vbox orderElementFilter;
private Datebox filterStartDateOrderElement;
private Datebox filterFinishDateOrderElement;
private Checkbox labelsWithoutInheritance;
private BandboxMultipleSearch bdFiltersOrderElement;
private Textbox filterNameOrderElement;
private Popup filterOptionsPopup;
public OrderPlanningController() {
}
@ -176,10 +181,14 @@ public class OrderPlanningController implements Composer {
.createComponents("/orders/_orderElementTreeFilter.zul",
orderElementFilter, new HashMap<String, String>());
filterComponent.setVariable("treeController", this, true);
filterStartDateOrderElement = (Datebox) filterComponent
filterOptionsPopup = (Popup) filterComponent
.getFellow("filterOptionsPopup");
filterStartDateOrderElement = (Datebox) filterOptionsPopup
.getFellow("filterStartDateOrderElement");
filterFinishDateOrderElement = (Datebox) filterComponent
filterFinishDateOrderElement = (Datebox) filterOptionsPopup
.getFellow("filterFinishDateOrderElement");
labelsWithoutInheritance = (Checkbox) filterOptionsPopup
.getFellow("labelsWithoutInheritance");
bdFiltersOrderElement = (BandboxMultipleSearch) filterComponent
.getFellow("bdFiltersOrderElement");
filterNameOrderElement = (Textbox) filterComponent
@ -227,14 +236,24 @@ public class OrderPlanningController implements Composer {
.getSelectedElements();
Date startDate = filterStartDateOrderElement.getValue();
Date finishDate = filterFinishDateOrderElement.getValue();
boolean ignoreLabelsInheritance = labelsWithoutInheritance.isChecked();
String name = filterNameOrderElement.getValue();
if (listFilters.isEmpty() && startDate == null && finishDate == null
&& name == null) {
return null;
}
return new OrderElementPredicate(listFilters, startDate, finishDate,
name);
name, ignoreLabelsInheritance);
}
public Checkbox getLabelsWithoutInheritance() {
return labelsWithoutInheritance;
}
public void setLabelsWithoutInheritance(Checkbox labelsWithoutInheritance) {
this.labelsWithoutInheritance = labelsWithoutInheritance;
}
private void filterByPredicate(final OrderElementPredicate predicate) {
@ -348,4 +367,7 @@ public class OrderPlanningController implements Composer {
return advanceAssignmentPlanningController;
}
public void toggleOptions() {
filterOptionsPopup.open(300, 150);
}
}

View file

@ -24,16 +24,30 @@
tooltiptext="${i18n:_('Select required criteria set and press filter button')}"/>
<bandboxMultipleSearch id="bdFiltersOrderElement" widthBandbox="300px" widthListbox="400px"
finder="orderElementsMultipleFiltersFinder"/>
<label value="${i18n:_('from')}"/>
<datebox id="filterStartDateOrderElement" constraint = "@{treeController.checkConstraintStartDate}"
width="65px" />
<label value="${i18n:_('to')}"/>
<datebox id="filterFinishDateOrderElement" constraint = "@{treeController.checkConstraintFinishDate}"
width="65px" />
<label value="${i18n:_('name')}"/>
<textbox id="filterNameOrderElement" width="50px"
onOK="treeController.onApplyFilter()" />
<button label="options" style="margin-top: -4px"
tooltiptext="${i18n:_('Set Filter Options')}"
onClick="treeController.toggleOptions()"/>
<button image="/common/img/ico_filter.png" style="margin-top: -4px"
tooltiptext="${i18n:_('Apply filtering to tasks satisfying required criteria')}"
onClick="treeController.onApplyFilter()"/>
<popup id="filterOptionsPopup" width="220px" height="120px">
<groupbox mold="3d" closable="true" width="200px" height="100px">
<vbox>
<hbox>
<label value="${i18n:_('from')}"/>
<datebox id="filterStartDateOrderElement" constraint = "@{treeController.checkConstraintStartDate}"
width="65px" />
<label value="${i18n:_('to')}"/>
<datebox id="filterFinishDateOrderElement" constraint = "@{treeController.checkConstraintFinishDate}"
width="65px" />
</hbox>
<hbox>
<checkbox id="labelsWithoutInheritance" checked="false" label="${i18n:_('Labels without inheritance')}"/>
</hbox>
</vbox>
</groupbox>
</popup>
</hbox>