Skip to content

Commit

Permalink
save&run button for task, introducing taskMainPanel, fixing refresh b…
Browse files Browse the repository at this point in the history
…ehaviour, small cleanup
  • Loading branch information
katkav committed Mar 8, 2020
1 parent 65c8e24 commit d9f1693
Show file tree
Hide file tree
Showing 25 changed files with 2,448 additions and 2,895 deletions.
Expand Up @@ -15,13 +15,10 @@
import javax.management.ObjectName;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.wicket.*;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxChannel;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
Expand All @@ -35,8 +32,6 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
Expand Down Expand Up @@ -80,10 +75,14 @@
import com.evolveum.midpoint.gui.impl.factory.ItemWrapperFactory;
import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory;
import com.evolveum.midpoint.gui.impl.factory.WrapperContext;
import com.evolveum.midpoint.gui.impl.prism.*;
import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValuePanel;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper;
import com.evolveum.midpoint.model.api.*;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;
import com.evolveum.midpoint.model.api.expr.MidpointFunctions;
import com.evolveum.midpoint.model.api.interaction.DashboardService;
import com.evolveum.midpoint.model.api.validator.ResourceValidator;
Expand Down Expand Up @@ -159,15 +158,16 @@
import com.evolveum.midpoint.web.page.admin.resources.*;
import com.evolveum.midpoint.web.page.admin.roles.PageRole;
import com.evolveum.midpoint.web.page.admin.roles.PageRoles;
import com.evolveum.midpoint.web.page.admin.server.*;
import com.evolveum.midpoint.web.page.admin.server.PageNodes;
import com.evolveum.midpoint.web.page.admin.server.PageTask;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
import com.evolveum.midpoint.web.page.admin.server.PageTasksCertScheduling;
import com.evolveum.midpoint.web.page.admin.services.PageService;
import com.evolveum.midpoint.web.page.admin.services.PageServices;
import com.evolveum.midpoint.web.page.admin.users.PageOrgTree;
import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit;
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.admin.users.PageUsers;
import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicies;
import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicy;
import com.evolveum.midpoint.web.page.admin.workflow.PageAttorneySelection;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItemsAttorney;
import com.evolveum.midpoint.web.page.login.PageLogin;
Expand Down Expand Up @@ -686,19 +686,6 @@ public <O extends ObjectType, T extends ObjectType> void authorize(String operat
getSecurityEnforcer().authorize(operationUrl, phase, params, ownerResolver, getPageTask(), result);
}

public <O extends ObjectType, T extends ObjectType> void authorize(String operationUrl, AuthorizationPhaseType phase,
PrismObject<O> object, ObjectDelta<O> delta, PrismObject<T> target, OwnerResolver ownerResolver)
throws SecurityViolationException, SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException {
Task task = getPageTask();
AuthorizationParameters<O, T> params = new AuthorizationParameters.Builder<O, T>()
.oldObject(object)
.delta(delta)
.target(target)
.build();
getSecurityEnforcer().authorize(operationUrl, phase, params, ownerResolver, task, task.getResult());
}


public MidpointFormValidatorRegistry getFormValidatorRegistry() {
return formValidatorRegistry;
}
Expand Down Expand Up @@ -1185,10 +1172,6 @@ public String getMainPopupBodyId() {
return getMainPopup().getContentId();
}

public void setMainPopupTitle(IModel<String> title) {
getMainPopup().setTitle(title);
}

public void showMainPopup(Popupable popupable, AjaxRequestTarget target) {
getMainPopup().setTitle(popupable.getTitle());
getMainPopup().setInitialHeight(popupable.getHeight());
Expand Down Expand Up @@ -1542,61 +1525,6 @@ public String getDescribe() {
return getString("pageBase.unknownBuildNumber");
}

protected ModalWindow createModalWindow(final String id, IModel<String> title, int width, int height) {
final ModalWindow modal = new ModalWindow(id);
add(modal);

modal.setResizable(false);
modal.setTitle(title);
modal.setCookieName(PageBase.class.getSimpleName() + ((int) (Math.random() * 100)));

modal.setInitialWidth(width);
modal.setWidthUnit("px");
modal.setInitialHeight(height);
modal.setHeightUnit("px");

modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {

private static final long serialVersionUID = 1L;

@Override
public boolean onCloseButtonClicked(AjaxRequestTarget target) {
return true;
}
});

modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {

private static final long serialVersionUID = 1L;

@Override
public void onClose(AjaxRequestTarget target) {
modal.close(target);
}
});

