Changeset 976


Ignore:
Timestamp:
12/09/10 14:52:57 (13 years ago)
Author:
oschonef
Message:
  • work-in-progress commit for revamped collections table
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main
Files:
10 added
2 deleted
9 edited

Legend:

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

    r964 r976  
    66<body>
    77<wicket:panel>
    8   <input wicket:id="filter" type="submit" value="filter" />
    9   <input wicket:id="clear" type="submit" value="clear" />
     8  <input wicket:id="filter" type="submit" class="filter" value="filter" />
     9  <input wicket:id="clear" type="submit" class="clear" value="clear" />
    1010</wicket:panel>
    1111</body>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnActions.java

    r964 r976  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
    22
    3 import org.apache.wicket.Component;
    43import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
    54import org.apache.wicket.extensions.markup.html.repeater.data.table.HeaderlessColumn;
    6 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    7 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilteredColumn;
    85import org.apache.wicket.markup.repeater.Item;
    96import org.apache.wicket.model.IModel;
     
    129
    1310@SuppressWarnings("serial")
    14 final class ColumnActions extends HeaderlessColumn<VirtualCollection>
    15         implements IFilteredColumn<VirtualCollection> {
    16     private final transient VirtualCollectionTable table;
     11final class ColumnActions extends HeaderlessColumn<VirtualCollection> {
     12    private final VirtualCollectionTable table;
    1713
    1814    public ColumnActions(VirtualCollectionTable table) {
    1915        super();
    2016        this.table = table;
    21     }
    22 
    23     @Override
    24     public Component getFilter(String componentId, FilterForm<?> form) {
    25         return new AjaxGoAndClearFilter(componentId);
    2617    }
    2718
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnCreated.java

    r964 r976  
    22
    33import org.apache.commons.lang.time.FastDateFormat;
    4 import org.apache.wicket.Component;
    54import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
    6 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    7 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredAbstractColumn;
     5import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
    86import org.apache.wicket.markup.html.basic.Label;
    97import org.apache.wicket.markup.repeater.Item;
    10 import org.apache.wicket.model.CompoundPropertyModel;
    118import org.apache.wicket.model.IModel;
    129import org.apache.wicket.model.ResourceModel;
     
    1512
    1613@SuppressWarnings("serial")
    17 final class ColumnCreated extends FilteredAbstractColumn<VirtualCollection> {
     14final class ColumnCreated extends AbstractColumn<VirtualCollection> {
    1815    private static final FastDateFormat df =
    1916        FastDateFormat.getInstance("yyyy-MM-dd");
     
    2118    ColumnCreated(VirtualCollectionTable table) {
    2219        super(new ResourceModel("column.created", "Created"), "created");
    23     }
    24 
    25     @Override
    26     public Component getFilter(String componentId, FilterForm<?> form) {
    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);
    3220    }
    3321
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnName.java

    r964 r976  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
    22
    3 import org.apache.wicket.Component;
    4 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    5 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredPropertyColumn;
    6 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.TextFilter;
     3import org.apache.wicket.behavior.AttributeAppender;
     4import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
     5import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
     6import org.apache.wicket.markup.html.WebMarkupContainer;
     7import org.apache.wicket.markup.html.basic.Label;
     8import org.apache.wicket.markup.html.basic.MultiLineLabel;
     9import org.apache.wicket.markup.html.panel.Panel;
     10import org.apache.wicket.markup.repeater.Item;
    711import org.apache.wicket.model.IModel;
    8 import org.apache.wicket.model.PropertyModel;
     12import org.apache.wicket.model.Model;
    913import org.apache.wicket.model.ResourceModel;
     14import org.odlabs.wiquery.core.effects.EffectSpeed;
     15import org.odlabs.wiquery.core.effects.sliding.SlideToggle;
     16import org.odlabs.wiquery.core.events.Event;
     17import org.odlabs.wiquery.core.events.MouseEvent;
     18import org.odlabs.wiquery.core.events.WiQueryEventBehavior;
     19import org.odlabs.wiquery.core.javascript.JsScope;
     20import org.odlabs.wiquery.core.javascript.JsStatement;
    1021
    1122import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    1223
    1324@SuppressWarnings("serial")
    14 final class ColumnName extends FilteredPropertyColumn<VirtualCollection> {
     25final class ColumnName extends AbstractColumn<VirtualCollection> {
     26    private final class ItemCell extends Panel {
     27        private final static String DETAILS_SHOWN_CLASS = "detailsShown";
     28
     29        public ItemCell(String id, IModel<VirtualCollection> model) {
     30            super(id);
     31            setRenderBodyOnly(true);
     32            final VirtualCollection vc = model.getObject();
     33            final Label nameLabel = new Label("name", vc.getName());
     34            add(nameLabel);
     35           
     36            final WebMarkupContainer details =
     37                new WebMarkupContainer("details");
     38            details.setOutputMarkupId(true);
     39           
     40            final String desc = vc.getDescription();
     41            final MultiLineLabel descLabel = new MultiLineLabel("desc", desc);
     42            if (desc == null) {
     43                descLabel.setVisible(false);
     44            }
     45            details.add(descLabel);
     46            add(details);
     47            nameLabel.add(new WiQueryEventBehavior(new Event(MouseEvent.CLICK) {
     48                @Override
     49                public JsScope callback() {
     50                    final JsScope cb = JsScope.quickScope(new JsStatement()
     51                        .$(nameLabel).toggleClass(DETAILS_SHOWN_CLASS));
     52                    final SlideToggle effect = new SlideToggle(EffectSpeed.SLOW);
     53                    effect.setCallback(cb);
     54                    return JsScope.quickScope(new JsStatement()
     55                        .$(details).chain(effect));
     56                }
     57            }));
     58            details.add(new AttributeAppender("style",
     59                    new Model<String>("display:none"), ";"));
     60        }
     61    } // class ColumnName.ItemCell
    1562
    1663    ColumnName(VirtualCollectionTable table) {
    17         super(new ResourceModel("column.name", "Name"), "name",
    18                 "name");
     64        super(new ResourceModel("column.name", "Name"), "name");
    1965    }
    2066
    2167    @Override
    22     public Component getFilter(String componentId, FilterForm<?> form) {
    23         final FilterState state =
    24             (FilterState) form.getStateLocator().getFilterState();
    25         final IModel<String> model =
    26             new PropertyModel<String>(state, "name");
    27         return new TextFilter<String>(componentId, model, form);
     68    public void populateItem(Item<ICellPopulator<VirtualCollection>> item,
     69            String componentId, IModel<VirtualCollection> model) {
     70        item.add(new ItemCell(componentId, model));
    2871    }
    2972
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnState.java

    r964 r976  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
    22
    3 import java.util.Arrays;
    4 import java.util.List;
    5 
    6 import org.apache.wicket.Component;
    73import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
    8 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.ChoiceFilter;
    9 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    10 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredAbstractColumn;
     4import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
    115import org.apache.wicket.markup.html.basic.Label;
    126import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
    137import org.apache.wicket.markup.repeater.Item;
    148import org.apache.wicket.model.IModel;
    15 import org.apache.wicket.model.PropertyModel;
    169import org.apache.wicket.model.ResourceModel;
    1710
     
    1912
    2013@SuppressWarnings("serial")
    21 final class ColumnState extends FilteredAbstractColumn<VirtualCollection> {
    22     private static final List<VirtualCollection.State> STATE_VALUES =
    23         Arrays.asList(VirtualCollection.State.PRIVATE,
    24                       VirtualCollection.State.PUBLIC,
    25                       VirtualCollection.State.PUBLIC_PENDING,
    26                       VirtualCollection.State.DELETED);
     14final class ColumnState extends AbstractColumn<VirtualCollection> {
    2715    private final EnumChoiceRenderer<VirtualCollection.State> renderer;
    2816
     
    3018        super(new ResourceModel("column.state", "State"), "state");
    3119        this.renderer = new EnumChoiceRenderer<VirtualCollection.State>(table);
    32     }
    33 
    34     @Override
    35     public Component getFilter(String componentId, FilterForm<?> form) {
    36         final FilterState state =
    37             (FilterState) form.getStateLocator().getFilterState();
    38         final IModel<VirtualCollection.State> model =
    39             new PropertyModel<VirtualCollection.State>(state, "state");
    40         return new ChoiceFilter<VirtualCollection.State>(componentId, model,
    41                 form, STATE_VALUES, renderer, true);
    4220    }
    4321
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnType.java

    r964 r976  
    11package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
    22
    3 import java.util.Arrays;
    4 import java.util.List;
    5 
    6 import org.apache.wicket.Component;
    73import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
    8 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.ChoiceFilter;
    9 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    10 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredAbstractColumn;
     4import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
    115import org.apache.wicket.markup.html.basic.Label;
    126import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
    137import org.apache.wicket.markup.repeater.Item;
    148import org.apache.wicket.model.IModel;
    15 import org.apache.wicket.model.PropertyModel;
    169import org.apache.wicket.model.ResourceModel;
    1710
     
    1912
    2013@SuppressWarnings("serial")
    21 final class ColumnType extends FilteredAbstractColumn<VirtualCollection> {
    22     private static final List<VirtualCollection.Type> TYPE_VALUES =
    23         Arrays.asList(VirtualCollection.Type.values());
     14final class ColumnType extends AbstractColumn<VirtualCollection> {
    2415    private final EnumChoiceRenderer<VirtualCollection.Type> renderer;
    2516
     
    2718        super(new ResourceModel("column.type", "Type"), "type");
    2819        this.renderer = new EnumChoiceRenderer<VirtualCollection.Type>(table);
    29     }
    30 
    31     @Override
    32     public Component getFilter(String componentId, FilterForm<?> form) {
    33         final FilterState state =
    34             (FilterState) form.getStateLocator().getFilterState();
    35         final IModel<VirtualCollection.Type> model =
    36             new PropertyModel<VirtualCollection.Type>(state, "type");
    37         return new ChoiceFilter<VirtualCollection.Type>(componentId, model,
    38                 form, TYPE_VALUES, renderer, true);
    3920    }
    4021
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/VirtualCollectionTable.html

    r964 r976  
    66<body>
    77<wicket:panel>
    8   <form wicket:id="filterform">
    9     <div>
    10       <input wicket:id="focus-tracker" type="hidden" style="display: none" />
    11       <input wicket:id="focus-restore" type="hidden" style="display: none" />
    12     </div>
    13     <table wicket:id="table" class="collectionsTable"></table>
    14     <div wicket:id="feedback" class="collectionsTableFeedback"></div>
    15   </form>
     8  <div wicket:id="border">
     9    <label>Name</label>&nbsp;<select><option>contains</option><option>starts with</option><option>ends with</option></select>&nbsp;<input type="text" /><br />
     10    <label>Description</label>&nbsp;<select><option>contains</option><option>starts with</option><option>ends with</option></select>&nbsp;<input type="text" /><br />
     11    <label>Type</label>&nbsp;<select><option>extensional</option><option>intensional</option></select><br />
     12    <label>Created</label>&nbsp;<select><option>is less-than</option><option>is less-than or equals</option><option>equals</option><option>is greater-than or equals</option><option>is greater-than</option></select>&nbsp;<input type="text" /><br />
     13    <input type="submit" value="filter" /><input type="submit" value="reset" />
     14  </div>
     15  <table wicket:id="table" class="collectionsTable"></table>
     16  <!--
     17  <div wicket:id="feedback" class="collectionsTableFeedback"></div>
     18  -->
    1619</wicket:panel>
    1720</body>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/VirtualCollectionTable.java

    r964 r976  
    55
    66import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
     7import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar;
    78import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
    89import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
    9 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
    10 import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterToolbar;
    11 import org.apache.wicket.markup.html.panel.FeedbackPanel;
    1210import org.apache.wicket.markup.html.panel.Panel;
    1311import org.apache.wicket.model.IModel;
     12import org.apache.wicket.model.Model;
    1413
     14import eu.clarin.cmdi.virtualcollectionregistry.gui.border.AjaxToggleBorder;
    1515import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    1616
     
    2222        setOutputMarkupId(true);
    2323
    24         // create columns
     24        final AjaxToggleBorder border = new AjaxToggleBorder("border",
     25                new Model<String>("Filter"));
     26        add(border);
     27
     28        // setup table
    2529        List<IColumn<VirtualCollection>> columns =
    2630            new ArrayList<IColumn<VirtualCollection>>();
    2731        columns.add(new ColumnName(this));
    28         columns.add(new ColumnType(this));
    2932        if (privateMode) {
    3033            columns.add(new ColumnState(this));
    3134        }
    32         columns.add(new ColumnDescription(this));
     35        columns.add(new ColumnType(this));
    3336        columns.add(new ColumnCreated(this));
    3437        columns.add(new ColumnActions(this));
    3538        Provider provider = new Provider(privateMode);
    36         final FilterForm<FilterState> form =
    37             new FilterForm<FilterState>("filterform", provider);
    38         form.setOutputMarkupId(true);
    39         add(form);
    40 
    41         // table
    4239        final DataTable<VirtualCollection> table =
    4340            new AjaxFallbackDefaultDataTable<VirtualCollection>("table",
    44                 columns, provider, 32);
    45         table.addTopToolbar(new FilterToolbar(table, form, provider));
    46         table.setOutputMarkupId(true);
    47         form.add(table);
    48         form.add(new FeedbackPanel("feedback"));
    49         add(form);
     41                columns, provider, 4);
     42        table.addBottomToolbar(new AjaxNavigationToolbar(table));
     43        add(table);
    5044    }
    5145
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/webapp/css/vcr.css

    r933 r976  
    22    margin: 0;
    33/*    padding: 0; */   
     4}
     5
     6html {
     7        overflow-y: scroll
    48}
    59
     
    1317    color: #000000;
    1418/*    background-color: #E9EEFA; */
    15     width: 1024px;
    16     min-width: 1024px;
     19    width: 990px;
     20    min-width: 990px;
    1721    height: 100%;
    1822}
     
    7377    height: 70px;
    7478    line-height: 70px;
    75     font-size: 36px;
     79    font-size: 34px;
    7680    font-weight: bold;
    7781    font-variant: small-caps;
     
    204208  padding: 0;
    205209  font-size: 100%;
    206   min-width: 1012px;
    207   max-width: 1012px;
    208   width: 1012px;
     210  width: 978px;
     211  min-width: 978px;
    209212}
    210213
     
    296299  display: block;
    297300  float: left;
    298   width: 150px;
     301  width: 140px;
    299302  padding: 3px 5px;
    300303  margin: 0 0 5px 0;
     
    323326        font-family: Verdana, sans-serif;
    324327        font-size: 100%;
    325         width: 602px;
     328        width: 570px;
    326329        overflow: auto;
    327330}
     
    584587}
    585588
    586 table thead {
     589table thead,
     590table tfoot {
    587591        color: inherit;
    588592        background-color: #D4DEEF;
     
    618622table td.norecords-td {
    619623        text-align: center;
    620 }
    621 
    622 table tr.navigation {
     624        color: inherit;
     625        background-color: #FFFFFF;
     626}
     627
     628table thead tr.navigation {
    623629        border-bottom: 1px dotted #BBBBBB;
    624630}
     
    630636table.creatorsTable,
    631637table.resourcesTable {
    632     width: 832px;
     638    width: 805px;
    633639}
    634640
     
    668674
    669675table.collectionsTable {
    670         width: 100%;
    671         margin-top: 5px;
     676        width: auto;
     677        table-layout: fixed;
    672678}
    673679
     
    677683}
    678684
    679 table.collectionsTable th.title,
    680 table.collectionsTable td.title {
    681         width: 250px;
    682 }
    683 
     685table.collectionsTable th.name,
     686table.collectionsTable td.name {
     687        width: 670px;
     688}
     689
     690table.collectionsTable td.name div.details {
     691        margin-right: -312px;
     692}
     693
     694table.collectionsTable td.name div.name {
     695        padding-left: 16px;
     696    background-image: url('../icons/bullet_arrow_down.png');
     697    background-repeat: no-repeat;
     698    background-position: center left;
     699}
     700
     701table.collectionsTable td.name div.name:hover {
     702        color: #AE0000;
     703        background-color: inherit;
     704}
     705
     706table.collectionsTable td.name div.name.detailsShown {
     707    padding-left: 16px;
     708    background-image: url('../icons/bullet_arrow_up.png');
     709    background-repeat: no-repeat;
     710    background-position: center left;
     711}
     712
     713table.collectionsTable td.name div.details {
     714    padding: 2px 2px 2px 16px;
     715}
     716
     717table.collectionsTable td.name div.desc {
     718    text-align: justify;
     719    padding-bottom: 2px;
     720}
     721
     722table.collectionsTable th.created,
     723table.collectionsTable td.created {
     724    width: 100px;
     725}
    684726
    685727table.collectionsTable th.type,
    686728table.collectionsTable td.type {
    687     width: 85px;
    688 }
    689 
    690 table.collectionsTable th.description,
    691 table.collectionsTable td.description {
    692     width: 500px;
    693 }
    694 
    695 table.collectionsTable th.created,
    696 table.collectionsTable td.created {
    697     width: 95px;
    698 }
    699 
    700 table.collectionsTable td.action {
    701         white-space: nowrap;
    702 }
     729    width: 100px;
     730}
     731
     732table.collectionsTable td.action,
     733table.collectionsTable th.action {
     734        width: 100px;
     735}
     736
     737tr.headers a.wicket_orderNone {
     738        padding-right: 7px;
     739        background: transparent url('../icons/order_none.png') no-repeat center right;
     740}
     741
     742tr.headers a.wicket_orderUp {
     743    padding-right: 7px;
     744    background: transparent url('../icons/order_up.png') no-repeat center right;
     745}
     746
     747tr.headers a.wicket_orderDown {
     748    padding-right: 7px;
     749    background: transparent url('../icons/order_down.png') no-repeat center right;
     750}
     751
     752div.toggleBorder {
     753        border-top: 1px solid #000000;
     754}
     755
     756div.toggleBorder div.toggleBorderHeader {
     757        margin: 0;
     758        padding: 2px 2px 2px 16px;
     759        border-bottom: 1px solid #000000;
     760    color: inherit;
     761    background-color: #D4DEEF;
     762    background-image: url('../icons/bullet_arrow_up.png');
     763    background-repeat: no-repeat;
     764    background-position: center left;
     765}
     766
     767div.toggleBorder div.toggleBorderHeader span {
     768        font-weight: bold;
     769}
     770
     771div.toggleBorder div.toggleBorderHeader.collapsed {
     772        background-image: url('../icons/bullet_arrow_down.png');
     773        background-repeat: no-repeat;
     774        background-position: center left;
     775}
     776
     777div.toggleBorder div.toggleBorderContent {
     778    margin: 0;
     779    padding: 5px;
     780}
Note: See TracChangeset for help on using the changeset viewer.