Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/new-approva…
Browse files Browse the repository at this point in the history
…l-gui

# Conflicts:
#	gui/admin-gui/src/main/resources/localization/Midpoint.properties
  • Loading branch information
mederly committed Mar 29, 2016
2 parents e5d25b2 + f1f519f commit d44622f
Show file tree
Hide file tree
Showing 140 changed files with 6,204 additions and 1,816 deletions.
@@ -1,5 +1,5 @@
<!--
~ Copyright (c) 2010-2013 Evolveum
~ Copyright (c) 2010-2016 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand All @@ -25,4 +25,5 @@
</div>

<div wicket:id="table"></div>
<a class="btn btn-sm btn-primary" wicket:id="addButton"/>
</wicket:panel>
Expand Up @@ -29,7 +29,9 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;

Expand All @@ -38,8 +40,10 @@ public class FocusBrowserPanel<T extends FocusType> extends BasePanel<T> {
private static final String ID_TYPE = "type";
private static final String ID_TABLE = "table";

private static final String ID_BUTTON_ADD = "addButton";

private IModel<QName> typeModel;

private PageBase parentPage;

public FocusBrowserPanel(String id, final Class<T> type, boolean multiselect, PageBase parentPage) {
Expand All @@ -66,7 +70,8 @@ private void initLayout(Class<T> type, final boolean multiselect) {
protected void onUpdate(AjaxRequestTarget target) {
ObjectListPanel<T> listPanel = (ObjectListPanel<T>) get(ID_TABLE);

listPanel = createObjectListPanel(qnameToCompileTimeClass(typeModel.getObject()), multiselect);
listPanel = createObjectListPanel(qnameToCompileTimeClass(typeModel.getObject()),
multiselect);
addOrReplace(listPanel);
target.add(listPanel);
}
Expand All @@ -75,34 +80,59 @@ protected void onUpdate(AjaxRequestTarget target) {

ObjectListPanel<T> listPanel = createObjectListPanel(type, multiselect);
add(listPanel);

AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD,
createStringResource("userBrowserDialog.button.addButton")) {

@Override
public void onClick(AjaxRequestTarget target) {
List<T> selected = ((ObjectListPanel) getParent().get(ID_TABLE)).getSelectedObjects();
FocusBrowserPanel.this.addPerformed(target, selected);
}
};

addButton.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
return multiselect;
}
});

add(addButton);
}

protected void onClick(AjaxRequestTarget target, T focus) {

parentPage.hideMainPopup(target);
}

