Changeset 1001


Ignore:
Timestamp:
12/17/10 11:06:14 (13 years ago)
Author:
oschonef
Message:
  • hide empty properties
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages
Files:
2 edited

Legend:

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

    r993 r1001  
    6868    </wicket:enclosure>
    6969    <wicket:enclosure child="generatedBy.query.value">
    70       <label>Profile</label> <span wicket:id="generatedBy.query.value"></span> <br />
     70      <label>Value</label> <span wicket:id="generatedBy.query.value"></span> <br />
    7171    </wicket:enclosure>
    7272  </div>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/VirtualCollectionDetailsPage.java

    r993 r1001  
    22
    33import java.util.ArrayList;
     4import java.util.Collection;
    45import java.util.Iterator;
     6import java.util.LinkedList;
    57import java.util.List;
    68
     9import org.apache.wicket.Component;
    710import org.apache.wicket.Page;
     11import org.apache.wicket.behavior.AbstractBehavior;
    812import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
    913import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
     
    3539    private static final String CSS_CLASS = "collectionsDetails";
    3640
     41    /*
     42     * Actually, we really want the behavior to hide the component on
     43     * the beforeRender() call, but we always get an exception from Wicket
     44     * that we are not supposed to change the page hierarchy anymore. This
     45     * class is a hack to avoid this exception.
     46     */
     47    private final class HideIfEmptyBehavior extends AbstractBehavior {
     48        private final List<Component> components = new LinkedList<Component>();
     49       
     50        @Override
     51        public void bind(Component component) {
     52            super.bind(component);
     53            components.add(component);
     54        }
     55
     56        public void hideEmptyComponents() {
     57            for (Component component : components) {
     58              Object obj = component.getDefaultModelObject();
     59              if (obj == null) {
     60                  component.setVisible(false);
     61              } else {
     62                  if (obj instanceof Collection<?>) {
     63                      if (((Collection<?>) obj).isEmpty()) {
     64                          component.setVisible(false);
     65                      }
     66                  }
     67              }
     68            }
     69        }
     70
     71        @Override
     72        public void cleanup() {
     73            super.cleanup();
     74            components.clear();
     75        }
     76    }
     77
     78   
     79    private final HideIfEmptyBehavior hideIfEmpty = new HideIfEmptyBehavior();
     80
     81
    3782    public VirtualCollectionDetailsPage(final IModel<VirtualCollection> model,
    3883            final Page previousPage) {
    39         super(model);
    40 
     84        super(new CompoundPropertyModel<VirtualCollection>(model.getObject()));
    4185        if (previousPage == null) {
    4286            throw new IllegalArgumentException("previousPage == null");
     
    56100        general.add(new Label("type"));
    57101        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"));
     102        general.add(new MultiLineLabel("description").add(hideIfEmpty));
     103        general.add(new Label("purpose").add(hideIfEmpty));
     104        general.add(new Label("reproducibility").add(hideIfEmpty));
     105        general.add(new Label("reproducibilityNotice").add(hideIfEmpty));
    62106        final ListView<String> keywords = new ListView<String>("keywords") {
    63107            @Override
     
    66110            }
    67111        };
     112        keywords.add(hideIfEmpty);
    68113        general.add(keywords);
    69114
     
    75120            protected void populateItem(ListItem<Creator> item) {
    76121                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"));
     122                item.add(new MultiLineLabel("address").add(hideIfEmpty));
     123                item.add(new Label("organisation").add(hideIfEmpty));
     124                item.add(new Label("email").add(hideIfEmpty));
     125                item.add(new Label("telephone").add(hideIfEmpty));
    81126                final IModel<String> siteModel =
    82127                    new ComponentPropertyModel<String>("website");
    83128                item.add(new ExternalLink("website", siteModel, siteModel)
    84                         .setPopupSettings(new PopupSettings()));
    85                 item.add(new Label("role"));
     129                        .setPopupSettings(new PopupSettings())
     130                        .add(hideIfEmpty));
     131                item.add(new Label("role").add(hideIfEmpty));
    86132            }
    87133
     
    132178        add(generated);
    133179        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"));
     180        generated.add(new Label("generatedBy.uri").add(hideIfEmpty));
     181        generated.add(new Label("generatedBy.query.profile").add(hideIfEmpty));
     182        generated.add(new Label("generatedBy.query.value").add(hideIfEmpty));
    137183        generated.setVisible(model.getObject().getType() == Type.INTENSIONAL);
    138184    }
    139185
     186    @Override
     187    protected void onBeforeRender() {
     188        super.onBeforeRender();
     189        hideIfEmpty.hideEmptyComponents();
     190    }
     191
    140192} // class VirtualCollectionDetailsPage
Note: See TracChangeset for help on using the changeset viewer.