Skip to content

Commit

Permalink
access certification : started stage definition tab implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Dec 15, 2015
1 parent b1a615d commit 97031dc
Show file tree
Hide file tree
Showing 9 changed files with 400 additions and 43 deletions.
Expand Up @@ -18,8 +18,11 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<!--<h2><wicket:message key="PageCertDefinition.xmlDefinition"/></h2>-->
<span wicket:id="stageList">
<span wicket:id="stageList" class="row">
<div wicket:id="stageEditor"/>
</span>
</span>
<!--<div wicket:id="stageList">-->
<!--<a name="ll" wicket:id="stageDefinitionLink"><span wicket:id="stageNameLabel"/></a>-->
<!--</div>-->
</wicket:panel>
</html>
Expand Up @@ -17,10 +17,19 @@
package com.evolveum.midpoint.web.page.admin.certification;

import com.evolveum.midpoint.web.component.AceEditor;
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.page.admin.certification.dto.CertDefinitionDto;
import com.evolveum.midpoint.web.page.admin.certification.dto.StageDefinitionDto;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
Expand All @@ -31,33 +40,86 @@
* @author mederly
*/

public class DefinitionStagesPanel extends SimplePanel<CertDefinitionDto> {
public class DefinitionStagesPanel extends SimplePanel<List<StageDefinitionDto>> {

private static final String ID_STAGE_LIST = "stageList";
private static final String ID_STAGE_EDITOR = "stageEditor";
private static final String ID_STAGE_DEFINITION_LINK = "stageDefinitionLink";
private static final String ID_STAGE_NAME_LABEL = "stageNameLabel";

public DefinitionStagesPanel(String id, IModel<CertDefinitionDto> model) {
public DefinitionStagesPanel(String id, IModel<List<StageDefinitionDto>> model) {
super(id, model);
}

@Override
protected void initLayout() {
// RepeatingView rowView = new RepeatingView(ID_STAGE_LIST);
// if (getModel() != null && getModel().getObject() != null) {
// final List<StageDefinitionDto> stagesList = getModel().getObject();
// for (final StageDefinitionDto stageDefinitionDto : stagesList) {
// WebMarkupContainer row = new WebMarkupContainer(rowView.newChildId());
// AjaxLink stageDefinitionLink = new AjaxLink(ID_STAGE_DEFINITION_LINK) {
// @Override
// public void onClick(AjaxRequestTarget target) {
// TabbedPanel tabbedPanel = this.findParent(TabbedPanel.class);
// IModel<List<ITab>> tabsModel = tabbedPanel.getTabs();
// List<ITab> tabsList = tabsModel.getObject();
// tabsList.add(new AbstractTab(createStringResource("PageCertDefinition.xmlDefinition")) {
// @Override
// public WebMarkupContainer getPanel(String panelId) {
// return new StageDefinitionPanel(panelId, getStageDefinitionModel(stageDefinitionDto, stagesList.indexOf(stageDefinitionDto)));
// }
// });
// tabbedPanel.setSelectedTab(tabsList.size() - 1);
// target.add(tabbedPanel);
// }
// };
// Label stageNameLabel = new Label(ID_STAGE_NAME_LABEL, stageDefinitionDto.getName());
// stageNameLabel.setOutputMarkupId(true);
// stageDefinitionLink.add(stageNameLabel);
//
// row.add(stageDefinitionLink);
// rowView.add(row);
// }
// }
// add(rowView);

AbstractReadOnlyModel<List> stageListModel = new AbstractReadOnlyModel<List>() {
@Override
public List getObject() {
return getModelObject().getDefinition().getStageDefinition();
return getModelObject();
}
};
ListView list = new ListView(ID_STAGE_LIST, stageListModel) {

@Override
protected void populateItem(ListItem item) {
// TODO work with model
StageEditorPanel editor = new StageEditorPanel(ID_STAGE_EDITOR);
StageEditorPanel editor = new StageEditorPanel(ID_STAGE_EDITOR, item.getModel());
item.add(editor);
}
};
list.setOutputMarkupId(true);
add(list);
}

private IModel<StageDefinitionDto> getStageDefinitionModel(final StageDefinitionDto stageDefinitionDto, final int index){
return new IModel<StageDefinitionDto>() {
@Override
public StageDefinitionDto getObject() {
return stageDefinitionDto;
}

@Override
public void setObject(StageDefinitionDto object) {
List<StageDefinitionDto> stagesList = DefinitionStagesPanel.this.getModel().getObject();
StageDefinitionDto stageDto = stagesList.get(index);
stageDto = object;
}

@Override
public void detach() {
}
};
}
}
Expand Up @@ -26,48 +26,50 @@ <h3 class="box-title"><wicket:message key="PageCertDefinition.basicInformation"/
<div class="box-body no-padding">
<table class="table table-striped">
<tr>
<td><wicket:message key="PageCertDefinition.name" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.name" class="col-md-4"/></td>
<td>
<div class="col-md-6">
<input type="text" class="form-control input-sm" wicket:id="name"/>
</div>
</td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.description" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.description" class="col-md-4"/></td>
<td>
<div class="col-md-6">
<input type="text" class="form-control input-sm" wicket:id="description"/>
</div>
</td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.owner" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.owner" class="col-md-4"/></td>
<td>
<div class="col-md-6">
<div wicket:id="owner"/>
<div wicket:id="ownerValueContainer" class="row">
<div wicket:id="ownerInput" class="col-xs-9"/>
</div>
</div>
</td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.numberOfStages" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.numberOfStages" class="col-md-4"/></td>
<td><div wicket:id="numberOfStages" class="col-md-6"/></td>
</tr>
<!-- TODO visually separate definition and current status -->
<tr> <!-- TODO do this in some "compressed" form to save space -->
<td><wicket:message key="PageCertDefinition.campaignsInReviewStage" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.campaignsInReviewStage" class="col-md-4"/></td>
<td><div wicket:id="campaignsInReviewStage" class="col-md-6"/></td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.campaignsTotal" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.campaignsTotal" class="col-md-4"/></td>
<td><div wicket:id="campaignsTotal" class="col-md-6"/></td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.campaignLastStarted" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.campaignLastStarted" class="col-md-4"/></td>
<td><div wicket:id="campaignLastStarted" class="col-md-6"/></td>
</tr>
<tr>
<td><wicket:message key="PageCertDefinition.campaignLastClosed" class="col-md-3"/></td>
<td><wicket:message key="PageCertDefinition.campaignLastClosed" class="col-md-4"/></td>
<td><div wicket:id="campaignLastClosed" class="col-md-6"/></td>
</tr>
</table>
Expand Down
Expand Up @@ -38,26 +38,34 @@
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.form.ValueChoosePanel;
import com.evolveum.midpoint.web.component.form.multivalue.GenericMultiValueLabelEditPanel;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.component.util.LoadableModel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.PageTemplate;
import com.evolveum.midpoint.web.page.admin.certification.dto.CertDefinitionDto;
import com.evolveum.midpoint.web.page.admin.certification.dto.DefinitionScopeDto;
import com.evolveum.midpoint.web.page.admin.certification.dto.StageDefinitionDto;
import com.evolveum.midpoint.web.page.admin.roles.component.MultiplicityPolicyDialog;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
Expand Down Expand Up @@ -91,6 +99,8 @@ public class PageCertDefinition extends PageAdminCertification {
private static final String ID_CAMPAIGNS_TOTAL = "campaignsTotal";
private static final String ID_LAST_STARTED = "campaignLastStarted";
private static final String ID_LAST_CLOSED = "campaignLastClosed";
private static final String ID_OWNER_VALUE_CONTAINER = "ownerValueContainer";
private static final String ID_OWNER_INPUT = "ownerInput";

private static final String ID_BACK_BUTTON = "backButton";
private static final String ID_SAVE_BUTTON = "saveButton";
Expand Down Expand Up @@ -178,7 +188,7 @@ public WebMarkupContainer getPanel(String panelId) {
tabs.add(new AbstractTab(createStringResource("PageCertDefinition.stagesDefinition")) {
@Override
public WebMarkupContainer getPanel(String panelId) {
return new DefinitionStagesPanel(panelId, definitionModel);
return new DefinitionStagesPanel(panelId, new PropertyModel<List<StageDefinitionDto>>(definitionModel, CertDefinitionDto.F_STAGE_DEFINITION));
}
});

Expand Down Expand Up @@ -247,12 +257,12 @@ public boolean isEnabled() {
});
mainForm.add(descriptionField);

PropertyModel ownerModel = new PropertyModel<>(definitionModel, CertDefinitionDto.F_OWNER);
final PropertyModel ownerModel = new PropertyModel<>(definitionModel, CertDefinitionDto.F_OWNER);

List<PrismReferenceValue> values = new ArrayList<>();
values.add(definitionModel.getObject() == null ? new PrismReferenceValue() : definitionModel.getObject().getOwner());
final ValueChoosePanel ownerNameField = new ValueChoosePanel(ID_OWNER, ownerModel, values
,false, UserType.class);
// final ValueChoosePanel ownerNameField = new ValueChoosePanel(ID_OWNER, ownerModel, values
// ,false, UserType.class);
// {
// @Override
// protected void choosePerformed(AjaxRequestTarget target, ObjectType object) {
Expand All @@ -262,22 +272,35 @@ public boolean isEnabled() {
//// target.add(comp);
// }
// };
ownerNameField.add(new VisibleEnableBehaviour() {
@Override
public boolean isEnabled() {
return true;
}
});
ownerNameField.setOutputMarkupId(true);
mainForm.add(ownerNameField);
// ownerNameField.setOutputMarkupId(true);

final WebMarkupContainer valueContainer = new WebMarkupContainer(ID_OWNER_VALUE_CONTAINER);
valueContainer.setOutputMarkupId(true);
valueContainer.add(new AttributeModifier("class", "row"));
add(valueContainer);

Panel input = new ValueChoosePanel(ID_OWNER_INPUT, ownerModel, values
,false, UserType.class);
// {
// @Override
// protected void choosePerformed(AjaxRequestTarget target, ObjectType object) {
// super.choosePerformed(target, object);
//
// Component comp = this.getParent();
// target.add(comp);
// }
// };
//TODO for now selected value is not displayed in the input control
//but it is set to model and can be saved
input.add(new AttributeModifier("class", "col-xs-9"));
valueContainer.add(input);
mainForm.add(valueContainer);

mainForm.add(new Label(ID_NUMBER_OF_STAGES, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
mainForm.add(new Label(ID_REVIEW_STAGE_CAMPAIGNS, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
mainForm.add(new Label(ID_CAMPAIGNS_TOTAL, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
mainForm.add(new Label(ID_LAST_STARTED, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));
mainForm.add(new Label(ID_LAST_CLOSED, new PropertyModel<>(definitionModel, CertDefinitionDto.F_NUMBER_OF_STAGES)));


}

private void initButtons(final Form mainForm) {
Expand Down
@@ -0,0 +1,19 @@
package com.evolveum.midpoint.web.page.admin.certification;

import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.page.admin.certification.dto.StageDefinitionDto;
import org.apache.wicket.model.IModel;

/**
* Created by Kate Honchar.
*/
public class StageDefinitionPanel extends SimplePanel<StageDefinitionDto> {
public StageDefinitionPanel(String id, IModel<StageDefinitionDto> model) {
super(id, model);
}

@Override
protected void initLayout() {
}

}

0 comments on commit 97031dc

Please sign in to comment.