modal.add(new AbstractDefaultAjaxBehavior() {

private static final long serialVersionUID = 1L;

@Override
public void renderHead(Component component, IHeaderResponse response) {
response.render(OnDomReadyHeaderItem.forScript("Wicket.Window.unloadConfirmation = false;"));
response.render(JavaScriptHeaderItem
.forScript("$(document).ready(function() {\n" + " $(document).bind('keyup', function(evt) {\n"
+ " if (evt.keyCode == 27) {\n" + getCallbackScript() + "\n"
+ " evt.preventDefault();\n" + " }\n" + " });\n" + "});", id));
}

@Override
protected void respond(AjaxRequestTarget target) {
modal.close(target);
}
});

return modal;
}

// returns to previous page via restart response exception
public RestartResponseException getRestartResponseException(Class<? extends Page> defaultBackPageClass) {
return new RestartResponseException(defaultBackPageClass);
Expand Down Expand Up @@ -1755,11 +1683,6 @@ protected List<SideBarMenuItem> createMenuItems() {
AuthorizationConstants.AUTZ_UI_RESOURCE_EDIT_URL, AuthorizationConstants.AUTZ_UI_RESOURCES_VIEW_URL)) {
items.add(createResourcesItems());
}
//TODO uncomment after ValuePolicies pages are finished
// if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_VALUE_POLICIES_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL,
// AuthorizationConstants.AUTZ_UI_VALUE_POLICIES_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL)) {
// items.add(createValuePolicieItems());
// }

if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_MY_WORK_ITEMS_URL,
AuthorizationConstants.AUTZ_UI_ATTORNEY_WORK_ITEMS_URL,
Expand Down Expand Up @@ -1953,8 +1876,6 @@ private MainMenuItem createServerTasksItems() {

addMenuItem(item, "PageAdmin.menu.top.serverTasks.nodes", PageNodes.class);

//should we support archetype view for TaskType?
// addCollectionsMenuItems(item.getItems(), TaskType.COMPLEX_TYPE);
MenuItem newTaskMenu = new MenuItem(createStringResource("PageAdmin.menu.top.serverTasks.new"), GuiStyleConstants.CLASS_PLUS_CIRCLE, PageTask.class, null,
new VisibleEnableBehaviour());
item.getItems().add(newTaskMenu);
Expand Down Expand Up @@ -1990,16 +1911,6 @@ private MainMenuItem createResourcesItems() {
return item;
}

// Izolated until the referenced value policies pages are fully implemented
private MainMenuItem createValuePolicieItems() {
MainMenuItem item = new MainMenuItem("fa fa-asterisk", createStringResource("PageAdmin.menu.top.valuePolicies"), null);

addMenuItem(item, "PageAdmin.menu.top.valuePolicies.list", PageValuePolicies.class);
addMenuItem(item, "PageAdmin.menu.top.valuePolicies.new", PageValuePolicy.class);

return item;
}

private MainMenuItem createReportsItems() {
MainMenuItem item = new MainMenuItem("fa fa-pie-chart", createStringResource("PageAdmin.menu.top.reports"),
null);
Expand Down Expand Up @@ -2428,20 +2339,6 @@ public boolean isEnabled() {
};
}

public DeploymentInformationType loadDeploymentInformationType() {
DeploymentInformationType deploymentInformationType = null;
OperationResult result = new OperationResult(OPERATION_GET_DEPLOYMENT_INFORMATION);
try {
deploymentInformationType = getModelInteractionService().getDeploymentInformationConfiguration(result);
LOGGER.trace("Deployment information : {}", deploymentInformationType);
result.recordSuccess();
} catch (Exception ex) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load deployment information", ex);
result.recordFatalError(createStringResource("PageBase.message.loadDeploymentInformationType.fatalError").getString(), ex);
}
return deploymentInformationType;
}

