Changeset 963


Ignore:
Timestamp:
12/06/10 16:55:28 (13 years ago)
Author:
oschonef
Message:
  • improve virtual collection list filtering
  • some minor clean-ups
  • add wicket-datetime extensions
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry
Files:
6 added
13 edited

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/pom.xml

    r953 r963  
    316316    <dependency>
    317317      <groupId>org.apache.wicket</groupId>
     318      <artifactId>wicket-datetime</artifactId>
     319      <version>${wicket.version}</version>
     320    </dependency>
     321
     322    <dependency>
     323      <groupId>org.apache.wicket</groupId>
    318324      <artifactId>wicket-extensions</artifactId>
    319325      <version>${wicket.version}</version>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowsePrivateCollectionsPage.java

    r960 r963  
    151151
    152152        publishDialog = new PublishCollectionDialog("publishCollectionDialog",
    153                 table.getTable());
     153                table);
    154154        add(publishDialog);
    155155        deleteDialog = new DeleteCollectionDialog("deleteCollectionDialog",
    156                 table.getTable());
     156                table);
    157157        add(deleteDialog);
    158158    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnActions.java

    r960 r963  
    55import org.apache.wicket.extensions.markup.html.repeater.data.table.HeaderlessColumn;
    66import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    7 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.GoFilter;
    87import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilteredColumn;
    98import org.apache.wicket.markup.repeater.Item;
     
    2423    @Override
    2524    public Component getFilter(String componentId, FilterForm<?> form) {
    26         return new GoFilter(componentId);
     25        return new AjaxGoAndClearFilter(componentId);
    2726    }
    2827
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnCreated.java

    r960 r963  
    66import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    77import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredAbstractColumn;
    8 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.NoFilter;
    98import org.apache.wicket.markup.html.basic.Label;
    109import org.apache.wicket.markup.repeater.Item;
     10import org.apache.wicket.model.CompoundPropertyModel;
    1111import org.apache.wicket.model.IModel;
    12 import org.apache.wicket.model.StringResourceModel;
     12import org.apache.wicket.model.ResourceModel;
    1313
    1414import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    2020
    2121    ColumnCreated(VirtualCollectionTable table) {
    22         super(new StringResourceModel("column.created", table, null),
    23             "created");
     22        super(new ResourceModel("column.created", "Created"), "created");
    2423    }
    2524
    2625    @Override
    2726    public Component getFilter(String componentId, FilterForm<?> form) {
    28         return new NoFilter(componentId);
     27        final FilterState state =
     28            (FilterState) form.getStateLocator().getFilterState();
     29        final IModel<FilterState> model =
     30            new CompoundPropertyModel<FilterState>(state);
     31        return new CreatedDateFilter(componentId, model, form);
    2932    }
    3033
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnDescription.java

    r960 r963  
    77import org.apache.wicket.model.IModel;
    88import org.apache.wicket.model.PropertyModel;
    9 import org.apache.wicket.model.StringResourceModel;
     9import org.apache.wicket.model.ResourceModel;
    1010
    1111import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    1515
    1616    ColumnDescription(VirtualCollectionTable table) {
    17         super(new StringResourceModel("column.description", table, null),
     17        super(new ResourceModel("column.description", "Description"),
    1818                "description", "description");
    1919    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnName.java

    r960 r963  
    77import org.apache.wicket.model.IModel;
    88import org.apache.wicket.model.PropertyModel;
    9 import org.apache.wicket.model.StringResourceModel;
     9import org.apache.wicket.model.ResourceModel;
    1010
    1111import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    1515
    1616    ColumnName(VirtualCollectionTable table) {
    17         super(new StringResourceModel("column.title", table, null), "name",
     17        super(new ResourceModel("column.name", "Name"), "name",
    1818                "name");
    1919    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnState.java

    r960 r963  
    1414import org.apache.wicket.model.IModel;
    1515import org.apache.wicket.model.PropertyModel;
    16 import org.apache.wicket.model.StringResourceModel;
     16import org.apache.wicket.model.ResourceModel;
    1717
    1818import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    2020@SuppressWarnings("serial")
    2121final class ColumnState extends FilteredAbstractColumn<VirtualCollection> {
    22     private final static List<VirtualCollection.State> STATE_VALUES =
     22    private static final List<VirtualCollection.State> STATE_VALUES =
    2323        Arrays.asList(VirtualCollection.State.PRIVATE,
    2424                      VirtualCollection.State.PUBLIC,
    2525                      VirtualCollection.State.PUBLIC_PENDING,
    2626                      VirtualCollection.State.DELETED);
    27     private transient final VirtualCollectionTable table;
     27    private final EnumChoiceRenderer<VirtualCollection.State> renderer;
    2828
    2929    ColumnState(VirtualCollectionTable table) {
    30         super(new StringResourceModel("column.state", table, null), "state");
    31         this.table = table;
     30        super(new ResourceModel("column.state", "State"), "state");
     31        this.renderer = new EnumChoiceRenderer<VirtualCollection.State>(table);
    3232    }
    3333
     
    3939            new PropertyModel<VirtualCollection.State>(state, "state");
    4040        return new ChoiceFilter<VirtualCollection.State>(componentId, model,
    41                 form, STATE_VALUES,
    42                 new EnumChoiceRenderer<VirtualCollection.State>(table), false);
     41                form, STATE_VALUES, renderer, true);
    4342    }
    4443
     
    4746            Item<ICellPopulator<VirtualCollection>> item,
    4847            String componentId, IModel<VirtualCollection> model) {
    49         final VirtualCollection.State value = model.getObject().getState();
    50         final String key =
    51             value.getDeclaringClass().getSimpleName() + "." + value.name();
    52         item.add(new Label(componentId,
    53                 new StringResourceModel(key, table, null)));
     48        final VirtualCollection.State state = model.getObject().getState();
     49        final String label = renderer.getDisplayValue(state).toString();
     50        item.add(new Label(componentId, label));
    5451    }
    5552
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnType.java

    r960 r963  
    1414import org.apache.wicket.model.IModel;
    1515import org.apache.wicket.model.PropertyModel;
    16 import org.apache.wicket.model.StringResourceModel;
     16import org.apache.wicket.model.ResourceModel;
    1717
    1818import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    2222    private static final List<VirtualCollection.Type> TYPE_VALUES =
    2323        Arrays.asList(VirtualCollection.Type.values());
    24    
    25     private transient final VirtualCollectionTable table;
    26    
     24    private final EnumChoiceRenderer<VirtualCollection.Type> renderer;
     25
    2726    ColumnType(VirtualCollectionTable table) {
    28         super(new StringResourceModel("column.type", table, null), "type");
    29         this.table = table;
     27        super(new ResourceModel("column.type", "Type"), "type");
     28        this.renderer = new EnumChoiceRenderer<VirtualCollection.Type>(table);
    3029    }
    3130
     
    3736            new PropertyModel<VirtualCollection.Type>(state, "type");
    3837        return new ChoiceFilter<VirtualCollection.Type>(componentId, model,
    39                 form, TYPE_VALUES,
    40                 new EnumChoiceRenderer<VirtualCollection.Type>(table), false);
     38                form, TYPE_VALUES, renderer, true);
    4139    }
    4240
     
    4442    public void populateItem(Item<ICellPopulator<VirtualCollection>> item,
    4543            String componentId, IModel<VirtualCollection> model) {
    46         final VirtualCollection.Type value = model.getObject().getType();
    47         final String key =
    48             value.getDeclaringClass().getSimpleName() + "." + value.name();
    49         item.add(new Label(componentId,
    50                 new StringResourceModel(key, table, null)));
     44        final VirtualCollection.Type type = model.getObject().getType();
     45        final String label = renderer.getDisplayValue(type).toString();
     46        item.add(new Label(componentId, label));
    5147    }
    5248
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/FilterState.java

    r960 r963  
    22
    33import java.io.Serializable;
     4import java.util.Date;
    45
    56import eu.clarin.cmdi.virtualcollectionregistry.QueryOptions;
    6 import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
    77import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    88
     
    1313    private VirtualCollection.State state;
    1414    private String description;
    15    
     15    private QueryOptions.Relation createdRelation = QueryOptions.Relation.EQ;
     16    private Date created;
     17
    1618    public String getName() {
    1719        return name;
     
    2022    public void setName(String name) {
    2123        this.name = name;
     24    }
     25
     26    public boolean hasName() {
     27        return name != null;
    2228    }
    2329
     
    3036    }
    3137
     38    public boolean hasType() {
     39        return type != null;
     40    }
     41
    3242    public VirtualCollection.State getState() {
    3343        return state;
     
    3646    public void setType(VirtualCollection.State state) {
    3747        this.state = state;
     48    }
     49
     50    public boolean hasState() {
     51        return state != null;
    3852    }
    3953
     
    4660    }
    4761
    48     public boolean isEmpty() {
    49         return (name == null) && (type == null) && (state == null) &&
    50                 (description == null);
     62    public boolean hasDescription() {
     63        return description != null;
    5164    }
    5265
    53     public QueryOptions getQueryOptions(boolean privateMode) {
    54         QueryOptions options = new QueryOptions();
    55         QueryOptions.Filter and = options.and();
    56         if (privateMode) {
    57             ApplicationSession session = ApplicationSession.get();
    58             and.add(QueryOptions.Property.VC_OWNER,
    59                     QueryOptions.Relation.EQ, session.getUser());
    60         } else {
    61             and.add(QueryOptions.Property.VC_STATE,
    62                     QueryOptions.Relation.EQ,
    63                     VirtualCollection.State.PUBLIC);
    64         }
    65 
    66         if (name != null) {
    67             and.add(QueryOptions.Property.VC_NAME,
    68                     QueryOptions.Relation.EQ, name);
    69         }
    70         if (type != null) {
    71             and.add(QueryOptions.Property.VC_TYPE,
    72                     QueryOptions.Relation.EQ, type);
    73         }
    74         if (state != null) {
    75             and.add(QueryOptions.Property.VC_STATE,
    76                     QueryOptions.Relation.EQ, state);
    77         }
    78         if (description != null) {
    79             and.add(QueryOptions.Property.VC_DESCRIPTION,
    80                     QueryOptions.Relation.EQ, description);
    81         }
    82         options.setFilter(and);
    83         return options;
     66    public QueryOptions.Relation getCreatedRelation() {
     67        return createdRelation;
     68    }
     69   
     70    public void setCreatedRelation(QueryOptions.Relation createdRelation) {
     71        this.createdRelation = createdRelation;
    8472    }
    8573
    86     public String toString() {
    87         boolean first = true;
    88         StringBuilder sb = new StringBuilder("FilterState[");
    89         if (name != null) {
    90             sb.append("name=\"");
    91             sb.append(name);
    92             sb.append("\"");
    93             first = false;
    94         }
    95         if (type != null) {
    96             if (!first) {
    97                 sb.append(", ");
    98             } else {
    99                 first = false;
    100             }
    101             sb.append("type=\"");
    102             sb.append(type);
    103             sb.append("\"");
    104         }
    105         if (state != null) {
    106             if (!first) {
    107                 sb.append(", ");
    108             } else {
    109                 first = false;
    110             }
    111             sb.append("state=\"");
    112             sb.append(state);
    113             sb.append("\"");
    114         }
    115         if (description != null) {
    116             if (!first) {
    117                 sb.append(", ");
    118             } else {
    119                 first = false;
    120             }
    121             sb.append("description=\"");
    122             sb.append(description);
    123             sb.append("\"");
    124         }
    125         sb.append("]");
    126         return sb.toString();
     74    public Date getCreated() {
     75        return created;
     76    }
     77   
     78    public void setCreated(Date created) {
     79        this.created = created;
     80    }
     81
     82    public boolean hasCreated() {
     83        return created != null;
     84    }
     85
     86    public void clear() {
     87        name = null;
     88        type = null;
     89        state = null;
     90        description = null;
     91        createdRelation = QueryOptions.Relation.EQ;
     92        created = null;
    12793    }
    12894
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/Provider.java

    r960 r963  
    99import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
    1010import org.apache.wicket.model.IModel;
    11 import org.apache.wicket.model.Model;
    1211
    1312import eu.clarin.cmdi.virtualcollectionregistry.QueryOptions;
     
    1514import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
    1615import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
     16import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
     17import eu.clarin.cmdi.virtualcollectionregistry.gui.DetachableVirtualCollectionModel;
    1718import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    1819
     
    2627    public Provider(boolean privateMode) {
    2728        this.privateMode = privateMode;
     29        setSort("created", false);
    2830    }
    2931
     
    4042    @Override
    4143    public IModel<VirtualCollection> model(VirtualCollection vc) {
    42         // FIXME: some kind of detachable model?
    43         return new Model<VirtualCollection>(vc);
     44        return new DetachableVirtualCollectionModel(vc);
    4445    }
    4546
     
    7071
    7172    private QueryOptions getFilter() {
    72         // XXX: caching
    73         final QueryOptions options = filterstate.getQueryOptions(privateMode);
     73        QueryOptions options = new QueryOptions();
     74
     75        QueryOptions.Filter filter = options.and();
     76        if (privateMode) {
     77            ApplicationSession session = ApplicationSession.get();
     78            filter.add(QueryOptions.Property.VC_OWNER,
     79                       QueryOptions.Relation.EQ,
     80                       session.getUser());
     81        } else {
     82            filter.add(QueryOptions.Property.VC_STATE,
     83                       QueryOptions.Relation.EQ,
     84                       VirtualCollection.State.PUBLIC);
     85        }
     86        if (filterstate.hasName()) {
     87            filter.add(QueryOptions.Property.VC_NAME,
     88                       QueryOptions.Relation.EQ,
     89                       filterstate.getName());
     90        }
     91        if (filterstate.hasType()) {
     92            filter.add(QueryOptions.Property.VC_TYPE,
     93                       QueryOptions.Relation.EQ,
     94                       filterstate.getType());
     95        }
     96        if (filterstate.hasState()) {
     97            filter.add(QueryOptions.Property.VC_STATE,
     98                       QueryOptions.Relation.EQ,
     99                       filterstate.getState());
     100        }
     101        if (filterstate.hasDescription()) {
     102            filter.add(QueryOptions.Property.VC_DESCRIPTION,
     103                       QueryOptions.Relation.EQ,
     104                       filterstate.getDescription());
     105        }
     106        if (filterstate.hasCreated()) {
     107            filter.add(QueryOptions.Property.VC_CREATION_DATE,
     108                       filterstate.getCreatedRelation(),
     109                       filterstate.getCreated());
     110        }
     111        options.setFilter(filter);
     112
    74113        final SortParam s = getSort();
    75114        if (s != null) {
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/VirtualCollectionTable.html

    r960 r963  
    1212    </div>
    1313    <table wicket:id="table" class="collectionsTable"></table>
     14    <div wicket:id="feedback" class="collectionsTableFeedback"></div>
    1415  </form>
    1516</wicket:panel>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/VirtualCollectionTable.java

    r960 r963  
    99import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    1010import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterToolbar;
     11import org.apache.wicket.markup.html.panel.FeedbackPanel;
    1112import org.apache.wicket.markup.html.panel.Panel;
    1213import org.apache.wicket.model.IModel;
     
    1617@SuppressWarnings("serial")
    1718public abstract class VirtualCollectionTable extends Panel {
    18     private final DataTable<VirtualCollection> table;
    1919
    2020    public VirtualCollectionTable(String id, boolean privateMode) {
     
    3434        columns.add(new ColumnActions(this));
    3535        Provider provider = new Provider(privateMode);
    36         final FilterForm<FilterState> filterform =
     36        final FilterForm<FilterState> form =
    3737            new FilterForm<FilterState>("filterform", provider);
    38         add(filterform);
     38        form.setOutputMarkupId(true);
     39        add(form);
    3940
    4041        // table
    41         table = new AjaxFallbackDefaultDataTable<VirtualCollection>("table",
     42        final DataTable<VirtualCollection> table =
     43            new AjaxFallbackDefaultDataTable<VirtualCollection>("table",
    4244                columns, provider, 32);
    43         // XXX: implement own Ajax filter toolbar
    44         table.addTopToolbar(new FilterToolbar(table, filterform, provider));
     45        table.addTopToolbar(new FilterToolbar(table, form, provider));
    4546        table.setOutputMarkupId(true);
    46         filterform.add(table);
    47         add(filterform);
     47        form.add(table);
     48        form.add(new FeedbackPanel("feedback"));
     49        add(form);
    4850    }
    4951
     
    5153            IModel<VirtualCollection> model);
    5254
    53     public DataTable<VirtualCollection> getTable() {
    54         return table;
    55     }
    56 
    5755} // class VirtualCollectionTable
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/VirtualCollectionTable.properties

    r960 r963  
    1 column.title: Title
     1column.name: Name
    22column.type: Type
    33column.state: State
     
    1111State.DELETED: deleted
    1212State.DEAD: dead
     13button.filter: Filter
     14button.clear: Clear
Note: See TracChangeset for help on using the changeset viewer.