Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Jan 5, 2015
2 parents 60074ae + 4d539fb commit 65071df
Show file tree
Hide file tree
Showing 125 changed files with 2,043 additions and 944 deletions.
Expand Up @@ -35,6 +35,7 @@
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

Expand Down Expand Up @@ -139,8 +140,13 @@ public void setQuery(ObjectQuery query) {
*
* @return By defaults it returns true.
*/
public boolean isSizeAvailable() {
return true;
public IModel<Boolean> isSizeAvailableModel() {
return new AbstractReadOnlyModel<Boolean>() {
@Override
public Boolean getObject() {
return true;
}
};
}

protected ObjectPaging createPaging(long first, long count) {
Expand Down
Expand Up @@ -20,7 +20,6 @@
import java.util.*;

import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.RetrieveOption;
import com.evolveum.midpoint.schema.SelectorOptions;

import com.evolveum.midpoint.web.page.error.PageError;
Expand All @@ -36,9 +35,7 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.PageBase;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;

import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
Expand Down
Expand Up @@ -16,19 +16,10 @@

package com.evolveum.midpoint.web.component.data;

import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.CheckBoxPanel;
import com.evolveum.midpoint.web.component.util.Selectable;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxCallListener;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;

import java.util.List;
Expand Down
Expand Up @@ -30,6 +30,7 @@
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

Expand All @@ -43,41 +44,33 @@ public class TablePanel<T> extends Panel {
private static final String ID_TABLE = "table";
private static final String ID_PAGING = "paging";

private IModel<Boolean> showPaging = new Model<Boolean>(true);
private IModel<Boolean> showCount = new Model<Boolean>(true);
private IModel<Boolean> showPaging = new Model<>(true);
private IModel<Boolean> showCount = new Model<>(true);

private UserProfileStorage.TableId tableId;

public TablePanel(String id, ISortableDataProvider provider, List<IColumn<T, String>> columns) {
this(id, provider, columns, null);
this(id, provider, columns, null, UserProfileStorage.DEFAULT_PAGING_SIZE);
}

public TablePanel(String id, ISortableDataProvider provider, List<IColumn<T, String>> columns,
UserProfileStorage.TableId tableId) {
UserProfileStorage.TableId tableId, long pageSize){
super(id);
Validate.notNull(provider, "Object type must not be null.");
Validate.notNull(columns, "Columns must not be null.");

add(AttributeModifier.prepend("style", "display: table; width: 100%;"));

this.tableId = tableId;

initLayout(columns, provider);
initLayout(columns, provider, pageSize);
}

@Override
protected void onInitialize() {
super.onInitialize();

DataTable table = (DataTable) get(ID_TABLE);
PageBase page = (PageBase) getPage();
UserProfileStorage userProfile = page.getSessionStorage().getUserProfile();
table.setItemsPerPage(userProfile.getPagingSize(tableId));
}

private void initLayout(List<IColumn<T, String>> columns, ISortableDataProvider provider) {
DataTable<T, String> table = new SelectableDataTable<T>(ID_TABLE, columns, provider,
UserProfileStorage.DEFAULT_PAGING_SIZE);
private void initLayout(List<IColumn<T, String>> columns, ISortableDataProvider provider, long pageSize) {
DataTable<T, String> table = new SelectableDataTable<>(ID_TABLE, columns, provider, (int)pageSize);

table.setOutputMarkupId(true);

Expand Down Expand Up @@ -108,7 +101,7 @@ protected boolean isPageSizePopupVisible() {

add(table);

NavigatorPanel nb2 = new NavigatorPanel(ID_PAGING, table, showPagedPaging(provider));
NavigatorPanel nb2 = new NavigatorPanel(ID_PAGING, table, showPagedPagingModel(provider));
addVisibleBehaviour(nb2, showPaging);
add(nb2);
}
Expand All @@ -127,13 +120,18 @@ public boolean isVisible() {
});
}

private boolean showPagedPaging(ISortableDataProvider provider) {
private IModel<Boolean> showPagedPagingModel(ISortableDataProvider provider) {
if (!(provider instanceof BaseSortableDataProvider)) {
return true;
return new AbstractReadOnlyModel<Boolean>() {
@Override
public Boolean getObject() {
return true;
}
};
}

BaseSortableDataProvider baseProvider = (BaseSortableDataProvider) provider;
return baseProvider.isSizeAvailable();
return baseProvider.isSizeAvailableModel();
}

public DataTable getDataTable() {
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.evolveum.midpoint.web.component.data.paging;

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.commons.lang.BooleanUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -48,12 +49,21 @@ public class NavigatorPanel extends Panel {
private static final String ID_NEXT_LINK = "nextLink";

private final IPageable pageable;
private final boolean showPageListing;
private final IModel<Boolean> showPageListingModel;

public NavigatorPanel(String id, IPageable pageable, boolean showPageListing) {
public NavigatorPanel(String id, IPageable pageable, final boolean showPageListing) {
this(id, pageable, new AbstractReadOnlyModel<Boolean>() {
@Override
public Boolean getObject() {
return showPageListing;
}
});
}

public NavigatorPanel(String id, IPageable pageable, IModel<Boolean> showPageListingModel) {
super(id);
this.pageable = pageable;
this.showPageListing = showPageListing;
this.showPageListingModel = showPageListingModel;

setOutputMarkupId(true);
add(new VisibleEnableBehaviour() {
Expand Down Expand Up @@ -107,7 +117,7 @@ private void initFirst() {

@Override
public boolean isVisible() {
return showPageListing && showFirstAndDots();
return BooleanUtils.isTrue(showPageListingModel.getObject()) && showFirstAndDots();
}
});
add(first);
Expand All @@ -125,7 +135,7 @@ public void onClick(AjaxRequestTarget target) {

@Override
public boolean isVisible() {
return showPageListing && showFirstAndDots();
return BooleanUtils.isTrue(showPageListingModel.getObject()) && showFirstAndDots();
}
});
add(dots);
Expand Down Expand Up @@ -172,7 +182,7 @@ public String getObject() {

@Override
public boolean isVisible() {
return showPageListing;
return BooleanUtils.isTrue(showPageListingModel.getObject());
}
});
add(navigation);
Expand Down
Expand Up @@ -17,32 +17,34 @@
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div wicket:id="content">

<form class="form-inline pull-right search-form" wicket:id="searchForm"
style="padding: 5px;">
<table style="display: inline; margin-right: 30px;">
<tr>
<td>
<input type="checkbox" wicket:id="nameCheck" size="30"/>
<wicket:message key="userBrowserDialog.name"/>
</td>
<td><input type="checkbox" wicket:id="fullNameCheck"/>
<wicket:message key="userBrowserDialog.fullName"/>
</td>
</tr>
<tr>
<td>
<input type="checkbox" wicket:id="givenNameCheck"/>
<wicket:message key="userBrowserDialog.givenName"/>
</td>
<td>
<input type="checkbox" wicket:id="familyNameCheck"/>
<wicket:message key="userBrowserDialog.familyName"/>
</td>
</tr>
</table>
<div class="clearfix">
<form class="form-inline pull-right search-form" wicket:id="searchForm"
style="padding: 5px;">
<table style="display: inline; margin-right: 30px;">
<tr>
<td>
<input type="checkbox" wicket:id="nameCheck" size="30"/>
<wicket:message key="userBrowserDialog.name"/>
</td>
<td><input type="checkbox" wicket:id="fullNameCheck"/>
<wicket:message key="userBrowserDialog.fullName"/>
</td>
</tr>
<tr>
<td>
<input type="checkbox" wicket:id="givenNameCheck"/>
<wicket:message key="userBrowserDialog.givenName"/>
</td>
<td>
<input type="checkbox" wicket:id="familyNameCheck"/>
<wicket:message key="userBrowserDialog.familyName"/>
</td>
</tr>
</table>

<div wicket:id="basicSearch" />
</form>
<div wicket:id="basicSearch" />
</form>
</div>

<form class="clearfix" wicket:id="mainForm" style="margin: 5px;">
<div wicket:id="table"/>
Expand Down
Expand Up @@ -21,6 +21,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteSettings;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
Expand Down Expand Up @@ -77,30 +78,14 @@ private void initLayout(final boolean inputEnabled, boolean prepareModel){
@Override
protected void populateItem(final ListItem<T> item) {

AutoCompleteSettings autoCompleteSettings = new AutoCompleteSettings();
autoCompleteSettings.setShowListOnEmptyInput(true);
AutoCompleteTextField<String> autoCompleteEditor = new AutoCompleteTextField<String>(ID_TEXT,
createTextModel(item.getModel())) {
createTextModel(item.getModel()), autoCompleteSettings) {

@Override
protected Iterator<String> getChoices(String input) {
if(Strings.isEmpty(input)){
List<String> emptyList = Collections.emptyList();
return emptyList.iterator();
}

List<T> list = createObjectList();
List<String> choices = new ArrayList<>(AUTO_COMPLETE_LIST_SIZE);

for(T object: list){
if(createAutoCompleteObjectLabel(object).toLowerCase().startsWith(input.toLowerCase())){
choices.add(createAutoCompleteObjectLabel(object));

if(choices.size() == AUTO_COMPLETE_LIST_SIZE){
break;
}
}
}

return choices.iterator();
return createAutocompleteObjectList(input);
}
};
autoCompleteEditor.add(createAutoCompleteValidator());
Expand All @@ -121,6 +106,35 @@ protected Iterator<String> getChoices(String input) {
add(repeater);
}

private Iterator<String> createAutocompleteObjectList(String input) {
List<T> list = createObjectList();
List<String> choices = new ArrayList<>(AUTO_COMPLETE_LIST_SIZE);

if(Strings.isEmpty(input)){
for(T object: list){
choices.add(createAutoCompleteObjectLabel(object));

if(choices.size() == AUTO_COMPLETE_LIST_SIZE){
break;
}
}

return choices.iterator();
}

for(T object: list){
if(createAutoCompleteObjectLabel(object).toLowerCase().startsWith(input.toLowerCase())){
choices.add(createAutoCompleteObjectLabel(object));

if(choices.size() == AUTO_COMPLETE_LIST_SIZE){
break;
}
}
}

return choices.iterator();
}

private void initButtons(WebMarkupContainer buttonGroup, final ListItem<T> item) {
AjaxLink add = new AjaxLink(ID_ADD) {

Expand Down
Expand Up @@ -176,6 +176,7 @@ protected void addValuePerformed(AjaxRequestTarget target){
List<T> objects = getModelObject();
objects.add(createNewEmptyItem());

performAddValueHook(target);
target.add(this);
}

Expand Down Expand Up @@ -209,6 +210,7 @@ protected void removeValuePerformed(AjaxRequestTarget target, ListItem<T> item){
}
}

performRemoveValueHook(target, item);
target.add(this);
}

Expand All @@ -219,4 +221,18 @@ protected void editPerformed(AjaxRequestTarget target, T object){
protected boolean buttonsDisabled(){
return false;
}

/**
* Override to provide custom hook when adding new value
* */
protected void performAddValueHook(AjaxRequestTarget target){

}

/**
* Override to provide custom hook when removing value from list
* */
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<T> item){

}
}

0 comments on commit 65071df

Please sign in to comment.