Changeset 5501


Ignore:
Timestamp:
07/30/14 15:27:42 (10 years ago)
Author:
Twan Goosen
Message:

turned content of BrowserPrivateCollections? page into a panel that can be reused in the admin mode

Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages
Files:
2 added
2 edited
2 moved

Legend:

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

    r933 r5501  
    77<body>
    88<wicket:extend>
    9   <div style="display: none" wicket:id="publishCollectionDialog"></div>
    10   <div style="display: none" wicket:id="deleteCollectionDialog"></div>
    11   <div wicket:id="collectionsTable"></div>
     9    <wicket:container wicket:id="collections">[collections]</wicket:container>
    1210</wicket:extend>
    1311</body>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowsePrivateCollectionsPage.java

    r5500 r5501  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
    22
    3 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
    4 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
    5 import eu.clarin.cmdi.virtualcollectionregistry.gui.VolatileEntityModel;
    6 import eu.clarin.cmdi.virtualcollectionregistry.gui.dialog.ConfirmationDialog;
    7 import eu.clarin.cmdi.virtualcollectionregistry.gui.menu.AjaxLinkMenuItem;
    8 import eu.clarin.cmdi.virtualcollectionregistry.gui.menu.AjaxPopupMenu;
    93import eu.clarin.cmdi.virtualcollectionregistry.gui.table.PrivateCollectionsProvider;
    10 import eu.clarin.cmdi.virtualcollectionregistry.gui.table.CollectionsProvider;
    11 import eu.clarin.cmdi.virtualcollectionregistry.gui.table.VirtualCollectionTable;
    12 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    13 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection.State;
    14 import java.util.Collections;
    15 import org.apache.wicket.Component;
    16 import org.apache.wicket.PageParameters;
    17 import org.apache.wicket.ajax.AjaxRequestTarget;
    18 import org.apache.wicket.ajax.markup.html.AjaxLink;
    194import org.apache.wicket.authorization.strategies.role.Roles;
    205import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation;
    21 import org.apache.wicket.markup.html.panel.Panel;
    22 import org.apache.wicket.model.IModel;
    23 import org.apache.wicket.model.Model;
    24 import org.apache.wicket.model.StringResourceModel;
    25 import org.apache.wicket.spring.injection.annot.SpringBean;
    266
    277@AuthorizeInstantiation(Roles.USER)
     
    299public class BrowsePrivateCollectionsPage extends BasePage {
    3010
    31     @SpringBean
    32     private VirtualCollectionRegistry vcr;
    33 
    34     private class ActionsColumn extends Panel {
    35 
    36         public ActionsColumn(String id, IModel<VirtualCollection> model) {
    37             super(id, model);
    38             setRenderBodyOnly(true);
    39 
    40             final AjaxPopupMenu menu
    41                     = new AjaxPopupMenu("menu", new Model<String>("[actions]"));
    42 
    43             final AjaxLinkMenuItem<VirtualCollection> publishItem
    44                     = new AjaxLinkMenuItem<VirtualCollection>(
    45                             new Model<String>("Publish"), model, "publish") {
    46                                 @Override
    47                                 protected void onClick(AjaxRequestTarget target,
    48                                         IModel<VirtualCollection> model) {
    49                                     doPublish(target, model.getObject());
    50                                 }
    51                             };
    52                     menu.add(publishItem);
    53 
    54                     final AjaxLinkMenuItem<VirtualCollection> editItem
    55                             = new AjaxLinkMenuItem<VirtualCollection>(
    56                                     new Model<String>("Edit"), model, "edit") {
    57                                         @Override
    58                                         protected void onClick(AjaxRequestTarget target,
    59                                                 IModel<VirtualCollection> model) {
    60                                             doEdit(target, model.getObject());
    61                                         }
    62                                     };
    63                             menu.add(editItem);
    64 
    65                             final AjaxLinkMenuItem<VirtualCollection> deleteItem
    66                                     = new AjaxLinkMenuItem<VirtualCollection>(
    67                                             new Model<String>("Delete"), model, "delete") {
    68                                                 @Override
    69                                                 protected void onClick(AjaxRequestTarget target,
    70                                                         IModel<VirtualCollection> model) {
    71                                                     doDelete(target, model.getObject());
    72                                                 }
    73                                             };
    74                                     menu.add(deleteItem);
    75 
    76                                     final AjaxLinkMenuItem<VirtualCollection> detailsItem
    77                                             = new AjaxLinkMenuItem<VirtualCollection>(
    78                                                     new Model<String>("Details"), model, "details") {
    79                                                         @Override
    80                                                         protected void onClick(AjaxRequestTarget target,
    81                                                                 IModel<VirtualCollection> model) {
    82                                                             doDetails(target, model);
    83                                                         }
    84                                                     };
    85                                             menu.add(detailsItem);
    86                                             add(menu);
    87 
    88                                             final VirtualCollection vc = model.getObject();
    89                                             if (vc.isDeleted()) {
    90                                                 detailsItem.setVisible(false).setEnabled(false);
    91                                             }
    92                                             if (!vc.isPrivate()) {
    93                                                 editItem.setVisible(false).setEnabled(false);
    94                                                 publishItem.setVisible(false).setEnabled(false);
    95                                                 deleteItem.setVisible(false).setEnabled(false);
    96                                             }
    97         }
     11    public BrowsePrivateCollectionsPage() {
     12        add(new BrowseEditableCollectionsPanel("collections", new PrivateCollectionsProvider()));
    9813    }
    99 
    100     private class ActionsPanel extends Panel {
    101 
    102         public ActionsPanel(String id, IModel<VirtualCollection> model) {
    103             super(id, model);
    104             setRenderBodyOnly(true);
    105 
    106             final AjaxLink<VirtualCollection> publishLink
    107                     = new AjaxLink<VirtualCollection>("publish", model) {
    108                         @Override
    109                         public void onClick(AjaxRequestTarget target) {
    110                             doPublish(target, getModelObject());
    111                         }
    112                     };
    113             add(publishLink);
    114 
    115             final AjaxLink<VirtualCollection> editLink
    116                     = new AjaxLink<VirtualCollection>("edit", model) {
    117                         @Override
    118                         public void onClick(AjaxRequestTarget target) {
    119                             doEdit(target, getModelObject());
    120                         }
    121                     };
    122             add(editLink);
    123 
    124             final AjaxLink<VirtualCollection> deleteLink
    125                     = new AjaxLink<VirtualCollection>("delete", model) {
    126                         @Override
    127                         public void onClick(AjaxRequestTarget target) {
    128                             doDelete(target, getModelObject());
    129                         }
    130                     };
    131             add(deleteLink);
    132 
    133             final AjaxLink<VirtualCollection> detailsLink
    134                     = new AjaxLink<VirtualCollection>("details", model) {
    135                         @Override
    136                         public void onClick(AjaxRequestTarget target) {
    137                             doDetails(target, getModel());
    138                         }
    139                     };
    140             add(detailsLink);
    141 
    142             final VirtualCollection vc = model.getObject();
    143             if (vc.isDeleted()) {
    144                 detailsLink.setVisible(false).setEnabled(false);
    145             }
    146             if (!vc.isPrivate()) {
    147                 editLink.setVisible(false).setEnabled(false);
    148                 publishLink.setVisible(false).setEnabled(false);
    149                 deleteLink.setVisible(false).setEnabled(false);
    150             }
    151             boolean isVisible = detailsLink.isVisible()
    152                     || editLink.isVisible() || publishLink.isVisible()
    153                     || deleteLink.isVisible();
    154             setVisible(isVisible);
    155         }
    156     } // class BrowsePrivateCollectionsPage.ActionsPanel
    157 
    158     private final class PublishCollectionDialog extends ConfirmationDialog {
    159 
    160         private long vcId;
    161 
    162         public PublishCollectionDialog(String id,
    163                 final Component updateComponenet) {
    164             super(id, updateComponenet);
    165             setInitialWidth(400);
    166         }
    167 
    168         @Override
    169         public void onConfirm(AjaxRequestTarget target) {
    170             try {
    171                 vcr.setVirtualCollectionState(getUser(), vcId,
    172                         State.PUBLIC_PENDING);
    173             } catch (VirtualCollectionRegistryException e) {
    174                 e.printStackTrace();
    175             }
    176         }
    177 
    178         public void show(AjaxRequestTarget target, VirtualCollection vc) {
    179             this.vcId = vc.getId();
    180             super.show(target,
    181                     new StringResourceModel("collections.publishconfirm",
    182                             new VolatileEntityModel<VirtualCollection>(vc)));
    183         }
    184     } // class BrowsePrivateCollectionsPage.PublishCollectionDialog
    185 
    186     private final class DeleteCollectionDialog extends ConfirmationDialog {
    187 
    188         private long vcId;
    189 
    190         public DeleteCollectionDialog(String id,
    191                 final Component updateComponenet) {
    192             super(id, updateComponenet);
    193             setInitialWidth(400);
    194         }
    195 
    196         @Override
    197         public void onConfirm(AjaxRequestTarget target) {
    198             try {
    199                 vcr.deleteVirtualCollection(getUser(), vcId);
    200             } catch (VirtualCollectionRegistryException e) {
    201                 e.printStackTrace();
    202             }
    203         }
    204 
    205         public void show(AjaxRequestTarget target, VirtualCollection vc) {
    206             this.vcId = vc.getId();
    207             super.show(target,
    208                     new StringResourceModel("collections.deleteconfirm",
    209                             new VolatileEntityModel<VirtualCollection>(vc)));
    210         }
    211     } // class BrowsePrivateCollectionsPage.PublishCollectionDialog
    212 
    213     private final PublishCollectionDialog publishDialog;
    214     private final DeleteCollectionDialog deleteDialog;
    215 
    216     public BrowsePrivateCollectionsPage() {
    217         super();
    218         final VirtualCollectionTable table
    219                 = new VirtualCollectionTable("collectionsTable", new PrivateCollectionsProvider(), true) {
    220                     @Override
    221                     protected Panel createActionColumn(String componentId,
    222                             IModel<VirtualCollection> model) {
    223                         return new ActionsColumn(componentId, model);
    224                     }
    225 
    226                     @Override
    227                     protected Panel createActionPanel(String componentId,
    228                             IModel<VirtualCollection> model) {
    229                         return new ActionsPanel(componentId, model);
    230                     }
    231                 };
    232         add(table);
    233 
    234         publishDialog = new PublishCollectionDialog("publishCollectionDialog",
    235                 table);
    236         add(publishDialog);
    237         deleteDialog = new DeleteCollectionDialog("deleteCollectionDialog",
    238                 table);
    239         add(deleteDialog);
    240     }
    241 
    242     private void doEdit(AjaxRequestTarget target,
    243             VirtualCollection vc) {
    244         setResponsePage(EditVirtualCollectionPage.class, new PageParameters(Collections.singletonMap("id", vc.getId())));
    245     }
    246 
    247     private void doPublish(AjaxRequestTarget target,
    248             VirtualCollection vc) {
    249         publishDialog.show(target, vc);
    250     }
    251 
    252     private void doDelete(AjaxRequestTarget target,
    253             VirtualCollection vc) {
    254         deleteDialog.show(target, vc);
    255     }
    256 
    257     private void doDetails(AjaxRequestTarget target, IModel<VirtualCollection> vc) {
    258         setResponsePage(VirtualCollectionDetailsPage.class, VirtualCollectionDetailsPage.createPageParameters(vc.getObject(), getPageReference()));
    259     }
    260 
    261 } // class BrowsePrivateCollectionsPage
     14   
     15}
Note: See TracChangeset for help on using the changeset viewer.