From 1d9cd2d691578c8ac151febc362fd02427989f38 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 30 Mar 2011 15:53:00 +0000 Subject: [PATCH] Customizable object list. git-svn-id: https://svn.libreccm.org/ccm/trunk@810 8810af33-2d31-482b-a856-94f89814c4df --- .../navigation/ui/object/CompareFilter.java | 189 ++++++++++ .../ui/object/ComplexObjectList.java | 75 ++-- .../ui/object/CustomizableObjectList.java | 324 ++++++++++++++++++ .../london/navigation/ui/object/Filter.java | 34 ++ .../navigation/ui/object/SelectFilter.java | 143 ++++++++ .../navigation/ui/object/TextFilter.java | 76 ++++ .../bundles/devel/cfg/integration.properties | 1 + 7 files changed, 805 insertions(+), 37 deletions(-) create mode 100644 ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java create mode 100644 ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CustomizableObjectList.java create mode 100644 ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/Filter.java create mode 100644 ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/SelectFilter.java create mode 100644 ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/TextFilter.java diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java new file mode 100644 index 000000000..1c634378b --- /dev/null +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java @@ -0,0 +1,189 @@ +package com.arsdigita.london.navigation.ui.object; + +import com.arsdigita.xml.Element; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * A filter for the {@link CustomizableObjectList}. The {@code CompareFilter} + * filters the object list using a provided value and a operator. Valid + * operators defined in the {@link Operators} enumeration. + * + * @author Jens Pelzetter + */ +public class CompareFilter implements Filter { + + private static final String ALL = "--ALL--"; + private final String property; + private final String label; + private final boolean allOption; + private final boolean allOptionIsDefault; + private final boolean propertyIsNumeric; + private Map options = new LinkedHashMap(); + private String value; + + protected CompareFilter(final String property, + final String label, + final boolean allOption, + final boolean allOptionIsDefault, + final boolean propertyIsNumeric) { + this.property = property; + this.label = label; + this.allOption = allOption; + this.allOptionIsDefault = allOptionIsDefault; + this.propertyIsNumeric = propertyIsNumeric; + } + + @Override + public void setValue(final String value) { + this.value = value; + } + + public CompareFilter addOption(final String label, final String value) { + return addOption(label, Operators.EQ, value); + } + + public CompareFilter addOption(final String label, + final Operators operator, + final String value) { + Option option; + option = new Option(label, operator, value); + options.put(label, option); + return this; + } + + @Override + public String getFilter() { + Option selectedOption; + StringBuffer filter; + + if ((value == null) || value.isEmpty()) { + if (allOptionIsDefault) { + value = ALL; + } else { + value = + new ArrayList