public boolean canRedirectBack() {
return canRedirectBack(DEFAULT_BREADCRUMB_STEP);
}
Expand Down Expand Up @@ -2777,16 +2674,10 @@ public <IW extends ItemWrapper> Panel initItemPanel(String panelId, QName typeNa

public <CVW extends PrismContainerValueWrapper<C>, C extends Containerable> Panel initContainerValuePanel(String id, IModel<CVW> model,
ItemPanelSettings settings) {
//ItemVisibilityHandler visibilityHandler, ItemEditabilityHandler editabilityHandler) {
//TODO find from registry first
return new PrismContainerValuePanel<>(id, model, settings);
}

public <C extends Containerable> Panel getBasicContainerValuePanel(String idPanel, IModel<PrismContainerValueWrapper<C>> model, ItemPanelSettings settings){
Panel containerValue = initContainerValuePanel(idPanel, model, settings);
return containerValue;
}

public Clock getClock() {
return clock;
}
Expand Down
@@ -1,81 +1,83 @@
/*
* Copyright (c) 2010-2018 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.api.prism;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.prism.ItemVisibilityHandler;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.Revivable;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.util.DebugDumpable;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

/**
* @author katka
*
*/
public interface ItemWrapper<V extends PrismValue, I extends Item<V, ID>, ID extends ItemDefinition<I>, VW extends PrismValueWrapper> extends ItemDefinition<I>, Revivable, DebugDumpable, Serializable {


String debugDump(int indent);

boolean isVisible(PrismContainerValueWrapper parentContainer, ItemVisibilityHandler visibilityHandler);

boolean checkRequired(PageBase pageBase);

PrismContainerValueWrapper<?> getParent();

boolean isShowEmpty();

void setShowEmpty(boolean isShowEmpty, boolean recursive);

boolean isShowInVirtualContainer();

void setShowInVirtualContainer(boolean showInVirtualContainer);

ItemPath getPath();

//NEW

boolean isReadOnly();

void setReadOnly(boolean readOnly);

ExpressionType getFormComponentValidator();

List<VW> getValues();
VW getValue() throws SchemaException;

boolean isStripe();
void setStripe(boolean stripe);

I getItem();

boolean isColumn();
void setColumn(boolean column);

<D extends ItemDelta<V, ID>> void applyDelta(D delta) throws SchemaException;

<D extends ItemDelta<V, ID>> Collection<D> getDelta() throws SchemaException;

<O extends ObjectType> ItemStatus findObjectStatus();

<OW extends PrismObjectWrapper<O>, O extends ObjectType> OW findObjectWrapper();

ItemStatus getStatus();
}
/*
* Copyright (c) 2010-2018 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.api.prism;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.prism.ItemVisibilityHandler;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.Revivable;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.util.DebugDumpable;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserInterfaceElementVisibilityType;

/**
* @author katka
*
*/
public interface ItemWrapper<V extends PrismValue, I extends Item<V, ID>, ID extends ItemDefinition<I>, VW extends PrismValueWrapper> extends ItemDefinition<I>, Revivable, DebugDumpable, Serializable {


String debugDump(int indent);

void setVisibleOverwrite(UserInterfaceElementVisibilityType visible);
boolean isVisible(PrismContainerValueWrapper parentContainer, ItemVisibilityHandler visibilityHandler);

boolean checkRequired(PageBase pageBase);

PrismContainerValueWrapper<?> getParent();

boolean isShowEmpty();

void setShowEmpty(boolean isShowEmpty, boolean recursive);

boolean isShowInVirtualContainer();

void setShowInVirtualContainer(boolean showInVirtualContainer);

ItemPath getPath();

//NEW

boolean isReadOnly();

void setReadOnly(boolean readOnly);

ExpressionType getFormComponentValidator();

List<VW> getValues();
VW getValue() throws SchemaException;

boolean isStripe();
void setStripe(boolean stripe);

I getItem();

boolean isColumn();
void setColumn(boolean column);

<D extends ItemDelta<V, ID>> void applyDelta(D delta) throws SchemaException;

<D extends ItemDelta<V, ID>> Collection<D> getDelta() throws SchemaException;

<O extends ObjectType> ItemStatus findObjectStatus();

<OW extends PrismObjectWrapper<O>, O extends ObjectType> OW findObjectWrapper();

ItemStatus getStatus();
}

0 comments on commit d9f1693

Please sign in to comment.