Skip to content

Commit

Permalink
MID-1903 - fixing few issues/adding some improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
Erik Suta committed Jul 18, 2014
1 parent 9588a4d commit 544e1d5
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 72 deletions.
Expand Up @@ -99,6 +99,10 @@ protected IModel<String> createTextNameModel() {
return createStringResource("BasicSearchPanel.textPlaceholder");
}

public Component getSearchButton(){
return get(ID_SEARCH);
}

protected void searchPerformed(AjaxRequestTarget target) {
}

Expand Down
Expand Up @@ -16,29 +16,9 @@
-->

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<head>
<!-- TODO - clean this up to some CSS file + unite fonts and style with the rest of the page -->
<wicket:head>
<style>
div.wicket-aa {
font-family: "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
font-size: 12px;
background-color: white;
border-width: 1px;
border-color: #cccccc;
border-style: solid;
padding: 2px;
margin: 1px 0 0 0;
text-align:left;
}
div.wicket-aa ul { list-style:none; padding: 2px; margin:0; }
div.wicket-aa ul li.selected { background-color: #FFFF00; padding: 2px; margin:0; }
</style>
</wicket:head>
</head>
<body>
<wicket:extend>
<form class="clearfix form-horizontal" wicket:id="mainForm">
<form class="form-horizontal" wicket:id="mainForm">
<div class="form-group">
<label class="col-lg-2 control-label"><wicket:message key="PageAccounts.resource"/></label>

Expand Down Expand Up @@ -92,7 +72,7 @@ <h3><wicket:message key="PageAccounts.summary"/></h3>

<h3><wicket:message key="PageAccounts.shadows"/></h3>

<form class="clearfix form-inline pull-right search-form" wicket:id="searchForm" >
<form class="form-inline pull-right search-form" wicket:id="searchForm" >
<div class="form-group">
<label class="sr-only"><wicket:message key="PageAccounts.accounts.kind" /></label>
<select class="form-control input-sm" wicket:id="kindSearch" />
Expand All @@ -111,8 +91,8 @@ <h3><wicket:message key="PageAccounts.shadows"/></h3>
<div wicket:id="basicSearch" />
</form>

<form class="clearfix form-horizontal" wicket:id="accountForm">
<div wicket:id="accountsContainer">
<form class="form-horizontal" wicket:id="accountForm">
<div wicket:id="accountsContainer" class="clearfix">
<div wicket:id="accounts"/>
</div>

Expand Down
Expand Up @@ -17,13 +17,11 @@
package com.evolveum.midpoint.web.page.admin.configuration;

import com.evolveum.midpoint.common.configuration.api.MidpointConfiguration;
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.prism.Definition;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.match.PolyStringNormMatchingRule;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer;
import com.evolveum.midpoint.prism.query.*;
import com.evolveum.midpoint.schema.*;
Expand All @@ -48,6 +46,7 @@
import com.evolveum.midpoint.web.page.admin.configuration.dto.ResourceItemDto;
import com.evolveum.midpoint.web.session.ConfigurationStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.SearchFormEnterBehavior;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

Expand Down Expand Up @@ -272,6 +271,26 @@ public boolean isVisible() {
}

private void initSearchForm(Form searchForm){
BasicSearchPanel<AccountDetailsSearchDto> basicSearch = new BasicSearchPanel<AccountDetailsSearchDto>(ID_SEARCH_BASIC) {

@Override
protected IModel<String> createSearchTextModel() {
return new PropertyModel<>(searchModel, AccountDetailsSearchDto.F_SEARCH_TEXT);
}

@Override
protected void searchPerformed(AjaxRequestTarget target) {
PageAccounts.this.searchPerformed(target);
}

@Override
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageAccounts.this.clearSearchPerformed(target);
}
};
basicSearch.setOutputMarkupId(true);
searchForm.add(basicSearch);

DropDownChoice kind = new DropDownChoice(ID_SEARCH_KIND,
new PropertyModel<ShadowKindType>(searchModel, AccountDetailsSearchDto.F_KIND),
WebMiscUtil.createReadonlyModelFromEnum(ShadowKindType.class), new EnumChoiceRenderer(this));
Expand Down Expand Up @@ -311,7 +330,6 @@ protected void onUpdate(AjaxRequestTarget target) {
intent.setOutputMarkupId(true);
searchForm.add(intent);

//TODO - consider adding some on-enter behavior or sth like that
AutoCompleteTextField<String> objectClass = new AutoCompleteTextField<String>(ID_SEARCH_OBJECT_CLASS,
new PropertyModel<String>(searchModel, AccountDetailsSearchDto.F_OBJECT_CLASS)) {

Expand Down Expand Up @@ -342,27 +360,8 @@ protected Iterator<String> getChoices(String input) {
objectClass.add(AttributeModifier.replace("placeholder", createStringResource("PageAccounts.accounts.objectClass")));
objectClass.setOutputMarkupId(true);
objectClass.add(createObjectClassValidator());
objectClass.add(new SearchFormEnterBehavior(basicSearch.getSearchButton()));
searchForm.add(objectClass);

BasicSearchPanel<AccountDetailsSearchDto> basicSearch = new BasicSearchPanel<AccountDetailsSearchDto>(ID_SEARCH_BASIC) {

@Override
protected IModel<String> createSearchTextModel() {
return new PropertyModel<>(searchModel, AccountDetailsSearchDto.F_SEARCH_TEXT);
}

@Override
protected void searchPerformed(AjaxRequestTarget target) {
PageAccounts.this.searchPerformed(target);
}

@Override
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageAccounts.this.clearSearchPerformed(target);
}
};
basicSearch.setOutputMarkupId(true);
searchForm.add(basicSearch);
}

private IValidator<String> createObjectClassValidator(){
Expand Down Expand Up @@ -597,8 +596,8 @@ private List<IColumn> createAccountsColumns() {
ShadowType.F_KIND.getLocalPart(), SelectableBean.F_VALUE + ".kind"));
columns.add(new PropertyColumn(createStringResource("PageAccounts.accounts.intent"),
ShadowType.F_INTENT.getLocalPart(), SelectableBean.F_VALUE + ".intent"));
columns.add(new PropertyColumn(createStringResource("PageAccounts.accounts.objectClass"),
ShadowType.F_OBJECT_CLASS.getLocalPart(), SelectableBean.F_VALUE + ".objectClass"));
columns.add(new PropertyColumn<QName, String>(createStringResource("PageAccounts.accounts.objectClass"),
ShadowType.F_OBJECT_CLASS.getLocalPart(), SelectableBean.F_VALUE + ".objectClass.localPart"));
columns.add(new PropertyColumn(createStringResource("PageAccounts.accounts.synchronizationSituation"),
ShadowType.F_SYNCHRONIZATION_SITUATION.getLocalPart(), SelectableBean.F_VALUE + ".synchronizationSituation"));
columns.add(new PropertyColumn(createStringResource("PageAccounts.accounts.synchronizationTimestamp"),
Expand All @@ -618,26 +617,7 @@ private ObjectFilter createResourceQueryFilter() {
RefFilter resourceRef = RefFilter.createReferenceEqual(ShadowType.F_RESOURCE_REF, ShadowType.class,
getPrismContext(), oid);

PrismObject<ResourceType> resource = getModelService().getObject(ResourceType.class, oid, null,
createSimpleTask(OPERATION_LOAD_ACCOUNTS), result);
RefinedResourceSchema schema = RefinedResourceSchema.getRefinedSchema(resource);
QName qname = null;
for (RefinedObjectClassDefinition def : schema.getRefinedDefinitions(ShadowKindType.ACCOUNT)) {
if (def.isDefault()) {
qname = def.getObjectClassDefinition().getTypeName();
break;
}
}

if (qname == null) {
error("Couldn't find default object class for resource '" + WebMiscUtil.getName(resource) + "'.");
return null;
}

EqualFilter objectClass = EqualFilter.createEqual(ShadowType.F_OBJECT_CLASS, ShadowType.class, getPrismContext(),
null, qname);

return AndFilter.createAnd(resourceRef, objectClass);
return resourceRef;
} catch (Exception ex) {
LoggingUtils.logException(LOGGER, "Couldn't create query", ex);
error("Couldn't create query, reason: " + ex.getMessage());
Expand Down Expand Up @@ -729,13 +709,24 @@ private void loadResourceObjectClass(){

private void listSyncDetailsPerformed(AjaxRequestTarget target) {
refreshSyncTotalsModels();

if(resourceModel.getObject() == null){
warn(getString("pageAccounts.message.resourceNotSelected"));
refreshEverything(target);
return;
}

loadResourceObjectClass();

TablePanel table = getAccountsTable();
ObjectDataProvider provider = (ObjectDataProvider) table.getDataTable().getDataProvider();
provider.setQuery(ObjectQuery.createObjectQuery(createResourceQueryFilter()));
table.getDataTable().setCurrentPage(0);

refreshEverything(target);
}

private void refreshEverything(AjaxRequestTarget target){
target.add(getAccountsContainer(),
getTotalsPanel(),
getFeedbackPanel(),
Expand Down
Expand Up @@ -43,6 +43,7 @@ PageAccounts.exportException=Error occurred during export, reason {0}
PageAccounts.button.clearExportFolder=Clear export folder
PageAccounts.exportFileDoesntExist=Couldn't create file {0}
PageAccounts.message.validationError=Searched objectClass value: '{0}' is not valid. Please provide valid objectClass value.
pageAccounts.message.resourceNotSelected=Resource not selected. Please select a resource to display it's shadows.
ShadowKindType.ACCOUNT=Account
ShadowKindType.ENTITLEMENT=Entitlement
ShadowKindType.GENERIC=Generic
Expand Down
Expand Up @@ -75,6 +75,6 @@ public String getObjectClass() {
}

public void setObjectClass(String objectClass) {
this.objectClass = null;
this.objectClass = objectClass;
}
}
Expand Up @@ -285,7 +285,8 @@ public void populateItem(Item<ICellPopulator<AccountContentDto>> cellItem,
column = new PropertyColumn(createStringResource("pageContentAccounts.intent"), AccountContentDto.F_INTENT);
columns.add(column);

column = new PropertyColumn(createStringResource("pageContentAccounts.objectClass"), AccountContentDto.F_OBJECT_CLASS);
column = new PropertyColumn(createStringResource("pageContentAccounts.objectClass"),
AccountContentDto.F_OBJECT_CLASS);
columns.add(column);

column = new EnumPropertyColumn(createStringResource("pageContentAccounts.situation"), AccountContentDto.F_SITUATION) {
Expand Down
Expand Up @@ -156,7 +156,7 @@ private AccountContentDto createAccountContentDto(PrismObject<ShadowType> object

dto.setKind(shadow.getKind());
dto.setIntent(shadow.getIntent());
dto.setObjectClass(shadow.getObjectClass().toString());
dto.setObjectClass(shadow.getObjectClass().getLocalPart());

addInlineMenuToDto(dto);

Expand Down
23 changes: 23 additions & 0 deletions gui/admin-gui/src/main/webapp/less/midpoint/midpoint.less
Expand Up @@ -16,6 +16,29 @@
@import "tree-theme-basic.less";
@import "operation-result.less";

/**
* Auto-complete drop-down choice styles
*/
div.wicket-aa {
background-color: white;
border-width: 1px;
border-color: #cccccc;
border-style: solid;
padding: 2px;
margin: 1px 1px 1px 1px;
text-align:left;
}
div.wicket-aa ul {
list-style:none; padding: 2px;
margin: 0;
}

div.wicket-aa ul li.selected {
background-color: #99ccff;
padding: 2px;
margin:0;
}

div.wicket-debug-buttons {
border: 1px solid #000000;
background-color: #ffffff;
Expand Down

0 comments on commit 544e1d5

Please sign in to comment.