Changeset 993


Ignore:
Timestamp:
12/14/10 15:52:59 (13 years ago)
Author:
oschonef
Message:
  • revamp virtual collection detail view (work-in-progress)
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowsePrivateCollectionsPage.java

    r963 r993  
    6161                @Override
    6262                public void onClick(AjaxRequestTarget target) {
    63                     doDetails(target, getModelObject());
     63                    doDetails(target, getModel());
    6464                }
    6565            };
     
    172172        deleteDialog.show(target, vc);
    173173    }
    174     private void doDetails(AjaxRequestTarget target, VirtualCollection vc) {
     174
     175    private void doDetails(AjaxRequestTarget target,
     176            IModel<VirtualCollection> vc) {
    175177        setResponsePage(new VirtualCollectionDetailsPage(vc, getPage()));
    176178    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowsePublicCollectionsPage.java

    r960 r993  
    2020                @Override
    2121                public void onClick(AjaxRequestTarget target) {
    22                     doDetails(target, getModelObject());
     22                    doDetails(target, getModel());
    2323                }
    2424            };
     
    4040    }
    4141
    42     private void doDetails(AjaxRequestTarget target, VirtualCollection vc) {
     42    private void doDetails(AjaxRequestTarget target,
     43            IModel<VirtualCollection> vc) {
    4344        setResponsePage(new VirtualCollectionDetailsPage(vc, getPage()));
    4445    }
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/VirtualCollectionDetailsPage.html

    r933 r993  
    77<body>
    88<wicket:extend>
    9   <table style="width: 100%">
    10     <thead style="color: inherit; background-color: inherit; border: none">
    11       <tr><td colspan="2" style="padding: 10px 0; color: red; font-weight: bold; text-align: center">Note: this page is just a proof-of-concept and concept and subject to major overhaul!</td></tr>
    12     </thead>
    13     <tbody style="border: none">
    14       <tr style="border-top: 1px solid #000000; border-bottom: 1px solid #000000">
    15         <td style="vertical-align: top">Name</td>
    16         <td><span wicket:id="name"></span></td>
    17       </tr>
    18       <tr style="border-bottom: 1px solid #000000">
    19         <td style="vertical-align: top">Type</td>
    20         <td><span wicket:id="type"></span></td>
    21       </tr>
    22       <tr style="border-bottom: 1px solid #000000">
    23         <td style="vertical-align: top">Creation Date</td>
    24         <td><span wicket:id="creationDate"></span></td>
    25       </tr>
    26       <tr style="border-bottom: 1px solid #000000">
    27         <td style="vertical-align: top">Description</td>
    28         <td><span wicket:id="description"></span></td>
    29       </tr>
    30       <tr style="border-bottom: 1px solid #000000">
    31         <td style="vertical-align: top">Purpose</td>
    32         <td><span wicket:id="purpose"></span></td>
    33       </tr>
    34       <tr style="border-bottom: 1px solid #000000">
    35         <td style="vertical-align: top">Reproducibility</td>
    36         <td><span wicket:id="reproducibility"></span></td>
    37       </tr>
    38       <tr style="border-bottom: 1px solid #000000">
    39         <td style="vertical-align: top">Reproducibility Notice</td>
    40         <td><span wicket:id="reproducibilityNotice"></span></td>
    41       </tr>
    42       <tr style="border-bottom: 1px solid #000000">
    43         <td style="vertical-align: top">Keywords</td>
    44         <td><ul><li wicket:id="keywords"><span wicket:id="keyword"></span></li></ul></td>
    45       </tr>
    46       <tr style="border-bottom: 1px solid #000000">
    47         <td style="vertical-align: top">Creators</td>
    48         <td>
    49           <ul>
    50             <li wicket:id="creators">
    51               <span wicket:id="person"></span> <br/>
    52               <span wicket:id="address"></span> <br/>
    53               <span wicket:id="email"></span> <br/>
    54               <span wicket:id="organisation"></span> <br/>
    55               <span wicket:id="telephone"></span> <br/>
    56               <span wicket:id="website"></span> <br/>
    57               <span wicket:id="role"></span>
    58             </li>
    59           </ul>
    60         </td>
    61       </tr>
    62       <tr style="border-bottom: 1px solid #000000">
    63         <td style="vertical-align: top">Resources</td>
    64         <td>
    65           <ul>
    66             <li wicket:id="resources">
    67               <span wicket:id="type"></span> <span wicket:id="ref"></span>
    68             </li>
    69           </ul>
    70         </td>
    71       </tr>
    72       <tr style="border-bottom: 1px solid #000000">
    73         <td style="vertical-align: top">GeneratedBy.description</td>
    74         <td><span wicket:id="generatedBy.description"></span></td>
    75       </tr>
    76       <tr style="border-bottom: 1px solid #000000">
    77         <td style="vertical-align: top">GeneratedBy.uri</td>
    78         <td><span wicket:id="generatedBy.uri"></span></td>
    79       </tr>
    80       <tr style="border-bottom: 1px solid #000000">
    81         <td style="vertical-align: top">GeneratedBy.query.profile</td>
    82         <td><span wicket:id="generatedBy.query.profile"></span></td>
    83       </tr>
    84       <tr style="border-bottom: 1px solid #000000">
    85         <td style="vertical-align: top">GeneratedBy.query.value</td>
    86         <td><span wicket:id="generatedBy.query.value"></span></td>
    87       </tr>
    88     </tbody>
    89     <tfoot>
    90       <tr><td colspan="2" style="padding: 10px 0; text-align: center"><a wicket:id="back" href="#">[return to previous page]</a></td></tr>
    91     </tfoot>
    92   </table>
     9  <div wicket:id="generalBorder">
     10    <label>Name</label> <span wicket:id="name"></span> <br />
     11    <label>Type</label> <span wicket:id="type"></span> <br />
     12    <label>Creation Date</label> <span wicket:id="creationDate"></span> <br />
     13
     14    <wicket:enclosure child="description">
     15      <label>Description</label> <div wicket:id="description"></div> <br />
     16    </wicket:enclosure>
     17    <wicket:enclosure child="purpose">
     18      <label>Purpose</label> <span wicket:id="purpose"></span> <br />
     19    </wicket:enclosure>
     20    <wicket:enclosure child="reproducibility">
     21      <label>Reproducibility</label> <span wicket:id="reproducibility"></span> <br />
     22    </wicket:enclosure>
     23    <wicket:enclosure child="reproducibilityNotice">
     24      <label>Reproducibility Notice</label> <span wicket:id="reproducibilityNotice"></span> <br />
     25    </wicket:enclosure>
     26    <wicket:enclosure child="keywords">
     27      <label>Keywords</label>
     28      <ul><li wicket:id="keywords"><span wicket:id="keyword"></span></li></ul>
     29    </wicket:enclosure>
     30  </div>
     31 
     32  <div wicket:id="creatorsBorder">
     33    <ul><li wicket:id="creators">
     34      <label>Person</label> <span wicket:id="person"></span> <br />
     35      <wicket:enclosure child="address">
     36        <label>Address</label> <span wicket:id="address"></span> <br />
     37      </wicket:enclosure>
     38      <wicket:enclosure child="email">
     39        <label>Email</label> <span wicket:id="email"></span> <br />
     40      </wicket:enclosure>
     41      <wicket:enclosure child="organisation">
     42        <label>Organisation</label> <span wicket:id="organisation"></span> <br />
     43      </wicket:enclosure>
     44      <wicket:enclosure child="telephone">
     45        <label>Telephone</label> <span wicket:id="telephone"></span> <br />
     46      </wicket:enclosure>
     47      <wicket:enclosure child="website">
     48        <label>Website</label> <a wicket:id="website"></a> <br />
     49      </wicket:enclosure>
     50      <wicket:enclosure child="role">
     51        <label>Role</label> <span wicket:id="role"></span> <br />
     52      </wicket:enclosure>
     53    </li>
     54    </ul>
     55  </div>
     56
     57  <div wicket:id="resourcesBorder">
     58    <table wicket:id="resourcesTable"></table>
     59  </div>
     60
     61  <div wicket:id="generatedByBorder">
     62    <label>Description</label> <div wicket:id="generatedBy.description"></div> <br />
     63    <wicket:enclosure child="generatedBy.uri">
     64      <label>URI</label> <span wicket:id="generatedBy.uri"></span> <br />
     65    </wicket:enclosure>
     66    <wicket:enclosure child="generatedBy.query.profile">
     67      <label>Profile</label> <span wicket:id="generatedBy.query.profile"></span> <br />
     68    </wicket:enclosure>
     69    <wicket:enclosure child="generatedBy.query.value">
     70      <label>Profile</label> <span wicket:id="generatedBy.query.value"></span> <br />
     71    </wicket:enclosure>
     72  </div>
     73
     74  <a wicket:id="back" href="#">[return to previous page]</a>
    9375</wicket:extend>
    9476</body>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/VirtualCollectionDetailsPage.java

    r933 r993  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
    22
     3import java.util.ArrayList;
     4import java.util.Iterator;
     5import java.util.List;
     6
    37import org.apache.wicket.Page;
    4 import org.apache.wicket.WicketRuntimeException;
     8import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
     9import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
     10import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
     11import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
     12import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
    513import org.apache.wicket.markup.html.basic.Label;
    614import org.apache.wicket.markup.html.basic.MultiLineLabel;
     15import org.apache.wicket.markup.html.border.Border;
     16import org.apache.wicket.markup.html.link.ExternalLink;
    717import org.apache.wicket.markup.html.link.Link;
     18import org.apache.wicket.markup.html.link.PopupSettings;
    819import org.apache.wicket.markup.html.list.ListItem;
    920import org.apache.wicket.markup.html.list.ListView;
     21import org.apache.wicket.model.ComponentPropertyModel;
    1022import org.apache.wicket.model.CompoundPropertyModel;
     23import org.apache.wicket.model.IModel;
     24import org.apache.wicket.model.Model;
    1125
    12 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
    13 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
     26import eu.clarin.cmdi.virtualcollectionregistry.gui.border.AjaxToggleBorder;
    1427import eu.clarin.cmdi.virtualcollectionregistry.model.Creator;
    1528import eu.clarin.cmdi.virtualcollectionregistry.model.Resource;
    1629import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     30import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection.Type;
    1731
    1832
    1933@SuppressWarnings("serial")
    2034public class VirtualCollectionDetailsPage extends BasePage {
    21     public VirtualCollectionDetailsPage(final VirtualCollection xvc,
     35    private static final String CSS_CLASS = "collectionsDetails";
     36
     37    public VirtualCollectionDetailsPage(final IModel<VirtualCollection> model,
    2238            final Page previousPage) {
    23         super();
     39        super(model);
     40
    2441        if (previousPage == null) {
    2542            throw new IllegalArgumentException("previousPage == null");
     
    3249        };
    3350        add(backLink);
     51
     52        final Border general = new AjaxToggleBorder("generalBorder",
     53                new Model<String>("General"), CSS_CLASS);
     54        add(general);
     55        general.add(new Label("name"));
     56        general.add(new Label("type"));
     57        general.add(new Label("creationDate"));
     58        general.add(new MultiLineLabel("description"));
     59        general.add(new Label("purpose"));
     60        general.add(new Label("reproducibility"));
     61        general.add(new Label("reproducibilityNotice"));
     62        final ListView<String> keywords = new ListView<String>("keywords") {
     63            @Override
     64            protected void populateItem(ListItem<String> item) {
     65                item.add(new Label("keyword", item.getModelObject()));
     66            }
     67        };
     68        general.add(keywords);
     69
     70        final Border creators = new AjaxToggleBorder("creatorsBorder",
     71                new Model<String>("Creators"), CSS_CLASS);
     72        add(creators);
     73        creators.add(new ListView<Creator>("creators") {
     74            @Override
     75            protected void populateItem(ListItem<Creator> item) {
     76                item.add(new Label("person"));
     77                item.add(new MultiLineLabel("address"));
     78                item.add(new Label("organisation"));
     79                item.add(new Label("email"));
     80                item.add(new Label("telephone"));
     81                final IModel<String> siteModel =
     82                    new ComponentPropertyModel<String>("website");
     83                item.add(new ExternalLink("website", siteModel, siteModel)
     84                        .setPopupSettings(new PopupSettings()));
     85                item.add(new Label("role"));
     86            }
     87
     88            @Override
     89            protected IModel<Creator> getListItemModel(
     90                    IModel<? extends List<Creator>> listViewModel, int index) {
     91                final List<Creator> creators = listViewModel.getObject();
     92                return new CompoundPropertyModel<Creator>(creators.get(index));
     93            }
     94        });
     95
     96        final Border resources = new AjaxToggleBorder("resourcesBorder",
     97                new Model<String>("Resources"), CSS_CLASS);
     98        add(resources);
    3499       
    35         try {
    36             // FIXME: better use detachable model for collection list?
    37             final VirtualCollectionRegistry vcr =
    38                 VirtualCollectionRegistry.instance();
    39             final VirtualCollection vc =
    40                 vcr.retrieveVirtualCollection(xvc.getId());
    41             setDefaultModel(new CompoundPropertyModel<VirtualCollection>(vc));
    42             add(new Label("name"));
    43             add(new Label("type"));
    44             add(new Label("creationDate"));
    45             add(new MultiLineLabel("description"));
    46             add(new Label("purpose"));
    47             add(new Label("reproducibility"));
    48             add(new Label("reproducibilityNotice"));
    49             add(new ListView<String>("keywords") {
    50                 @Override
    51                 protected void populateItem(ListItem<String> item) {
    52                     item.add(new Label("keyword", item.getModelObject()));
    53                 }
    54             });
    55             add(new ListView<Creator>("creators") {
    56                 @Override
    57                 protected void populateItem(ListItem<Creator> item) {
    58                     final Creator c = item.getModelObject();
    59                     item.add(new Label("person", c.getPerson()));
    60                     item.add(new Label("address", c.getAddress()));
    61                     item.add(new Label("organisation", c.getOrganisation()));
    62                     item.add(new Label("email", c.getEMail()));
    63                     item.add(new Label("telephone", c.getTelephone()));
    64                     item.add(new Label("website", c.getWebsite()));
    65                     item.add(new Label("role", c.getRole()));
    66                 }
    67             });
    68             add(new ListView<Resource>("resources") {
    69                 @Override
    70                 protected void populateItem(ListItem<Resource> item) {
    71                     final Resource r = item.getModelObject();
    72                     item.add(new Label("type", r.getType().toString()));
    73                     item.add(new Label("ref", r.getRef()));
    74                 }
    75             });
    76             add(new Label("generatedBy.description"));
    77             add(new Label("generatedBy.uri"));
    78             add(new Label("generatedBy.query.profile"));
    79             add(new Label("generatedBy.query.value"));
    80         } catch (VirtualCollectionRegistryException e) {
    81             throw new WicketRuntimeException("fail", e);
    82         }
     100        final VirtualCollection vc = model.getObject();
     101        final List<IColumn<Resource>> cols = new ArrayList<IColumn<Resource>>();
     102       
     103        cols.add(new PropertyColumn<Resource>(new Model<String>("Type"), "type"));
     104        cols.add(new PropertyColumn<Resource>(new Model<String>("Reference"), "ref"));
     105
     106        final DataTable<Resource> resourcesTable =
     107            new AjaxFallbackDefaultDataTable<Resource>("resourcesTable",
     108                    cols,
     109                    new SortableDataProvider<Resource>() {
     110                        @Override
     111                        public Iterator<? extends Resource>
     112                            iterator(int first, int count) {
     113                            return vc.getResources().listIterator(first);
     114                        }
     115
     116                        @Override
     117                        public IModel<Resource> model(Resource resource) {
     118                            return new Model<Resource>(resource);
     119                        }
     120
     121                        @Override
     122                        public int size() {
     123                            return vc.getResources().size();
     124                        }
     125                    },
     126                    64);
     127        resources.add(resourcesTable);
     128        resources.setVisible(model.getObject().getType() == Type.EXTENSIONAL);
     129
     130        final Border generated = new AjaxToggleBorder("generatedByBorder",
     131                new Model<String>("Intensional Collection Query"), CSS_CLASS);
     132        add(generated);
     133        generated.add(new Label("generatedBy.description"));
     134        generated.add(new Label("generatedBy.uri"));
     135        generated.add(new Label("generatedBy.query.profile"));
     136        generated.add(new Label("generatedBy.query.value"));
     137        generated.setVisible(model.getObject().getType() == Type.INTENSIONAL);
    83138    }
    84139
Note: See TracChangeset for help on using the changeset viewer.