private ObjectListPanel<T> createObjectListPanel(Class<T> type, boolean multiselect) {
private ObjectListPanel<T> createObjectListPanel(Class<T> type, final boolean multiselect) {
ObjectListPanel<T> listPanel = new ObjectListPanel<T>(ID_TABLE, type, parentPage) {

@Override
public void objectDetailsPerformed(AjaxRequestTarget target, T focus) {
super.objectDetailsPerformed(target, focus);
FocusBrowserPanel.this.onClick(target, focus);
}

@Override
public void addPerformed(AjaxRequestTarget target, List<T> selected) {
super.addPerformed(target, selected);
FocusBrowserPanel.this.addPerformed(target, selected);
}

@Override
public boolean isMultiSelect() {
return multiselect;
}
};
listPanel.setMultiSelect(multiselect);
// listPanel.setMultiSelect(multiselect);
listPanel.setOutputMarkupId(true);
return listPanel;
}

protected void addPerformed(AjaxRequestTarget target, List<T> selected) {

parentPage.hideMainPopup(target);
}

private Class qnameToCompileTimeClass(QName typeName) {
Expand Down
Expand Up @@ -21,7 +21,6 @@

<p align="right">
<a class="btn btn-sm btn-default" wicket:id="cancelButton"/>
<a class="btn btn-sm btn-primary" wicket:id="addButton"/>
</p>
</form>
</wicket:panel>
Expand Up @@ -21,7 +21,9 @@

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
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.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
Expand All @@ -34,6 +36,7 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider2;
import com.evolveum.midpoint.web.component.data.Table;
Expand All @@ -44,6 +47,7 @@
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchFormPanel;
import com.evolveum.midpoint.web.component.util.ListDataProvider2;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
Expand All @@ -58,9 +62,8 @@ public class ObjectListPanel<T extends ObjectType> extends BasePanel<T> {
// private static final String ID_SEARCH_FORM = "searchForm";
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_BUTTON_CANCEL = "cancelButton";
private static final String ID_BUTTON_ADD = "addButton";

private static final String ID_TABLE = "table";


private static final Trace LOGGER = TraceManager.getTrace(ObjectListPanel.class);

Expand All @@ -74,8 +77,8 @@ public class ObjectListPanel<T extends ObjectType> extends BasePanel<T> {

private List<ColumnTypeDto> columnDefinitions;


private BaseSortableDataProvider<SelectableBean<T>> provider;

private int pageSize = 10;

private TableId tableId = TableId.TABLE_USERS;
Expand All @@ -84,9 +87,14 @@ public ObjectListPanel(String id, Class type, PageBase parentPage) {
super(id);
this.type = type;
this.parentPage = parentPage;

initLayout();
}


public void setProvider(BaseSortableDataProvider<SelectableBean<T>> provider) {
this.provider = provider;
}

public void setMultiSelect(boolean multiSelect) {
this.multiSelect = multiSelect;
Expand Down Expand Up @@ -116,21 +124,27 @@ public void setTableId(TableId tableId) {
this.tableId = tableId;
}



public List<T> getSelectedObjects() {
BaseSortableDataProvider dataProvider = getDataProvider();
if (dataProvider instanceof ObjectDataProvider2) {
return ((ObjectDataProvider2) dataProvider).getSelectedData();
} else if (dataProvider instanceof ListDataProvider2) {
return ((ListDataProvider2) dataProvider).getSelectedObjects();
}
return new ArrayList<>();
}

private void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);



searchModel = new LoadableModel<Search>(false) {

@Override
public Search load() {
Search search = SearchFactory.createSearch(type, parentPage.getPrismContext(), true);

Search search = SearchFactory.createSearch(type, parentPage.getPrismContext(), true);

return search;
}
};
Expand All @@ -148,29 +162,34 @@ public void onClick(AjaxRequestTarget target) {
};
mainForm.add(cancelButton);

AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD,
createStringResource("userBrowserDialog.button.addButton")) {
// AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD,
// createStringResource("userBrowserDialog.button.addButton")) {
//
// @Override
// public void onClick(AjaxRequestTarget target) {
// List<T> selected = ((BaseSortableDataProvider)
// getDataProvider()).getSelectedData();
// addPerformed(target, selected);
// }
// };
// addButton.add(new VisibleEnableBehaviour() {
// @Override
// public boolean isVisible() {
// return ObjectListPanel.this.isMultiSelect();
// }
// });
// mainForm.add(addButton);
}

@Override
public void onClick(AjaxRequestTarget target) {
List<T> selected = ((ObjectDataProvider2) getDataProvider()).getSelectedData();
addPerformed(target, selected);
}
};
addButton.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return ObjectListPanel.this.isMultiSelect();
}
});
mainForm.add(addButton);
protected BaseSortableDataProvider<SelectableBean<T>> getProvider() {
return new ObjectDataProvider2<SelectableBean<T>, T>(parentPage, type);
}

