Skip to content

Commit

Permalink
Save/Preview changes buttons enabled behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed May 4, 2017
1 parent 5063544 commit 9672c1c
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 6 deletions.
Expand Up @@ -26,6 +26,7 @@
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.security.api.AuthorizationConstants;

import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -92,6 +93,7 @@ public class AssignmentTablePanel<T extends ObjectType> extends BasePanel<List<A
private static final String ID_LIST = "assignmentList";
protected static final String ID_ROW = "assignmentEditor";
private PageBase pageBase = null;
private boolean isModelChanged = false;

public AssignmentTablePanel(String id, IModel<String> label,
IModel<List<AssignmentEditorDto>> assignmentModel) {
Expand Down Expand Up @@ -222,6 +224,7 @@ protected void addPerformed(AjaxRequestTarget target, List selected) {
super.addPerformed(target, selected);
addSelectedAssignablePerformed(target, selected,
getPageBase().getMainPopup().getId());
reloadMainFormButtons(target);
}

};
Expand Down Expand Up @@ -249,7 +252,8 @@ protected void assignSelectedOrgPerformed(List<OrgType> selectedOrgs,
// TODO Auto-generated method stub
addSelectedAssignablePerformed(target, (List) selectedOrgs,
getPageBase().getMainPopup().getId());
}
reloadMainFormButtons(target);
}
};
orgTreePanel.setOutputMarkupId(true);
getPageBase().showMainPopup(orgTreePanel, target);
Expand All @@ -271,7 +275,7 @@ protected void assignSelectedOrgPerformed(List<OrgType> selectedOrgs,
@Override
public void onClick(AjaxRequestTarget target) {
AssignmentTablePanel.this.deleteAssignmentPerformed(target);
}
}
});
items.add(item);
}
Expand Down Expand Up @@ -347,7 +351,8 @@ public void yesPerformed(AjaxRequestTarget target) {
if (modalWindow != null) {
modalWindow.close(target);
deleteAssignmentConfirmedPerformed(target, getSelectedAssignments());
}
reloadMainFormButtons(target);
}
}
};
}
Expand Down Expand Up @@ -564,4 +569,16 @@ protected boolean getAssignmentMenuVisibility(){
protected boolean ignoreMandatoryAttributes(){
return false;
}

protected void reloadMainFormButtons(AjaxRequestTarget target){
isModelChanged = true;
AbstractObjectMainPanel panel = AssignmentTablePanel.this.findParent(AbstractObjectMainPanel.class);
if (panel != null){
panel.reloadSavePreviewButtons(target);
}
}

public boolean isModelChanged() {
return isModelChanged;
}
}
Expand Up @@ -18,6 +18,8 @@
import java.util.List;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.commons.lang.Validate;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -151,10 +153,26 @@ protected void onError(AjaxRequestTarget target,
}
};
saveButton.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;

@Override
public boolean isVisible(){
public boolean isVisible() {
return !getObjectWrapper().isReadonly();
}

@Override
public boolean isEnabled() {
//in case user isn't allowed to modify focus data but has
// e.g. #assign authorization, Save button is disabled on page load.
// Save button becomes enabled just if some changes are made
// on the Assignments tab (in the use case with #assign authorization)
PrismContainerDefinition def = getObjectWrapper().getDefinition();
if (ContainerStatus.MODIFYING.equals(getObjectWrapper().getStatus())
&& !def.canModify()){
return areSavePreviewButtonsEnabled();
}
return true;
}
});
mainForm.setDefaultButton(saveButton);
mainForm.add(saveButton);
Expand All @@ -177,10 +195,22 @@ protected void onError(AjaxRequestTarget target,
}
};
previewButton.add(new VisibleEnableBehaviour(){
private static final long serialVersionUID = 1L;

@Override
public boolean isVisible(){
return AbstractObjectMainPanel.this.isPreviewButtonVisible();
}

@Override
public boolean isEnabled() {
PrismContainerDefinition def = getObjectWrapper().getDefinition();
if (ContainerStatus.MODIFYING.equals(getObjectWrapper().getStatus())
&& !def.canModify()){
return areSavePreviewButtonsEnabled();
}
return true;
}
});
mainForm.add(previewButton);
}
Expand Down Expand Up @@ -216,4 +246,14 @@ protected PageAdminObjectDetails<O> getDetailsPage() {
protected boolean getOptionsPanelVisibility(){
return true;
}

public void reloadSavePreviewButtons(AjaxRequestTarget target){
target.add(AbstractObjectMainPanel.this.get(ID_MAIN_FORM).get(ID_PREVIEW_CHANGES));
target.add(AbstractObjectMainPanel.this.get(ID_MAIN_FORM).get(ID_SAVE));

}

protected boolean areSavePreviewButtonsEnabled(){
return false;
}
}
Expand Up @@ -80,5 +80,12 @@ protected void showAllAssignments(AjaxRequestTarget target) {
assignments.add(panel);
}

public boolean isAssignmentsModelChanged(){
return getAssignmentTablePanel().isModelChanged();
}

private AssignmentTablePanel getAssignmentTablePanel(){
return (AssignmentTablePanel) get(ID_ASSIGNMENTS).get(ID_ASSIGNMENTS_PANEL);
}

}
Expand Up @@ -66,6 +66,7 @@ public class FocusMainPanel<F extends FocusType> extends AbstractObjectMainPanel
private LoadableModel<List<FocusSubwrapperDto<ShadowType>>> projectionModel;
private LoadableModel<List<AssignmentEditorDto>> assignmentsModel;
private TaskDtoProvider taskDtoProvider;
private FocusAssignmentsTabPanel assignmentsTabPanel = null;

public FocusMainPanel(String id, LoadableModel<ObjectWrapper<F>> objectModel,
LoadableModel<List<AssignmentEditorDto>> assignmentsModel,
Expand Down Expand Up @@ -199,7 +200,8 @@ protected WebMarkupContainer createFocusProjectionsTabPanel(String panelId, Page
}

protected WebMarkupContainer createFocusAssignmentsTabPanel(String panelId, PageAdminObjectDetails<F> parentPage) {
return new FocusAssignmentsTabPanel<F>(panelId, getMainForm(), getObjectModel(), assignmentsModel, parentPage);
assignmentsTabPanel = new FocusAssignmentsTabPanel<F>(panelId, getMainForm(), getObjectModel(), assignmentsModel, parentPage);
return assignmentsTabPanel;
}

protected WebMarkupContainer createRequestAssignmentTabPanel(String panelId, PageAdminObjectDetails<F> parentPage) {
Expand Down Expand Up @@ -304,4 +306,9 @@ public WebMarkupContainer createPanel(String panelId) {
}
}

@Override
protected boolean areSavePreviewButtonsEnabled(){
return assignmentsTabPanel == null ?
super.areSavePreviewButtonsEnabled() : assignmentsTabPanel.isAssignmentsModelChanged();
}
}
Expand Up @@ -213,7 +213,7 @@ protected List<InlineMenuItem> createAssignmentMenu() {
List<InlineMenuItem> items = new ArrayList<>();

InlineMenuItem item;
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ASSIGN_ACTION_URL)) {
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_DELEGATE_ACTION_URL)) {
item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.addDelegation"),
new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -300,6 +300,7 @@ protected void addSelectedAssignablePerformed(AjaxRequestTarget target, List<Obj
}
}
reloadAssignmentsPanel(target);
reloadMainFormButtons(target);
}

};
Expand Down

0 comments on commit 9672c1c

Please sign in to comment.