Changeset 5491


Ignore:
Timestamp:
07/28/14 12:05:49 (10 years ago)
Author:
Twan Goosen
Message:

Added label and description to resources. Labels and descriptions can now be stored, viewed and edited.

Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry
Files:
5 edited

Legend:

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

    r5490 r5491  
    66    <wicket:panel>
    77        <a target="_blank" wicket:id="reference"><span wicket:id="referenceLabel"></span></a>
     8        <p wicket:id="description">[description]</p>
    89    </wicket:panel>
    910</html>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/ReferenceLinkPanel.java

    r5489 r5491  
    33import eu.clarin.cmdi.virtualcollectionregistry.gui.HandleLinkModel;
    44import eu.clarin.cmdi.virtualcollectionregistry.model.Resource;
     5import org.apache.wicket.AttributeModifier;
    56import org.apache.wicket.markup.html.basic.Label;
    67import org.apache.wicket.markup.html.link.ExternalLink;
    78import org.apache.wicket.markup.html.panel.Panel;
     9import org.apache.wicket.model.AbstractReadOnlyModel;
    810import org.apache.wicket.model.IModel;
    911import org.apache.wicket.model.PropertyModel;
     12import org.apache.wicket.util.string.Strings;
    1013
    1114/**
     
    1720    public ReferenceLinkPanel(String id, IModel<Resource> model) {
    1821        super(id, model);
    19        
    20         // Rerence model shared by link and label
    21         final PropertyModel refModel = new PropertyModel(model, "ref");
    22        
     22
     23        // Shared rerence model
     24        final PropertyModel<String> refModel = new PropertyModel<>(model, "ref");
     25
    2326        // Wrapper for link model that detects handles
    2427        final HandleLinkModel linkModel = new HandleLinkModel(refModel);
    2528        final ExternalLink link = new ExternalLink("reference", linkModel);
    26        
     29        link.add(new AttributeModifier("title", true, refModel));
     30
    2731        // Set label on link
    2832        // TODO: get label from 'label' property if available
    29         link.add(new Label("referenceLabel", refModel));
    30        
     33        final ReferenceLabelModel labelModel = new ReferenceLabelModel(model);
     34        link.add(new Label("referenceLabel", labelModel));
     35
    3136        add(link);
     37
     38        final PropertyModel<String> descriptionModel = new PropertyModel<>(model, "description");
     39        add(new Label("description", descriptionModel) {
     40
     41            @Override
     42            protected void onConfigure() {
     43                super.onConfigure();
     44                setVisible(descriptionModel.getObject() != null);
     45            }
     46
     47        });
     48
     49    }
     50
     51    /**
     52     * String model that returns the label of a {@link Resource} if it is
     53     * available (not null or empty), otherwise the reference URI
     54     */
     55    private static class ReferenceLabelModel extends AbstractReadOnlyModel<String> {
     56
     57        private final IModel<Resource> resourceModel;
     58
     59        public ReferenceLabelModel(IModel<Resource> resourceModel) {
     60            this.resourceModel = resourceModel;
     61        }
     62
     63        @Override
     64        public String getObject() {
     65            final Resource resource = resourceModel.getObject();
     66            if (resource == null) {
     67                return null;
     68            } else {
     69                if (!Strings.isEmpty(resource.getLabel())) {
     70                    return resource.getLabel();
     71                }
     72                return resource.getRef();
     73            }
     74        }
     75
     76        @Override
     77        public void detach() {
     78            resourceModel.detach();
     79        }
     80
    3281    }
    3382
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/wizard/EditResourceDialog$Content.html

    r906 r5491  
    1717      <input wicket:id="ref" id="edit_resource_ref" type="text" />
    1818    </div>
     19    <div class="optional">
     20      <label for="edit_resource_label">Label</label>
     21      <input wicket:id="label" id="edit_resource_label" type="text" />
     22    </div>
     23    <div class="optional">
     24      <label for="edit_resource_description">Description</label>
     25      <input wicket:id="description" id="edit_resource_description" type="text" />
     26    </div>
    1927  </fieldset>
    2028  <div wicket:id="feedback" class="feedback"></div>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/wizard/EditResourceDialog.java

    r5448 r5491  
    1010import org.apache.wicket.markup.html.form.TextField;
    1111import org.apache.wicket.markup.html.panel.FeedbackPanel;
    12 import org.apache.wicket.model.CompoundPropertyModel;
    1312import org.apache.wicket.model.IModel;
    1413import org.apache.wicket.model.Model;
     
    2120@SuppressWarnings("serial")
    2221public abstract class EditResourceDialog extends ModalEditDialogBase<Resource> {
     22
    2323    private final class Content extends
    2424            ModalEditDialogBase<Resource>.ContentPanel {
     25
    2526        private final Form<Resource> form;
    2627        private final FeedbackPanel feedbackPanel;
    27 
     28       
    2829        public Content(String id, IModel<Resource> model) {
    2930            super(id);
    30             form = new Form<Resource>("editResourceForm", model);
    31             final DropDownChoice<Resource.Type> typeChoice =
    32                 new DropDownChoice<Resource.Type>("type",
    33                         Arrays.asList(Resource.Type.values()),
    34                         new EnumChoiceRenderer<Resource.Type>(this));
    35             typeChoice.setRequired(true);
    36             form.add(typeChoice);
    37             final TextField<String> refField =
    38                 new RequiredTextField<String>("ref");
    39             refField.add(new StringValidator.MaximumLengthValidator(255));
    40             refField.add(new UrlValidator(UrlValidator.NO_FRAGMENTS));
    41             form.add(refField);
     31            form = new Form<>("editResourceForm", model);
     32                       
     33            form.add(new DropDownChoice<>("type",
     34                    Arrays.asList(Resource.Type.values()),
     35                    new EnumChoiceRenderer<Resource.Type>(this))
     36                    .setRequired(true)
     37            );
     38           
     39            form.add(new RequiredTextField<String>("ref")
     40                    .add(new StringValidator.MaximumLengthValidator(255))
     41                    .add(new UrlValidator(UrlValidator.NO_FRAGMENTS)));
     42           
     43            form.add(new TextField<String>("label"));
     44            form.add(new TextField<String>("description"));
     45           
    4246            feedbackPanel = new FeedbackPanel("feedback");
    4347            form.add(feedbackPanel);
    4448            add(form);
    4549        }
    46 
     50       
    4751        @Override
    4852        public Form<Resource> getForm() {
    4953            return form;
    5054        }
    51 
     55       
    5256        @Override
    5357        public FeedbackPanel getFeedbackPanel() {
     
    5660    } // class EditResourceDialog.Content
    5761
    58 
    5962    public EditResourceDialog(final String id) {
    60         super(id, new Model<String>("Add/Edit Resource"));
     63        super(id, Model.of("Add/Edit Resource"));
    6164        setInitialWidth(600);
    6265    }
    63 
     66   
    6467    @Override
    6568    protected ModalEditDialogBase<Resource>.ContentPanel
    66         createContentPanel(String id, IModel<Resource> model) {
     69            createContentPanel(String id, IModel<Resource> model) {
    6770        return new Content(id, model);
    6871    }
    69 
     72   
    7073    @Override
    7174    protected final IModel<Resource> newInstanceModel() {
    7275        return new VolatileEntityModel<>(new Resource());
    7376    }
    74 
     77   
    7578    @Override
    7679    protected final IModel<Resource> createEmptyModel() {
    7780        return new VolatileEntityModel<>(null);
    7881    }
    79 
     82   
    8083    @Override
    8184    protected String getCssClass() {
    8285        return "editResourceDialog";
    8386    }
    84 
     87   
    8588} // EditResourceDialog
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/Resource.java

    r5448 r5491  
    3939    private String ref;
    4040   
     41    @Column(name = "label", nullable = true)
     42    private String label;
     43   
     44    @Column(name = "description", nullable = true)
     45    private String description;
     46   
    4147    public Resource() {
    4248        super();
     
    4955    }
    5056   
     57    @Override
    5158    public Long getId() {
    5259        return id;
     
    7784        }
    7885        this.ref = ref;
     86    }
     87
     88    public String getLabel() {
     89        return label;
     90    }
     91
     92    public void setLabel(String label) {
     93        this.label = label;
     94    }
     95
     96    public String getDescription() {
     97        return description;
     98    }
     99
     100    public void setDescription(String description) {
     101        this.description = description;
    79102    }
    80103   
     
    108131        ref = resource.getRef();
    109132        type = resource.getType();
     133        label = resource.getLabel();
     134        description = resource.getDescription();
    110135    }
    111136   
     
    115140        copy.setRef(ref);
    116141        copy.setType(type);
     142        copy.setLabel(label);
     143        copy.setDescription(description);
    117144        return copy;
    118145    }
Note: See TracChangeset for help on using the changeset viewer.