private BoxedTablePanel createTable() {
List<IColumn<SelectableBean<T>, String>> columns = initColumns();
ObjectDataProvider2<SelectableBean<T>, T> provider = new ObjectDataProvider2<SelectableBean<T>, T>(
parentPage, type);
provider = getProvider();
provider.setQuery(getQuery());

BoxedTablePanel<SelectableBean<T>> table = new BoxedTablePanel<SelectableBean<T>>(ID_TABLE, provider,
columns, tableId, pageSize) {

Expand All @@ -190,9 +209,9 @@ protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
return table;
}

private ObjectDataProvider2<SelectableBean<T>, T> getDataProvider() {
private BaseSortableDataProvider<SelectableBean<T>> getDataProvider() {
BoxedTablePanel<SelectableBean<T>> table = getTable();
ObjectDataProvider2<SelectableBean<T>, T> provider = (ObjectDataProvider2<SelectableBean<T>, T>) table
BaseSortableDataProvider<SelectableBean<T>> provider = (BaseSortableDataProvider<SelectableBean<T>>) table
.getDataTable().getDataProvider();
return provider;

Expand All @@ -203,7 +222,7 @@ private BoxedTablePanel<SelectableBean<T>> getTable() {
}

private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
ObjectDataProvider2 provider = getDataProvider();
BaseSortableDataProvider<SelectableBean<T>> provider = getDataProvider();
provider.setQuery(query);

// RolesStorage storage = getSessionStorage().getRoles();
Expand Down Expand Up @@ -231,13 +250,27 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob
return PageBase.createStringResourceStatic(this, resourceKey, objects);
}

private List<IColumn<SelectableBean<T>, String>> initColumns() {
protected void onCheckboxUpdate(AjaxRequestTarget target){

}

protected List<IColumn<SelectableBean<T>, String>> initColumns() {
List<IColumn<SelectableBean<T>, String>> columns = new ArrayList<IColumn<SelectableBean<T>, String>>();

CheckBoxHeaderColumn checkboxColumn = new CheckBoxHeaderColumn();
checkboxColumn.setCheckboxVisible(isMultiSelect());
columns.add(checkboxColumn);
CheckBoxHeaderColumn checkboxColumn = new CheckBoxHeaderColumn() {

@Override
protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel rowModel) {
// TODO Auto-generated method stub
super.onUpdateRow(target, table, rowModel);
ObjectListPanel.this.onCheckboxUpdate(target);
}


};
if (isMultiSelect()) {
columns.add(checkboxColumn);
}
String nameColumnName = SelectableBean.F_VALUE + ".name";
if (isEditable()) {
columns.add(new LinkColumn<SelectableBean<T>>(createStringResource("ObjectType.name"),
Expand Down Expand Up @@ -265,7 +298,7 @@ public void onClick(AjaxRequestTarget target, IModel<SelectableBean<T>> rowModel
}

private void clearSearchPerformed(AjaxRequestTarget target) {
ObjectDataProvider2 provider = getDataProvider();
BaseSortableDataProvider<SelectableBean<T>> provider = getDataProvider();
provider.setQuery(null);

target.add(getTable());
Expand Down
@@ -0,0 +1,44 @@
<!--
~ Copyright (c) 2010-2016 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">

<div class="form-inline search-form">

<div class="form-group">
<label><wicket:message key="roleMemberPanel.type" /></label>
<select class="form-control input-sm" wicket:id="type" />
</div>

<div class="form-group col-md-4">
<label><wicket:message key="typedAssignablePanel.selectedResources" /></label>
<label class="form-control input-sm" wicket:id="resourcesSelected" />
</div>
<div class="form-group col-md-4">
<label><wicket:message key="typedAssignablePanel.selectedRoles" /></label>
<label class="form-control input-sm" wicket:id="rolesSelected" />
</div>
<div class="form-group col-md-4">
<label><wicket:message key="typedAssignablePanel.selectedOrgs" /></label>
<label class="form-control input-sm" wicket:id="orgSelected" />
</div>
</div>

<div wicket:id="roleTable"></div>
<div wicket:id="resourceTable"></div>
<div wicket:id="orgTable"></div>
<a class="btn btn-sm btn-primary" wicket:id="assignButton"/>
</wicket:panel>

0 comments on commit d44622f

Please sign in to comment.