public ContextMenuPage() { ContextMenuItem menuItem1 = new ContextMenuItem(); menuItem1.setLabel("Option 1"); menuItem1.setAction("alert('Option 1');"); ContextMenuItem menuItem2 = new ContextMenuItem(); menuItem2.setDisabled(true); menuItem2.setLabel("Option 2"); menuItem2.setAction("alert('Option 2');"); ContextMenuItem menuItem3 = new ContextMenuItem(); menuItem3.setLabel("Option 3"); menuItem3.setAction("alert('Option 3');"); menuItem3.setHoverTitle("Option3 plays an important role."); ContextMenuBehavior menuBehavior1 = new ContextMenuBehavior(); WebMarkupContainer divContainer = new WebMarkupContainer("divmenu"); divContainer.add(menuBehavior1); add(divContainer); menuBehavior1.addMenuItem(menuItem1); menuBehavior1.addMenuItem(menuItem2); ContextMenuBehavior menuBehavior2 = new ContextMenuBehavior(); Button button = new Button("menuButton"); button.add(menuBehavior2); add(button); menuBehavior2.addMenuItem(menuItem1); menuBehavior2.addSeperator(); menuBehavior2.addMenuItem(menuItem2); menuBehavior2.addSeperator(); menuBehavior2.addMenuItem(menuItem3); menuBehavior2.setThemes(ContextMenuBehavior.Theme.VISTA); menuBehavior2.setOpenOnLeftClick(true); }
protected void constructPanel() { Form<AgentPortalCustomCashInConfirmPanel> form = new Form<AgentPortalCustomCashInConfirmPanel>( "cashInConfirmForm", new CompoundPropertyModel<AgentPortalCustomCashInConfirmPanel>(this)); form.add(new FeedbackPanel("errorMessages")); form.add(new Label("cashInBean.accountNumber")); form.add(new Label("cashInBean.msisdn")); form.add(new Label("cashInBean.displayName")); form.add(new AmountLabel("cashInBean.cashinAmount", true, true)); // Add Confirm button Button confirmButton = new Button("submitConfirm") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { if (!PortalUtils.exists(cashInBean)) { cashInBean = new AgentCustomCashInBean(); } performCashIn(); }; }; confirmButton.add(new AttributePrepender("onclick", Model.of("loading(submitConfirm)"), ";")); form.add(confirmButton); // Add Back button form.add( new Button("submitBack") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(new AgentPortalCustomCashInPage()); }; }); // Add Cancel button form.add( new Button("submitCancle") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { basePage.handleCancelButtonRedirectToHomePage(AgentPortalHomePage.class); }; }); add(form); }
@Override protected void onComponentTag(ComponentTag tag) { // WICKET-5594 prevent non-Ajax submit tag.put("type", "button"); super.onComponentTag(tag); }
@Override protected void onInitialize() { super.onInitialize(); InjectorHolder.getInjector().inject(this); modelName.setObject(_user.getName()); addFeedback(this, "feedback"); Form<String> form = new Form<String>("form") { @Override protected void onSubmit() { onSubmitForm(); } }; Button cancel = new Button("cancel") { public void onSubmit() { setResponsePage(UserOverviewPage.class); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); addTextInputField(form, "username", modelName, true); form.add(new PasswordTextField("password1", modelPassword1)); form.add(new PasswordTextField("password2", modelPassword2)); form.add(new Button("submit")); List<UserRoles> current = new ArrayList<UserRoles>(); current.add(UserRoles.NONE); modelRoles = new MyModel(current); List<? extends UserRoles> choices = UserRoles.asList(); ListMultipleChoice<UserRoles> roleSelect = new ListMultipleChoice<UserRoles>("roleSelect", modelRoles, choices); form.add(roleSelect); List<String> providers = facade.availableProviders(); selectedProvider = providers.get(0); ListChoice<String> providerSelect = new ListChoice<String>( "providerSelect", new PropertyModel<String>(this, "selectedProvider"), providers); form.add(providerSelect); add(form); }
@Override protected void onInitialize() { super.onInitialize(); add(new FeedbackPanel("feedback").setOutputMarkupId(true)); _form = new Form<String>("form") { @Override protected void onSubmit() { onSubmitForm(); } }; Button cancel = new Button("cancel") { public void onSubmit() { onCancel(); } }; cancel.setDefaultFormProcessing(false); _form.add(cancel); _form.add(new Button("submit")); initForm(_form); add(_form); }
private Button novoBotaoConsultar() { Button btnConsultar = new Button("btnConsultar") { @Override public void onSubmit() { if (edtDataDeReferencia.getValue().isEmpty()) { error("A data de referĂȘncia deve ser informada."); } else { try { transacoes = AutorizadorAdapter.get() .consultaTransacoes(UtilHelper.getData(edtDataDeReferencia.getValue())); } catch (Exception e) { error(e.getMessage()); } } } }; btnConsultar.setDefaultFormProcessing(false); return btnConsultar; }
public void initialiseDetailForm() { customFieldGroupTxtFld = new TextField<String>("customFieldGroup.name"); description = new TextArea<String>("customFieldGroup.description"); publishedStatusCb = new CheckBox("customFieldGroup.published"); publishedStatusCb.add( new AjaxFormComponentUpdatingBehavior("onChange") { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { // Check what was selected and then toggle if (publishedStatusCb.getModelObject().booleanValue()) { error("Custom Fields may not be added or removed once the Data Set is published."); target.add(feedBackPanel); } else { target.add(feedBackPanel); } } }); fileUploadField = new FileUploadField("customFieldFileUploadField"); fileUploadButton = new Button("uploadCustomFieldField") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setSelectedCustomFieldsFromFile(); } }; fileUploadButton.setDefaultFormProcessing(false); if (addCustomFieldDisplayList) { initCustomFieldDataListPanel(); } else { arkCrudContainerVO .getWmcForCustomFieldDisplayListPanel() .addOrReplace(new EmptyPanel("cfdListPanel")); } initCustomFieldPalette(); addDetailFormComponents(); attachValidators(); }
@SuppressWarnings("serial") public IncluirUsuarioPage(final PageParameters parameters) { super(parameters, "UsuĂĄrio", "Incluir usuĂĄrio"); @SuppressWarnings("rawtypes") Form form = new Form("form"); add(form); form.add(new FeedbackPanel("mensagem")); TextField<String> textFieldNome = new TextField<String>("nome", new PropertyModel<String>(this, "usuario.nome")); textFieldNome.setRequired(true); form.add(textFieldNome); TextField<String> textFieldLogin = new TextField<String>("login", new PropertyModel<String>(this, "usuario.login")); textFieldLogin.setRequired(true); form.add(textFieldLogin); form.add(new PasswordTextField("senha", new PropertyModel<String>(this, "usuario.senha"))); form.add( new PasswordTextField( "confirmarSenha", new PropertyModel<String>(this, "senhaConfirmada"))); List<Permissao> permissoes = (List<Permissao>) new PermissaoBO().getListaTodasPermissoes(); @SuppressWarnings("rawtypes") IChoiceRenderer renderer = new ChoiceRenderer("descricao", "codigo"); @SuppressWarnings({"rawtypes", "unchecked"}) final Palette palette = new Palette( "palette", new ListModel<Permissao>(new ArrayList<Permissao>()), new CollectionModel<Permissao>(permissoes), renderer, 10, true); form.add(palette); form.add( new Button("btnSalvar") { @Override public void onSubmit() { // Verifica se o login jĂĄ foi cadastrado UsuarioBO usuarioBO = new UsuarioBO(); if (isSenhaValida()) { usuario.setLogin(usuario.getLogin().toLowerCase()); if (!usuarioBO.isLoginCadastrado(usuario)) { @SuppressWarnings("unchecked") ListModel<Permissao> modelPermissao = (ListModel<Permissao>) palette.getDefaultModel(); usuario.setListaPermissao(modelPermissao.getObject()); usuarioBO.inserir(usuario); setResponsePage(new ListarUsuarioPage(usuario.getId())); } else { error("Login jĂĄ cadastrado."); } } else { error("A Senha confirmada Ă© diferente da Senha informada."); } } }); Button btnVoltar = new Button("btnVoltar") { @Override public void onSubmit() { setResponsePage(ListarUsuarioPage.class); } }; btnVoltar.setDefaultFormProcessing(false); form.add(btnVoltar); }
protected void setupPage(final RepositoryModel repositoryModel) { // ensure this user can create or edit this repository checkPermissions(repositoryModel); List<String> federationSets = new ArrayList<String>(); List<String> repositoryUsers = new ArrayList<String>(); if (isCreate) { super.setupPage(getString("gb.newRepository"), ""); } else { super.setupPage(getString("gb.edit"), repositoryModel.name); if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { repositoryUsers.addAll(GitBlit.self().getRepositoryUsers(repositoryModel)); Collections.sort(repositoryUsers); } federationSets.addAll(repositoryModel.federationSets); } final String oldName = repositoryModel.name; // users palette final Palette<String> usersPalette = new Palette<String>( "users", new ListModel<String>(repositoryUsers), new CollectionModel<String>(GitBlit.self().getAllUsernames()), new ChoiceRenderer<String>("", ""), 10, false); // federation sets palette List<String> sets = GitBlit.getStrings(Keys.federation.sets); final Palette<String> federationSetsPalette = new Palette<String>( "federationSets", new ListModel<String>(federationSets), new CollectionModel<String>(sets), new ChoiceRenderer<String>("", ""), 10, false); CompoundPropertyModel<RepositoryModel> model = new CompoundPropertyModel<RepositoryModel>(repositoryModel); Form<RepositoryModel> form = new Form<RepositoryModel>("editForm", model) { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { try { // confirm a repository name was entered if (StringUtils.isEmpty(repositoryModel.name)) { error("Please set repository name!"); return; } // automatically convert backslashes to forward slashes repositoryModel.name = repositoryModel.name.replace('\\', '/'); // Automatically replace // with / repositoryModel.name = repositoryModel.name.replace("//", "/"); // prohibit folder paths if (repositoryModel.name.startsWith("/")) { error("Leading root folder references (/) are prohibited."); return; } if (repositoryModel.name.startsWith("../")) { error("Relative folder references (../) are prohibited."); return; } if (repositoryModel.name.contains("/../")) { error("Relative folder references (../) are prohibited."); return; } // confirm valid characters in repository name Character c = StringUtils.findInvalidCharacter(repositoryModel.name); if (c != null) { error(MessageFormat.format("Illegal character ''{0}'' in repository name!", c)); return; } // confirm access restriction selection if (repositoryModel.accessRestriction == null) { error("Please select access restriction!"); return; } // save federation set preferences if (repositoryModel.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) { repositoryModel.federationSets.clear(); Iterator<String> sets = federationSetsPalette.getSelectedChoices(); while (sets.hasNext()) { repositoryModel.federationSets.add(sets.next()); } } // save the repository GitBlit.self().updateRepositoryModel(oldName, repositoryModel, isCreate); // save the repository access list if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { Iterator<String> users = usersPalette.getSelectedChoices(); List<String> repositoryUsers = new ArrayList<String>(); while (users.hasNext()) { repositoryUsers.add(users.next()); } // ensure the owner is added to the user list if (repositoryModel.owner != null && !repositoryUsers.contains(repositoryModel.owner)) { repositoryUsers.add(repositoryModel.owner); } GitBlit.self().setRepositoryUsers(repositoryModel, repositoryUsers); } } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(false); setResponsePage(RepositoriesPage.class); } }; // field names reflective match RepositoryModel fields form.add(new TextField<String>("name").setEnabled(isCreate || isAdmin)); form.add(new TextField<String>("description")); form.add( new DropDownChoice<String>("owner", GitBlit.self().getAllUsernames()) .setEnabled(GitBlitWebSession.get().canAdmin())); form.add( new DropDownChoice<AccessRestrictionType>( "accessRestriction", Arrays.asList(AccessRestrictionType.values()), new AccessRestrictionRenderer())); form.add(new CheckBox("isFrozen")); // TODO enable origin definition form.add(new TextField<String>("origin").setEnabled(false /* isCreate */)); // federation strategies - remove ORIGIN choice if this repository has // no origin. List<FederationStrategy> federationStrategies = new ArrayList<FederationStrategy>(Arrays.asList(FederationStrategy.values())); if (StringUtils.isEmpty(repositoryModel.origin)) { federationStrategies.remove(FederationStrategy.FEDERATE_ORIGIN); } form.add( new DropDownChoice<FederationStrategy>( "federationStrategy", federationStrategies, new FederationTypeRenderer())); form.add(new CheckBox("useTickets")); form.add(new CheckBox("useDocs")); form.add(new CheckBox("showRemoteBranches")); form.add(new CheckBox("showReadme")); form.add(usersPalette); form.add(federationSetsPalette); form.add(new Button("save")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(RepositoriesPage.class); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); add(form); }
private void createAttachmentsListDataView( WebMarkupContainer attachmentContainer, final Form form) { WebMarkupContainer msgAttachmentsContainer = new WebMarkupContainer("msgAttachmentsContainer"); dataProvider = new MessageAttachmentDataProvider(WICKET_ID_name, basePage); msgAttachmentList = new ArrayList<MessageAttachment>(); final DataView<MessageAttachment> dataView = new DataView<MessageAttachment>(WICKET_ID_pageable, dataProvider) { @Override protected void onBeforeRender() { try { if (!isCreateMode) dataProvider.loadMsgAttachmentsList(message.getId(), forceReload); forceReload = false; refreshTotalItemCount(); // reset rowIndex rowIndex = 1; } catch (DataProviderLoadException dple) { LOG.error("# An error occurred while loading friends and family list", dple); error(getLocalizer().getString("msgAttachments.load.error", this)); } refreshTotalItemCount(); super.onBeforeRender(); } @Override protected void populateItem(final Item<MessageAttachment> item) { final MessageAttachment entry = item.getModelObject(); msgAttachmentList.add(entry); // Select box AjaxCheckBox selectedCheckBox = new AjaxCheckBoxImpl(WICKET_ID_selected, new Model(isSelected(entry)), entry); selectedCheckBox.setOutputMarkupId(true); selectedCheckBox.setMarkupId(WICKET_ID_selected + rowIndex++); item.add(selectedCheckBox); item.add(new Label(WICKET_ID_name, entry.getName())); // set items in even/odd rows to different css style classes item.add( new AttributeModifier( Constants.CSS_KEYWARD_CLASS, true, new AbstractReadOnlyModel<String>() { @Override public String getObject() { return (item.getIndex() % 2 == 1) ? Constants.CSS_STYLE_ODD : Constants.CSS_STYLE_EVEN; } })); } private void refreshTotalItemCount() { totalItemString = new Integer(dataProvider.size()).toString(); int total = getItemCount(); if (total > 0) { startIndex = getCurrentPage() * getItemsPerPage() + 1; endIndex = startIndex + getItemsPerPage() - 1; if (endIndex > total) endIndex = total; } else { startIndex = 0; endIndex = 0; } } class AjaxCheckBoxImpl extends AjaxCheckBox { private final MessageAttachment entry; public AjaxCheckBoxImpl(String id, IModel<Boolean> model, MessageAttachment entry) { super(id, model); this.entry = entry; } @Override public boolean isEnabled() { return true; } @Override protected void onComponentTag(final ComponentTag tag) { super.onComponentTag(tag); if (getModelObject()) { tag.put("checked", "checked"); } } @Override protected void onUpdate(AjaxRequestTarget target) { boolean checkBoxSelected = getModelObject(); if (checkBoxSelected) { LOG.info("Added {} to deletion list", entry.getId()); selectedAttachments.add(entry); } else { LOG.info("Removed {} from deletion list", entry.getId()); selectedAttachments.remove(entry); } } } }; dataView.setItemsPerPage(10); msgAttachmentsContainer.add(dataView); msgAttachmentsContainer.add( new OrderByBorder(WICKET_ID_orderByName, WICKET_ID_name, dataProvider) { @Override protected void onSortChanged() { // For some reasons the dataView can be null when the page is // loading // and the sort is clicked (clicking the name header), so handle // it if (dataView != null) { dataView.setCurrentPage(0); } } }); Button removeButton = new Button("removeAttachment") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { handleRemove(); createAttachmentContainer(form); }; @Override public boolean isVisible() { if (dataView.getItemCount() > 0) { return super.isVisible(); } else { return false; } } }.setDefaultFormProcessing(false); removeButton.add( new SimpleAttributeModifier( "onclick", "return confirm('" + getLocalizer().getString("msgAttachments.remove.confirm", this) + "');")); msgAttachmentsContainer.add(removeButton); msgAttachmentsContainer.add( new MultiLineLabel( WICKET_ID_noItemsMsg, getLocalizer().getString("msgAttachments.noItemsMsg", this) + "\n" + getLocalizer().getString("msgAttachments.addMsgAttachmentsHelp", this)) { @Override public boolean isVisible() { if (dataView.getItemCount() > 0) { return false; } else { return super.isVisible(); } } }); // Navigator example: << < 1 2 > >> msgAttachmentsContainer.add(new CustomPagingNavigator(WICKET_ID_navigator, dataView)); msgAttachmentsContainer.add( new Label(WICKET_ID_totalItems, new PropertyModel<String>(this, "totalItemString"))); msgAttachmentsContainer.add( new Label(WICKET_ID_startIndex, new PropertyModel(this, "startIndex"))); msgAttachmentsContainer.add(new Label(WICKET_ID_endIndex, new PropertyModel(this, "endIndex"))); attachmentContainer.addOrReplace(msgAttachmentsContainer); }
@Override public void onInitialize() { super.onInitialize(); // unpack model final ImportWizardModel importWizardModel = this.model.getObject(); final CheckGroup<ProcessedGradeItem> group = new CheckGroup<ProcessedGradeItem>("group", new ArrayList<ProcessedGradeItem>()); final Form<?> form = new Form("form") { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { boolean validated = true; final List<ProcessedGradeItem> selectedGradeItems = (List<ProcessedGradeItem>) group.getModelObject(); log.debug("Processed items: " + selectedGradeItems.size()); // this has an odd model so we need to have the validation in the onSubmit. if (selectedGradeItems.size() == 0) { validated = false; error(getString("importExport.selection.noneselected")); } if (validated) { // clear any previous errors final ImportExportPage page = (ImportExportPage) getPage(); page.clearFeedback(); // Process the selected items into the create/update lists final List<ProcessedGradeItem> itemsToUpdate = filterListByStatus( selectedGradeItems, Arrays.asList( ProcessedGradeItemStatus.STATUS_UPDATE, ProcessedGradeItemStatus.STATUS_NA)); final List<ProcessedGradeItem> itemsToCreate = filterListByStatus( selectedGradeItems, Arrays.asList(ProcessedGradeItemStatus.STATUS_NEW)); log.debug("Filtered Update items: " + itemsToUpdate.size()); log.debug("Filtered Create items: " + itemsToCreate.size()); final List<ProcessedGradeItem> gbItemsToCreate = new ArrayList<ProcessedGradeItem>(); itemsToCreate.forEach( item -> { // Don't want comment items here if (!"N/A".equals(item.getItemPointValue())) { gbItemsToCreate.add(item); } }); log.debug("Actual items to create: " + gbItemsToCreate.size()); // repaint panel Component newPanel = null; importWizardModel.setSelectedGradeItems(selectedGradeItems); importWizardModel.setGbItemsToCreate(gbItemsToCreate); importWizardModel.setItemsToCreate(itemsToCreate); importWizardModel.setItemsToUpdate(itemsToUpdate); if (gbItemsToCreate.size() > 0) { importWizardModel.setStep(1); importWizardModel.setTotalSteps(gbItemsToCreate.size()); newPanel = new CreateGradeItemStep( GradeItemImportSelectionStep.this.panelId, Model.of(importWizardModel)); } else { newPanel = new GradeImportConfirmationStep( GradeItemImportSelectionStep.this.panelId, Model.of(importWizardModel)); } newPanel.setOutputMarkupId(true); GradeItemImportSelectionStep.this.replaceWith(newPanel); } } }; add(form); form.add(group); final Button backButton = new Button("backbutton") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { // clear any previous errors final ImportExportPage page = (ImportExportPage) getPage(); page.clearFeedback(); final Component newPanel = new GradeImportUploadStep(GradeItemImportSelectionStep.this.panelId); newPanel.setOutputMarkupId(true); GradeItemImportSelectionStep.this.replaceWith(newPanel); } }; backButton.setDefaultFormProcessing(false); group.add(backButton); group.add(new Button("nextbutton")); group.add(new CheckGroupSelector("groupselector")); final ListView<ProcessedGradeItem> gradeList = new ListView<ProcessedGradeItem>("grades", importWizardModel.getProcessedGradeItems()) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem<ProcessedGradeItem> item) { final Check<ProcessedGradeItem> checkbox = new Check<>("checkbox", item.getModel()); final Label itemTitle = new Label( "itemTitle", new PropertyModel<String>(item.getDefaultModel(), "itemTitle")); final Label itemPointValue = new Label( "itemPointValue", new PropertyModel<String>(item.getDefaultModel(), "itemPointValue")); final Label itemStatus = new Label("itemStatus"); item.add(checkbox); item.add(itemTitle); item.add(itemPointValue); item.add(itemStatus); // Use the status code to look up the text representation final PropertyModel<ProcessedGradeItemStatus> statusProp = new PropertyModel<ProcessedGradeItemStatus>(item.getDefaultModel(), "status"); final ProcessedGradeItemStatus status = statusProp.getObject(); // For external items, set a different label and disable the control if (status.getStatusCode() == ProcessedGradeItemStatus.STATUS_EXTERNAL) { itemStatus.setDefaultModel( new StringResourceModel( "importExport.status." + status.getStatusCode(), statusProp, null, status.getStatusValue())); item.setEnabled(false); item.add(new AttributeModifier("class", "external")); } else { itemStatus.setDefaultModel( new ResourceModel("importExport.status." + status.getStatusCode())); // if no changes, grey it out and remove checkbox if (status.getStatusCode() == ProcessedGradeItemStatus.STATUS_NA) { checkbox.setVisible(false); item.add(new AttributeAppender("class", Model.of("no_changes"), " ")); } } final String naString = getString("importExport.selection.pointValue.na", new Model(), "N/A"); if (naString.equals(item.getModelObject().getItemPointValue())) { item.add(new AttributeAppender("class", Model.of("comment"), " ")); } // add an additional row for the comments for each final PropertyModel<String> commentLabelProp = new PropertyModel<String>(item.getDefaultModel(), "commentLabel"); final PropertyModel<ProcessedGradeItemStatus> commentStatusProp = new PropertyModel<ProcessedGradeItemStatus>( item.getDefaultModel(), "commentStatus"); final String commentLabel = commentLabelProp.getObject(); final ProcessedGradeItemStatus commentStatus = commentStatusProp.getObject(); item.add( new Behavior() { private static final long serialVersionUID = 1L; @Override public void afterRender(final Component component) { super.afterRender(component); if (commentLabel != null) { String rowClass = "comment"; String statusValue = getString("importExport.status." + commentStatus.getStatusCode()); if (commentStatus.getStatusCode() == ProcessedGradeItemStatus.STATUS_EXTERNAL) { rowClass += " external"; statusValue = new StringResourceModel( "importExport.status." + commentStatus.getStatusCode(), commentStatusProp, null, commentStatus.getStatusValue()) .getString(); } if (commentStatus.getStatusCode() == ProcessedGradeItemStatus.STATUS_NA) { rowClass += " no_changes"; } component .getResponse() .write( "<tr class=\"" + rowClass + "\">" + "<td></td>" + "<td class=\"item_title\">" + commentLabel + "</td>" + "<td class=\"item_points\">" + naString + "</td>" + "<td class=\"item_status\">" + statusValue + "</td>" + "</tr>"); } } }); } }; gradeList.setReuseItems(true); group.add(gradeList); }
public TemplateForm(String id, final String section, boolean custom, UserData u) { super(id); this.user = u; this.section = section; final com.rectang.xsm.site.Site site = user.getSite(); Button create = new Button("create") { public void onSubmit() { InputStream in = null; OutputStream out = null; try { in = getDefault(section, user.getSite()); out = new FileOutputStream(getCustomFile(section)); IOUtil.copyStream(in, out); if (section.equals("layout")) { site.setLayout("custom"); site.save(); } else if (section.equals("style")) { site.setStylesheet("custom"); site.save(); } // Here we need to redirect back to this page to refresh the models - not sure // why... setResponsePage(EditTemplate.class, getPageParameters()); } catch (IOException e) { error("Unable to create custom copy of template " + section); } finally { if (in != null) { IOUtil.close(in); } if (out != null) { IOUtil.close(out); } } } }; create.setDefaultFormProcessing(false); add(create); Button save = new Button("save"); add(save); Button revert = new Button("revert"); add(revert); Button delete = new Button("delete") { public void onSubmit() { if (getCustomFile(section).delete()) { if (section.equals("layout")) { site.setLayout("menu-left"); site.save(); } else if (section.equals("style")) { site.setStylesheet("grey"); site.getPublishedDoc("style.css").delete(); site.save(); } if (section.equals("template")) { site.publish(user); } else { site.publishTheme(); } // Here we need to redirect back to this page to refresh the models - not sure // why... setResponsePage(EditTemplate.class, getPageParameters()); } else { error("Unable to delete custom template " + section); } } }; delete.setDefaultFormProcessing(false); add(delete); if (custom) { add(new TextArea("customise", new StringFileModel(getCustomFile(section)))); create.setVisible(false); } else { StringBuffer content = new StringBuffer(); BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(getDefault(section, site))); String line = reader.readLine(); while (line != null) { content.append(line); content.append('\n'); line = reader.readLine(); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { IOUtil.close(reader); } } TextArea area = new TextArea("customise", new Model(content.toString())); area.setEnabled(false); add(area); save.setVisible(false); revert.setVisible(false); delete.setVisible(false); } BookmarkablePageLink back; back = new BookmarkablePageLink("back", Theme.class); back.add(new Label("back-label", "Back to Theme page")); add(back); }
@Override protected void onInitialize() { super.onInitialize(); add(newAjaxFormSubmitBehavior("click")); }
@Override public void onInitialize() { super.onInitialize(); // unpack model final ImportWizardModel importWizardModel = this.model.getObject(); final List<ProcessedGradeItem> itemsToCreate = importWizardModel.getItemsToCreate(); final List<ProcessedGradeItem> itemsToUpdate = importWizardModel.getItemsToUpdate(); final List<Assignment> assignmentsToCreate = importWizardModel.getAssignmentsToCreate(); final Form<?> form = new Form("form") { private static final long serialVersionUID = 1L; boolean errors = false; @Override protected void onSubmit() { final Map<String, Long> assignmentMap = new HashMap<>(); // Create new GB items assignmentsToCreate.forEach( assignment -> { final Long assignmentId = GradeImportConfirmationStep.this.businessService.addAssignment(assignment); assignmentMap.put(StringUtils.trim(assignment.getName()), assignmentId); }); final List<ProcessedGradeItem> itemsToSave = new ArrayList<ProcessedGradeItem>(); itemsToSave.addAll(itemsToUpdate); itemsToSave.addAll(itemsToCreate); itemsToSave.forEach( processedGradeItem -> { log.debug("Looping through items to save"); List<ProcessedGradeItemDetail> processedGradeItemDetails = processedGradeItem.getProcessedGradeItemDetails(); processedGradeItemDetails.forEach( processedGradeItemDetail -> { log.debug("Looping through detail items to save"); // get data Long assignmentId = processedGradeItem.getItemId(); String assignmentTitle = StringUtils.trim( processedGradeItem .getItemTitle()); // trim to match the gbservice behaviour if (assignmentId == null) { // Should be a newly created GB item assignmentId = assignmentMap.get(assignmentTitle); } final GradeSaveResponse saved = GradeImportConfirmationStep.this.businessService.saveGrade( assignmentId, processedGradeItemDetail.getStudentUuid(), processedGradeItemDetail.getGrade(), processedGradeItemDetail.getComment()); // if no change, try just the comment if (saved == GradeSaveResponse.NO_CHANGE) { // Check for changed comments final String currentComment = StringUtils.trimToNull( GradeImportConfirmationStep.this.businessService .getAssignmentGradeComment( assignmentId, processedGradeItemDetail.getStudentUuid())); final String newComment = StringUtils.trimToNull(processedGradeItemDetail.getComment()); if (!StringUtils.equals(currentComment, newComment)) { final boolean success = GradeImportConfirmationStep.this.businessService .updateAssignmentGradeComment( assignmentId, processedGradeItemDetail.getStudentUuid(), newComment); log.info( "Saving comment: " + success + ", " + assignmentId + ", " + processedGradeItemDetail.getStudentEid() + ", " + processedGradeItemDetail.getComment()); if (!success) { errors = true; } } } else if (saved != GradeSaveResponse.OK) { // Anything other than OK is bad errors = true; } log.info( "Saving grade: " + saved + ", " + assignmentId + ", " + processedGradeItemDetail.getStudentEid() + ", " + processedGradeItemDetail.getGrade() + ", " + processedGradeItemDetail.getComment()); }); }); if (!errors) { getSession().success(getString("importExport.confirmation.success")); setResponsePage(new GradebookPage()); } else { getSession().error(getString("importExport.confirmation.failure")); } } }; add(form); // back button final Button backButton = new Button("backbutton") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { log.debug("Clicking back button..."); Component newPanel = null; if (assignmentsToCreate.size() > 0) { newPanel = new CreateGradeItemStep( GradeImportConfirmationStep.this.panelId, Model.of(importWizardModel)); } else { newPanel = new GradeItemImportSelectionStep( GradeImportConfirmationStep.this.panelId, Model.of(importWizardModel)); } newPanel.setOutputMarkupId(true); GradeImportConfirmationStep.this.replaceWith(newPanel); } }; backButton.setDefaultFormProcessing(false); form.add(backButton); // finish button form.add(new Button("finishbutton")); // items to be updated final boolean hasItemsToUpdate = !itemsToUpdate.isEmpty(); final WebMarkupContainer gradesUpdateContainer = new WebMarkupContainer("grades_update_container") { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return hasItemsToUpdate; } }; add(gradesUpdateContainer); if (hasItemsToUpdate) { final ListView<ProcessedGradeItem> updateList = makeListView("grades_update", itemsToUpdate); updateList.setReuseItems(true); gradesUpdateContainer.add(updateList); } // items to be created final boolean hasItemsToCreate = !itemsToCreate.isEmpty(); final WebMarkupContainer gradesCreateContainer = new WebMarkupContainer("grades_create_container") { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return hasItemsToCreate; } }; add(gradesCreateContainer); if (hasItemsToCreate) { final ListView<ProcessedGradeItem> createList = makeListView("grades_create", itemsToCreate); createList.setReuseItems(true); gradesCreateContainer.add(createList); } }
protected void constructPanel() { final String chooseDtTxt = this.getLocalizer().getString("datepicker.chooseDate", mobBasePage); add( new HeaderContributor( new IHeaderContributor() { private static final long serialVersionUID = 1L; @Override public void renderHead(IHeaderResponse response) { // localize the jquery datepicker based on users locale setting // locale specific js includes for datepicker are available at // http://jquery-ui.googlecode.com/svn/trunk/ui/i18n/ String localeLang = getLocale().getLanguage().toLowerCase(); LOG.debug("Using DatePicker for locale language: {}", localeLang); if (PortalUtils.exists(localeLang)) { response.renderJavascriptReference( "scripts/jquery/i18n/jquery.ui.datepicker-" + localeLang + ".js"); } response.renderJavascript( "\n" + "jQuery(document).ready(function($) { \n" + " $('#birthDate').datepicker( { \n" + " 'buttonText' : '" + chooseDtTxt + "', \n" + " 'changeMonth' : true, \n" + " 'changeYear' : true, \n" + " 'yearRange' : '-100:+0', \n" + " 'showOn': 'both', \n" + " 'dateFormat' : '" + Constants.DATE_FORMAT_PATTERN_PICKER + "', \n" + " 'buttonImage': 'images/calendar.gif', \n" + " 'buttonOnlyImage': true} ); \n" + "});\n", "datePicker"); } })); final Form<?> form = new Form("standingDataForm", new CompoundPropertyModel<StandingDataPanel>(this)); if (!PortalUtils.exists(getCustomer().getTaskId())) mobBasePage.getMobiliserWebSession().setShowContact(true); form.add(new FeedbackPanel("errorMessages")); form.add( new RequiredTextField<String>("customer.address.firstName") .setRequired(true) .add(new PatternValidator(Constants.REGEX_FIRSTNAME)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier)) .add(new ErrorIndicator()); form.add( new DateTextField( "birthDateField", new PropertyModel<Date>(this, "customer.birthDateString"), new PatternDateConverter(Constants.DATE_FORMAT_PATTERN_PARSE, false)) .setRequired(true) .add(new ErrorIndicator())); form.add( new LocalizableLookupDropDownChoice<Integer>( "customer.customerTypeId", Integer.class, Constants.RESOURCE_BUNDLE_CUSTOMER_TYPE, this, Boolean.FALSE, true) .setNullValid(false) .setRequired(true)); form.add( new RequiredTextField<String>("customer.address.lastName") .setRequired(true) .add(new PatternValidator(Constants.REGEX_FIRSTNAME)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier)) .add(new ErrorIndicator()); form.add( new LocalizableLookupDropDownChoice<String>( "customer.language", String.class, Constants.RESOURCE_BUNDLE_LANGUAGES, this, false, true) .add(new ErrorIndicator())); form.add( new LocalizableLookupDropDownChoice<String>( "customer.timeZone", String.class, Constants.RESOURCE_BUNDLE_TIMEZONES, this, false, true) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.street1") .add(new PatternValidator(Constants.REGEX_STREET1)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.houseNo") .add(StringValidator.lengthBetween(1, 20)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.state") .add(new PatternValidator(Constants.REGEX_STATE)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new LocalizableLookupDropDownChoice<String>( "customer.address.kvCountry", String.class, "countries", this, false, true) .setNullValid(false) .setRequired(true) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.street2") .add(new PatternValidator(Constants.REGEX_STREET1)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.city") .setRequired(false) .add(new PatternValidator(Constants.REGEX_CITY)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.zip") .add(new PatternValidator(Constants.REGEX_ZIP)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); TextField<String> msisdn = new TextField<String>("customer.msisdn"); if (!mobBasePage.getConfiguration().isMsisdnOtpConfirmed()) { msisdn.add(new SimpleAttributeModifier("readonly", "readonly")); msisdn.add(new SimpleAttributeModifier("style", "background-color: #E6E6E6;")); } form.add( msisdn .add(new PatternValidator(Constants.REGEX_PHONE_NUMBER)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.address.email") .setRequired(true) .add(EmailAddressValidator.getInstance()) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new LocalizableLookupDropDownChoice<Integer>( "customer.kvInfoMode", Integer.class, "sendModes", this, Boolean.FALSE, true) .setNullValid(false) .setRequired(true)); WebMarkupContainer networkProviderDiv = new WebMarkupContainer("networkProviderDiv"); networkProviderDiv.add( new LocalizableLookupDropDownChoice<String>( "customer.networkProvider", String.class, "networkproviders", this, false, true) .setNullValid(false) .setRequired(true) .add(new ErrorIndicator())); // network provider selection to be made only for mbanking customer // types if (customer.getCustomerTypeId() != null && customer.getCustomerTypeId().intValue() == Constants.MBANKING_CUSTOMER_TYPE) { networkProviderDiv.setVisible(true); } else { networkProviderDiv.setVisible(false); } form.add(networkProviderDiv); form.add( new KeyValueDropDownChoice<Long, String>( "customer.feeSetId", mobBasePage.getFeeSets(getCustomer().getFeeSetId())) { private static final long serialVersionUID = 1L; @Override protected CharSequence getDefaultChoice(Object selected) { return null; }; }.setNullValid(false)); form.add( new KeyValueDropDownChoice<Long, String>( "customer.limitId", getLimitSets(getCustomer().getLimitId())) { private static final long serialVersionUID = 1L; }.setNullValid(true)); Button feeSetConfButton = new Button("feeSetConf") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(new IndividualFeeSetConfig(getCustomer())); }; }.setDefaultFormProcessing(false); feeSetConfButton.add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_WRITE)); form.add(feeSetConfButton); Button limitSetConfButton = new Button("limitSetConf") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(new IndividualLimitSetConfig(getCustomer())); }; }.setDefaultFormProcessing(false); limitSetConfButton.add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_WRITE)); form.add(limitSetConfButton); form.add( new LocalizableLookupDropDownChoice<String>( "customer.securityQuestion", String.class, Constants.RESOURCE_BUNDLE_SEC_QUESTIONS, this, false, true) .setNullValid(false) .setRequired(true) .add(new ErrorIndicator())); form.add( new TextField<String>("customer.userName") .add(new PatternValidator(Constants.REGEX_USERNAME)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); form.add( new RequiredTextField<String>("customer.SecQuesAns") .add(new PatternValidator(Constants.REGEX_SECURITY_ANSWER)) .add(Constants.mediumStringValidator) .add(Constants.mediumSimpleAttributeModifier) .add(new ErrorIndicator())); PrivilegedBehavior cancelReasonBehavior = new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_CANCEL); cancelReasonBehavior.setMissingPrivilegeHidesComponent(false); KeyValueDropDownChoice<Integer, String> custStatus = new KeyValueDropDownChoice<Integer, String>( "customer.active", mobBasePage.getCustomerStatus()); custStatus.add( new SimpleAttributeModifier( "onchange", "confirmDeactivation('" + getLocalizer().getString("customer.deactivate.warning", mobBasePage) + "')")); form.add(custStatus.setNullValid(false).setRequired(true).add(cancelReasonBehavior)); WebMarkupContainer blackListReasonDiv = new WebMarkupContainer("blackListReasonDiv"); PrivilegedBehavior blackListBehavior = new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_BLACKLIST); blackListBehavior.setMissingPrivilegeHidesComponent(false); blackListReasonDiv.add( new LocalizableLookupDropDownChoice<Integer>( "customer.blackListReason", Integer.class, "blackListReasons", this, Boolean.FALSE, true) .setNullValid(false) .setRequired(true) .add(blackListBehavior)); form.add(blackListReasonDiv); WebMarkupContainer cancelDivContainer = new WebMarkupContainer("cancelDivContainer"); LocalizableLookupDropDownChoice<Integer> cancelationreason = new LocalizableLookupDropDownChoice<Integer>( "customer.cancelationReason", Integer.class, "cancellationReasons", this, false, true); cancelationreason.add( new SimpleAttributeModifier( "onchange", "confirmCancellation('" + getLocalizer().getString("customer.cancel.warning", mobBasePage) + "')")); cancelDivContainer.add( cancelationreason.setNullValid(false).setRequired(true).add(cancelReasonBehavior)); // cancelDivContainer // .setVisible(getCustomer().getCustomerTypeId() == // Constants.CONSUMER_IDTYPE // || getCustomer().getCustomerTypeId() == // Constants.CUSTOMER_ROLE_MONEY_MERCHANT); form.add(cancelDivContainer); Button changenMsisdnButton = new Button("changeMsisdn") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { Customer customer = mobBasePage.getCustomerByIdentification( Constants.IDENT_TYPE_CUST_ID, String.valueOf(getCustomer().getId())); if (customer.getCancellationReasonId() != 0 || !customer.isActive()) { error( getLocalizer() .getString("customer.msisdn.change.error.customerinactive", mobBasePage)); return; } mobBasePage.getMobiliserWebSession().setCustomerOtp(null); mobBasePage.getMobiliserWebSession().setCustomerOtpCount(0); mobBasePage.getMobiliserWebSession().setCustomerOtpLimitHit(false); setResponsePage(new ChangeMsisdnPage(getCustomer())); }; }.setDefaultFormProcessing(false); changenMsisdnButton.setVisible(!mobBasePage.getConfiguration().isMsisdnOtpConfirmed()); changenMsisdnButton.add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_WRITE)); form.add(changenMsisdnButton); changenMsisdnButton.setVisible(!mobBasePage.getConfiguration().isMsisdnOtpConfirmed()); form.add( new Button("resetPin") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { Customer customer = mobBasePage.getCustomerByIdentification( Constants.IDENT_TYPE_MSISDN, getCustomer().getMsisdn()); if (!PortalUtils.exists(customer)) { error(getLocalizer().getString("customer.reset.password.noMsisdn", mobBasePage)); return; } setResponsePage(new ResetCredentialPage(getCustomer(), this.getWebPage(), "pin")); }; }.setDefaultFormProcessing(false) .add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_PINCALL))); form.add( new Button("resetPassword") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { Address address = mobBasePage.getAddressByCustomer(getCustomer().getId()); if (address == null || !PortalUtils.exists(address.getEmail())) { error(getLocalizer().getString("customer.reset.password.noEmail", mobBasePage)); return; } setResponsePage(new ResetCredentialPage(getCustomer(), this.getWebPage(), "password")); }; }.setDefaultFormProcessing(false) .add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_PASSWORD))); form.add( new Button("update") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { if (updateCustomer()) { LOG.info( "Data updated successfully for customer[" + mobBasePage.getMobiliserWebSession().getCustomer().getId() + "]"); getSession().info(getLocalizer().getString("data.update.successful", mobBasePage)); setResponsePage(new StandingDataPage(getCustomer())); } }; }.add(new PrivilegedBehavior(mobBasePage, Constants.PRIV_CUST_WRITE)) .setVisible(!PortalUtils.exists(getCustomer().getTaskId()))); form.add( new Button("approve") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { approveCustomer(true); }; }.setDefaultFormProcessing(false) .setVisible(PortalUtils.exists(getCustomer().getTaskId()))); form.add( new Button("reject") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { approveCustomer(false); }; }.setDefaultFormProcessing(false) .setVisible(PortalUtils.exists(getCustomer().getTaskId()))); if (PortalUtils.exists(getCustomer().getTaskId())) { Iterator iter = form.iterator(); Component component; for (int i = 0; iter.hasNext(); i++) { component = (Component) iter.next(); if (component.getId().equals("approve") || component.getId().equals("reject") || component instanceof FeedbackPanel) { continue; } else if (component instanceof Button) { component.setVisible(false); } else { if (component.getId().equals("blackListReasonDiv") || component.getId().equals("cancelDivContainer")) { Iterator iter1 = ((WebMarkupContainer) component).iterator(); Component comp; for (int j = 0; iter1.hasNext(); j++) { comp = (Component) iter1.next(); comp.setEnabled(false); comp.add(new SimpleAttributeModifier("readonly", "readonly")); comp.add(new SimpleAttributeModifier("style", "background-color: #E6E6E6;")); } } else { component.setEnabled(false); component.add(new SimpleAttributeModifier("readonly", "readonly")); component.add(new SimpleAttributeModifier("style", "background-color: #E6E6E6;")); } } } } add(form); LOG.debug( "PatternDateConverter format: " + Constants.DATE_FORMAT_PATTERN_PARSE + " DatePicker format: " + Constants.DATE_FORMAT_PATTERN_PICKER); }
protected void setupPage(final UserModel userModel) { if (isCreate) { super.setupPage(getString("gb.newUser"), ""); } else { super.setupPage(getString("gb.edit"), userModel.username); } final Model<String> confirmPassword = new Model<String>(StringUtils.isEmpty(userModel.password) ? "" : userModel.password); CompoundPropertyModel<UserModel> model = new CompoundPropertyModel<UserModel>(userModel); // build list of projects including all repositories wildcards List<String> repos = getAccessRestrictedRepositoryList(true, userModel); List<String> userTeams = new ArrayList<String>(); for (TeamModel team : userModel.getTeams()) { userTeams.add(team.name); } Collections.sort(userTeams); final String oldName = userModel.username; final List<RegistrantAccessPermission> permissions = app().repositories().getUserAccessPermissions(userModel); final Palette<String> teams = new Palette<String>( "teams", new ListModel<String>(new ArrayList<String>(userTeams)), new CollectionModel<String>(app().users().getAllTeamNames()), new StringChoiceRenderer(), 10, false); Form<UserModel> form = new Form<UserModel>("editForm", model) { private static final long serialVersionUID = 1L; /* * (non-Javadoc) * * @see org.apache.wicket.markup.html.form.Form#onSubmit() */ @Override protected void onSubmit() { if (StringUtils.isEmpty(userModel.username)) { error(getString("gb.pleaseSetUsername")); return; } // force username to lower-case userModel.username = userModel.username.toLowerCase(); String username = userModel.username; if (isCreate) { UserModel model = app().users().getUserModel(username); if (model != null) { error(MessageFormat.format(getString("gb.usernameUnavailable"), username)); return; } } boolean rename = !StringUtils.isEmpty(oldName) && !oldName.equalsIgnoreCase(username); if (app().authentication().supportsCredentialChanges(userModel)) { if (!userModel.password.equals(confirmPassword.getObject())) { error(getString("gb.passwordsDoNotMatch")); return; } String password = userModel.password; if (!password.toUpperCase().startsWith(StringUtils.MD5_TYPE) && !password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) { // This is a plain text password. // Check length. int minLength = app().settings().getInteger(Keys.realm.minPasswordLength, 5); if (minLength < 4) { minLength = 4; } if (password.trim().length() < minLength) { error(MessageFormat.format(getString("gb.passwordTooShort"), minLength)); return; } // change the cookie userModel.cookie = StringUtils.getSHA1(userModel.username + password); // Optionally store the password MD5 digest. String type = app().settings().getString(Keys.realm.passwordStorage, "md5"); if (type.equalsIgnoreCase("md5")) { // store MD5 digest of password userModel.password = StringUtils.MD5_TYPE + StringUtils.getMD5(userModel.password); } else if (type.equalsIgnoreCase("combined-md5")) { // store MD5 digest of username+password userModel.password = StringUtils.COMBINED_MD5_TYPE + StringUtils.getMD5(username + userModel.password); } } else if (rename && password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) { error(getString("gb.combinedMd5Rename")); return; } } // update user permissions for (RegistrantAccessPermission repositoryPermission : permissions) { if (repositoryPermission.mutable) { userModel.setRepositoryPermission( repositoryPermission.registrant, repositoryPermission.permission); } } Iterator<String> selectedTeams = teams.getSelectedChoices(); userModel.removeAllTeams(); while (selectedTeams.hasNext()) { TeamModel team = app().users().getTeamModel(selectedTeams.next()); if (team == null) { continue; } userModel.addTeam(team); } try { if (isCreate) { app().gitblit().addUser(userModel); } else { app().gitblit().reviseUser(oldName, userModel); } } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(false); if (isCreate) { // create another user info(MessageFormat.format(getString("gb.userCreated"), userModel.username)); setResponsePage(EditUserPage.class); } else { // back to users page setResponsePage(UsersPage.class); } } }; // do not let the browser pre-populate these fields form.add(new SimpleAttributeModifier("autocomplete", "off")); // not all user providers support manipulating username and password boolean editCredentials = app().authentication().supportsCredentialChanges(userModel); // not all user providers support manipulating display name boolean editDisplayName = app().authentication().supportsDisplayNameChanges(userModel); // not all user providers support manipulating email address boolean editEmailAddress = app().authentication().supportsEmailAddressChanges(userModel); // not all user providers support manipulating team memberships boolean editTeams = app().authentication().supportsTeamMembershipChanges(userModel); // not all user providers support manipulating the admin role boolean changeAdminRole = app().authentication().supportsRoleChanges(userModel, Role.ADMIN); // not all user providers support manipulating the create role boolean changeCreateRole = app().authentication().supportsRoleChanges(userModel, Role.CREATE); // not all user providers support manipulating the fork role boolean changeForkRole = app().authentication().supportsRoleChanges(userModel, Role.FORK); // field names reflective match UserModel fields form.add(new TextField<String>("username").setEnabled(editCredentials)); NonTrimmedPasswordTextField passwordField = new NonTrimmedPasswordTextField("password"); passwordField.setResetPassword(false); form.add(passwordField.setEnabled(editCredentials)); NonTrimmedPasswordTextField confirmPasswordField = new NonTrimmedPasswordTextField("confirmPassword", confirmPassword); confirmPasswordField.setResetPassword(false); form.add(confirmPasswordField.setEnabled(editCredentials)); form.add(new TextField<String>("displayName").setEnabled(editDisplayName)); form.add(new TextField<String>("emailAddress").setEnabled(editEmailAddress)); if (userModel.canAdmin() && !userModel.canAdmin) { // user inherits Admin permission // display a disabled-yet-checked checkbox form.add(new CheckBox("canAdmin", Model.of(true)).setEnabled(false)); } else { form.add(new CheckBox("canAdmin").setEnabled(changeAdminRole)); } if (userModel.canFork() && !userModel.canFork) { // user inherits Fork permission // display a disabled-yet-checked checkbox form.add(new CheckBox("canFork", Model.of(true)).setEnabled(false)); } else { final boolean forkingAllowed = app().settings().getBoolean(Keys.web.allowForking, true); form.add(new CheckBox("canFork").setEnabled(forkingAllowed && changeForkRole)); } if (userModel.canCreate() && !userModel.canCreate) { // user inherits Create permission // display a disabled-yet-checked checkbox form.add(new CheckBox("canCreate", Model.of(true)).setEnabled(false)); } else { form.add(new CheckBox("canCreate").setEnabled(changeCreateRole)); } form.add(new CheckBox("excludeFromFederation")); form.add(new CheckBox("disabled")); form.add( new RegistrantPermissionsPanel( "repositories", RegistrantType.REPOSITORY, repos, permissions, getAccessPermissions())); form.add(teams.setEnabled(editTeams)); form.add(new TextField<String>("organizationalUnit").setEnabled(editDisplayName)); form.add(new TextField<String>("organization").setEnabled(editDisplayName)); form.add(new TextField<String>("locality").setEnabled(editDisplayName)); form.add(new TextField<String>("stateProvince").setEnabled(editDisplayName)); form.add(new TextField<String>("countryCode").setEnabled(editDisplayName)); form.add(new Button("save")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(UsersPage.class); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); add(form); }
@SuppressWarnings({"rawtypes", "unchecked"}) public DigitalRecSheetPage( Recommendation recommendation, final MobileSalesWorkspacePage mswPage) { final DailyRhythmPortalSession drpSession = getDailyRhythmPortalSession(); if (recommendation == null) { recommendation = new Recommendation(); // check for null! } model = new DigitalRecSheetModel(recommendation); final boolean transferToBeast = recommendation.isTransferFlag(); form.add( new Image( "transfer-to-beast", new ContextRelativeResource("/css/img/transfer-to-beast.png")) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return transferToBeast; } }); formChanged = false; FeedbackPanel feedbackPanel = new FeedbackPanel("feedback"); feedbackPanel.setOutputMarkupPlaceholderTag(true); add(feedbackPanel); DrpUser user = drpSession.getDrpUser(); model.setUser(user); // Tools Menu components: final ModalWindow coverageCheckModal = new ModalWindow("coverageCheckModal"); // tools menu links: form.add(new BookmarkablePageLink("toolsLink1", CustomerDashboardPage.class)); AjaxLink alink = new AjaxLink("toolsLink2") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { coverageCheckModal.setContent( new CoverageCheckPanel(coverageCheckModal.getContentId(), coverageCheckModal)); coverageCheckModal.show(target); } }; add(coverageCheckModal); form.add(alink); // no-contract coverage maps link. AjaxLink ppcmLink = new AjaxLink("toolsLink3") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { coverageCheckModal.setContent( new NoContractCoveragePanel(coverageCheckModal.getContentId(), coverageCheckModal)); coverageCheckModal.show(target); } }; form.add(ppcmLink); Map<LengthProperty, Integer> fieldLengths = this.getLengthProperties(); final ModalWindow printOrEmailModal = new ModalWindow("printOrEmailModal"); printOrEmailModal.setHeightUnit("px"); printOrEmailModal.setInitialHeight(Util.getInt(getString("printOrEmailPopup.height"), 220)); printOrEmailModal.setWidthUnit("px"); printOrEmailModal.setInitialWidth(Util.getInt(getString("printOrEmailPopup.width"), 440)); printOrEmailModal.setResizable(false); printOrEmailModal.setWindowClosedCallback( new WindowClosedCallback() { private static final long serialVersionUID = 1L; @Override public void onClose(AjaxRequestTarget target) { target.add(form); } }); /** * Launches dialog to perform either a print or email of the current recommendation worksheet */ final AjaxButton printOrEmail = new AjaxButton("printOrEmailBtn") { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { logger.debug("in print or email handler"); saveRecSheet(); printOrEmailModal.show(target); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // TODO Implement me! } }; form.add(printOrEmail); printOrEmail.setOutputMarkupPlaceholderTag(true); // print or email modal dialog add(printOrEmailModal); printOrEmailModal.setPageCreator( new ModalWindow.PageCreator() { private static final long serialVersionUID = 1L; public Page createPage() { return new PrintOrEmailDialog(model.getObject()); } }); printOrEmailModal.setCloseButtonCallback( new ModalWindow.CloseButtonCallback() { public boolean onCloseButtonClicked(AjaxRequestTarget target) { target.prependJavaScript("doLoad();"); return true; } }); /** Saves the rec sheet */ final Button saveButton = new Button("saveBtn") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { logger.debug("saving recsheet by button request"); saveRecSheet(); } }; // save rec sheet button form.add(saveButton); saveButton.setOutputMarkupPlaceholderTag(true); // === Clear screen prompt and components === final ModalWindow clearModal = new ModalWindow("clearModal"); final AjaxButton clearButton = new AjaxButton("clearButton") { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { String message = "Clear customer data?\n\nThis will apply to both the Dashboard and the Recommendation Sheet."; final YesNoPanel clearPanel = new YesNoPanel(clearModal.getContentId(), message, clearModal); // changing button text. clearPanel.setYesButtonText("Clear"); clearPanel.setNoButtonText("Back"); clearModal.setContent(clearPanel); clearModal.setWindowClosedCallback( new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = 1L; @Override public void onClose(AjaxRequestTarget target) { if (clearPanel.getDialogResult()) { logger.debug("clearing customer from recsheet."); DailyRhythmPortalSession session = getDailyRhythmPortalSession(); session.clearBestBuyCustomer(); session.clearSearchCustomer(); session.clearCarrierCustomer(); Recommendation rec = new Recommendation(); rec.setCreatedOn(new Date()); rec.setCreatedBy(session.getDrpUser().getUserId()); rec.setTransferFlag(false); DigitalRecSheetPage drsPage = new DigitalRecSheetPage(rec, mswPage); setResponsePage(drsPage); } } }); clearModal.show(target); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // TODO Implement me! } }; clearButton.setDefaultFormProcessing(false); form.add(clearButton); add(clearModal); // === END of Clear Components === /* * Search Rec Sheet button Navigates back to rec sheet search page */ // close button exit point with popup. final ModalWindow exitWithoutSavingModal = new ModalWindow("exitWithoutSavingModal"); String message = "Are you sure you want to exit without saving your changes?"; final YesNoPanel exitPanel = new YesNoPanel(exitWithoutSavingModal.getContentId(), message, exitWithoutSavingModal); exitWithoutSavingModal.setContent(exitPanel); exitWithoutSavingModal.setWindowClosedCallback( new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = 1L; @Override public void onClose(AjaxRequestTarget target) { if (exitPanel.getDialogResult()) { setResponsePage(mswPage); } } }); add(exitWithoutSavingModal); /* * ===== Search Rec Sheet Button ===== Search Rec Sheet button Navigates * back to rec sheet search page */ final AjaxButton searchButton = new AjaxButton("searchBtn") { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { logger.debug("closing recSheet by return to search button request."); PageParameters parameters = mswPage.getPageParameters(); setResponsePage(new MobileSalesWorkspacePage(parameters)); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // TODO Implement me! } }; // this is a pure navigation button so we do not want form validation to // occur searchButton.setDefaultFormProcessing(false); closeForm.add(searchButton); /* * ===== Close Rec Sheet Button ===== Close Rec Sheet button Navigates * back to rec sheet search page */ final AjaxButton closeButton = new AjaxButton("closeBtn") { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { logger.debug("closing recSheet by close button request."); if (drpSession.getCustomer() == null) { setResponsePage(CustomerDashboardSearchPage.class); } else { setResponsePage(CustomerDashboardPage.class); } } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // TODO Implement me! } }; closeButton.setDefaultFormProcessing(false); closeForm.add(closeButton); form.add(closeForm); closeButton.setOutputMarkupPlaceholderTag(true); // if recommendation comes in blank, the model creates a new one... // Therefore we shouldn't mess with it until we retrieve it from the // model. Recommendation r = model.getRecommendation(); String phoneNum = user.getLocationPhoneNum() == null ? "" : user.getLocationPhoneNum(); if (r.getId() == 0) { // new rec sheet r.setSpecialistContactInfo(user.getFirstName() + " " + phoneNum); r.setEmpCrtFrstNm(user.getFirstName()); r.setEmpCrtLastNm(user.getLastName()); } else { r.setEmpAltFrstNm(user.getFirstName()); r.setEmpAltLastNm(user.getLastName()); } Essentials e = r.getEssentials(); // first name TextField fldFirstname = new RequiredTextField("firstName", new PropertyModel<String>(r, "firstName")); fldFirstname.add( new StringValidator.LengthBetweenValidator( fieldLengths.get(LengthProperty.FLD_FIRSTNAME_MINLENGTH), fieldLengths.get(LengthProperty.FLD_FIRSTNAME_LENGTH))); form.add(fldFirstname); // last name RequiredTextField fldLastname = new RequiredTextField("lastName", new PropertyModel<String>(r, "lastName")); fldLastname.add( new StringValidator.LengthBetweenValidator( fieldLengths.get(LengthProperty.FLD_LASTNAME_MINLENGTH), fieldLengths.get(LengthProperty.FLD_LASTNAME_LENGTH))); form.add(fldLastname); // mobile number final TextField mobile = new RequiredTextField("mobileNum", new PropertyModel<PhoneNumber>(this, "phoneNumber")) { private static final long serialVersionUID = 1L; @Override public <C> IConverter<C> getConverter(Class<C> type) { return new PhoneNumberConverter(); } }; mobile.add( new AjaxFormComponentUpdatingBehavior("onBlur") { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { target.add(mobile); } }); mobile.setMarkupId("mobileNum"); form.add(mobile); form.add( new TextField("contacttime", new PropertyModel<String>(r, "bestTimeToContact")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_CONTACTTIME_LENGTH)))); TextField tradeInValue = new TextField("tradeInValue", new PropertyModel<String>(r, "tradeInValue")) { private static final long serialVersionUID = 1L; @Override public <C> IConverter<C> getConverter(Class<C> type) { return new MoneyConverter(); } }; tradeInValue.add(new MinimumValidator<BigDecimal>(new BigDecimal(0))); form.add(tradeInValue); form.add(new CheckBox("upgradetext", new PropertyModel<Boolean>(r, "upgradeReminderText"))); form.add(new CheckBox("upgradecall", new PropertyModel<Boolean>(r, "upgradeReminderCall"))); // upgrade date DateTextField udate = new DateTextField( "upgradedate", new PropertyModel<Date>(r, "upgradeEligibilityDate"), "EEEE MM/dd/yy"); DatePicker dp = new DatePicker(); udate.add(dp); form.add(udate); // customer - plan features device. On left side of form, not to be // confused with recommended plan/features/device. form.add( new TextArea("planFeaturesDevice", new PropertyModel<String>(r, "subscriptionInfo")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_PLANFEATURESDEVICE_LENGTH)))); form.add( new TextArea("internetuse", new PropertyModel<String>(r, "netUseInfo")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_INTERNETUSE_LENGTH)))); form.add( new TextArea("rec_connectivity", new PropertyModel<String>(r, "recommendedSubscription")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_REC_CONNECTIVITY_LENGTH)))); form.add( new TextArea("rec_phonedevice", new PropertyModel<String>(r, "recommendedDevice")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_REC_PHONEDEVICE_LENGTH)))); form.add( new TextField("e_bluetooth", new PropertyModel<String>(e, "handsfree")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_memory", new PropertyModel<String>(e, "memory")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_accessories", new PropertyModel<String>(e, "accessories")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_shields", new PropertyModel<String>(e, "shields")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_chargers", new PropertyModel<String>(e, "chargers")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_gsbtp", new PropertyModel<String>(e, "gsbtp")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_buyback", new PropertyModel<String>(e, "buyback")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextField("e_financing", new PropertyModel<String>(e, "financing")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_ESSENTIAL_LENGTH)))); form.add( new TextArea("notes", new PropertyModel<String>(r, "notes")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_NOTES_LENGTH)))); form.add( new TextArea("contactinfo", new PropertyModel<String>(r, "specialistContactInfo")) .add( new StringValidator.MaximumLengthValidator( fieldLengths.get(LengthProperty.FLD_CONTACTINFO_LENGTH)))); form.add( new CheckBox( "md_internet", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.INTERNET.name()))); form.add( new CheckBox( "md_email", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.EMAIL.name()))); form.add( new CheckBox( "md_music", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.MUSIC.name()))); form.add( new CheckBox( "md_video", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.VIDEO.name()))); form.add( new CheckBox( "md_photo", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.PHOTO.name()))); form.add( new CheckBox( "md_tv", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.TV.name()))); form.add( new CheckBox( "md_games", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.GAMING.name()))); form.add( new CheckBox( "md_texting", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.TEXTING.name()))); form.add( new CheckBox( "md_unlocked", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.UNLOCKED.name()))); form.add( new CheckBox( "md_nav", new CheckboxModel( r, "deviceCapabilities", Recommendation.DeviceCapabilities.NAVIGATION.name()))); form.add( new CheckBox( "wow_data", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.DATATRANSFER.name()))); form.add( new CheckBox( "wow_email", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.PERSONALEMAIL.name()))); form.add( new CheckBox( "wow_bluetooth", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.BLUETOOTHPAIRING.name()))); form.add( new CheckBox( "wow_apps", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.APPLICATIONS.name()))); form.add( new CheckBox( "wow_sw", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.SOFTWARE.name()))); form.add( new CheckBox( "wow_social", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.SOCIALNETWORKING.name()))); form.add( new CheckBox( "wow_power", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.POWERMANAGEMENT.name()))); form.add( new CheckBox( "wow_voicemail", new CheckboxModel( r, "wowRequirements", Recommendation.WowRequirements.VOICEMAIL.name()))); form.add( new CheckBox( "wow_other", new CheckboxModel(r, "wowRequirements", Recommendation.WowRequirements.OTHER.name()))); HiddenField formChanged = new HiddenField<Boolean>("formChanged", new PropertyModel<Boolean>(this, "formChanged")); closeForm.add(formChanged); add(form); form.add(closeForm); SessionTimeoutPanel sessionTimeoutPanel = new SessionTimeoutPanel("sessionTimeoutPanel"); add(sessionTimeoutPanel); sessionTimeoutPanel.setOutputMarkupPlaceholderTag(true); }
protected void setupPage(final TeamModel teamModel) { if (isCreate) { super.setupPage(getString("gb.newTeam"), ""); } else { super.setupPage(getString("gb.edit"), teamModel.name); } CompoundPropertyModel<TeamModel> model = new CompoundPropertyModel<TeamModel>(teamModel); List<String> repos = getAccessRestrictedRepositoryList(true, null); List<String> teamUsers = new ArrayList<String>(teamModel.users); List<String> preReceiveScripts = new ArrayList<String>(); List<String> postReceiveScripts = new ArrayList<String>(); final String oldName = teamModel.name; final List<RegistrantAccessPermission> permissions = teamModel.getRepositoryPermissions(); // users palette final Palette<UserChoice> users = new Palette<UserChoice>( "users", new ListModel<UserChoice>(getTeamUsers(teamUsers)), new CollectionModel<UserChoice>( sortByDisplayName(getTeamUsers(app().users().getAllUsernames()))), new ChoiceRenderer<UserChoice>(null, "userId"), 10, false); // pre-receive palette if (teamModel.preReceiveScripts != null) { preReceiveScripts.addAll(teamModel.preReceiveScripts); } final Palette<String> preReceivePalette = new Palette<String>( "preReceiveScripts", new ListModel<String>(preReceiveScripts), new CollectionModel<String>(app().repositories().getPreReceiveScriptsUnused(null)), new StringChoiceRenderer(), 12, true); // post-receive palette if (teamModel.postReceiveScripts != null) { postReceiveScripts.addAll(teamModel.postReceiveScripts); } final Palette<String> postReceivePalette = new Palette<String>( "postReceiveScripts", new ListModel<String>(postReceiveScripts), new CollectionModel<String>(app().repositories().getPostReceiveScriptsUnused(null)), new StringChoiceRenderer(), 12, true); Form<TeamModel> form = new Form<TeamModel>("editForm", model) { private static final long serialVersionUID = 1L; /* * (non-Javadoc) * * @see org.apache.wicket.markup.html.form.Form#onSubmit() */ @Override protected void onSubmit() { String teamname = teamModel.name; if (StringUtils.isEmpty(teamname)) { error(getString("gb.pleaseSetTeamName")); return; } if (isCreate) { TeamModel model = app().users().getTeamModel(teamname); if (model != null) { error(MessageFormat.format(getString("gb.teamNameUnavailable"), teamname)); return; } } // update team permissions for (RegistrantAccessPermission repositoryPermission : permissions) { teamModel.setRepositoryPermission( repositoryPermission.registrant, repositoryPermission.permission); } Iterator<UserChoice> selectedUsers = users.getSelectedChoices(); List<String> members = new ArrayList<String>(); while (selectedUsers.hasNext()) { members.add(selectedUsers.next().getUserId().toLowerCase()); } teamModel.users.clear(); teamModel.users.addAll(members); // set mailing lists String ml = mailingLists.getObject(); if (!StringUtils.isEmpty(ml)) { Set<String> list = new HashSet<String>(); for (String address : ml.split("(,|\\s)")) { if (StringUtils.isEmpty(address)) { continue; } list.add(address.toLowerCase()); } teamModel.mailingLists.clear(); teamModel.mailingLists.addAll(list); } // pre-receive scripts List<String> preReceiveScripts = new ArrayList<String>(); Iterator<String> pres = preReceivePalette.getSelectedChoices(); while (pres.hasNext()) { preReceiveScripts.add(pres.next()); } teamModel.preReceiveScripts.clear(); teamModel.preReceiveScripts.addAll(preReceiveScripts); // post-receive scripts List<String> postReceiveScripts = new ArrayList<String>(); Iterator<String> post = postReceivePalette.getSelectedChoices(); while (post.hasNext()) { postReceiveScripts.add(post.next()); } teamModel.postReceiveScripts.clear(); teamModel.postReceiveScripts.addAll(postReceiveScripts); try { if (isCreate) { app().gitblit().addTeam(teamModel); } else { app().gitblit().reviseTeam(oldName, teamModel); } } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(false); if (isCreate) { // create another team info(MessageFormat.format(getString("gb.teamCreated"), teamModel.name)); } // back to users page setResponsePage(UsersPage.class); } }; // do not let the browser pre-populate these fields form.add(new SimpleAttributeModifier("autocomplete", "off")); // not all user services support manipulating team memberships boolean editMemberships = app().authentication().supportsTeamMembershipChanges(teamModel); // field names reflective match TeamModel fields form.add(new TextField<String>("name")); form.add(new CheckBox("canAdmin")); form.add( new CheckBox("canFork") .setEnabled(app().settings().getBoolean(Keys.web.allowForking, true))); form.add(new CheckBox("canCreate")); form.add(users.setEnabled(editMemberships)); mailingLists = new Model<String>( teamModel.mailingLists == null ? "" : StringUtils.flattenStrings(teamModel.mailingLists, " ")); form.add(new TextField<String>("mailingLists", mailingLists)); form.add( new RegistrantPermissionsPanel( "repositories", RegistrantType.REPOSITORY, repos, permissions, getAccessPermissions())); form.add(preReceivePalette); form.add( new BulletListPanel( "inheritedPreReceive", "inherited", app().repositories().getPreReceiveScriptsInherited(null))); form.add(postReceivePalette); form.add( new BulletListPanel( "inheritedPostReceive", "inherited", app().repositories().getPostReceiveScriptsInherited(null))); form.add(new Button("save")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(UsersPage.class); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); add(form); }
public SaveCancelFormPanel(String id, boolean ajax) { super(id); form = new Form("form"); form.add(new SetFocusBehavior(form)); feedbackPanel = new FeedbackPanel("feedback"); feedbackPanel.setOutputMarkupId(true); titleLabel = new Label("title", getTitleModel()); if (ajax) { submitButton = new AjaxButton("submitButton") { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { onSave(target); if (!Session.get() .getFeedbackMessages() .hasMessage(new ErrorLevelFeedbackMessageFilter(FeedbackMessage.ERROR))) { defaultReturnAction(target); } } @Override protected void onError(AjaxRequestTarget target, Form form) { target.addComponent(feedbackPanel); } }; cancelButton = new AjaxButton("cancelButton") { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { onCancel(target); defaultReturnAction(target); } }; } else { submitButton = new Button("submitButton") { @Override public void onSubmit() { onSave(null); if (!Session.get() .getFeedbackMessages() .hasMessage(new ErrorLevelFeedbackMessageFilter(FeedbackMessage.ERROR))) { defaultReturnAction(); } } }; cancelButton = new Button("cancelButton") { @Override public void onSubmit() { onCancel(null); defaultReturnAction(); } }; } cancelButton.setDefaultFormProcessing(false); add(form); form.add(feedbackPanel); form.add(titleLabel); form.add(submitButton); form.add(cancelButton); }
@Override public void onInitialize() { super.onInitialize(); // get settings data final GradebookInformation settings = this.businessService.getGradebookSettings(); // setup page model final GbSettings gbSettings = new GbSettings(settings); final CompoundPropertyModel<GbSettings> formModel = new CompoundPropertyModel<GbSettings>(gbSettings); final SettingsGradeEntryPanel gradeEntryPanel = new SettingsGradeEntryPanel("gradeEntryPanel", formModel, gradeEntryExpanded); final SettingsGradeReleasePanel gradeReleasePanel = new SettingsGradeReleasePanel("gradeReleasePanel", formModel, gradeReleaseExpanded); final SettingsCategoryPanel categoryPanel = new SettingsCategoryPanel("categoryPanel", formModel, categoryExpanded); final SettingsGradingSchemaPanel gradingSchemaPanel = new SettingsGradingSchemaPanel("gradingSchemaPanel", formModel, gradingSchemaExpanded); // form final Form<GbSettings> form = new Form<GbSettings>("form", formModel) { private static final long serialVersionUID = 1L; @Override public void onValidate() { super.onValidate(); final GbSettings model = getModelObject(); final List<CategoryDefinition> categories = model.getGradebookInformation().getCategories(); // validate the categories if (model.getGradebookInformation().getCategoryType() == GbCategoryType.WEIGHTED_CATEGORY.getValue()) { BigDecimal totalWeight = BigDecimal.ZERO; for (final CategoryDefinition cat : categories) { if (cat.getWeight() == null) { error(getString("settingspage.update.failure.categorymissingweight")); } else { // extra credit items do not participate in the weightings, so exclude from the // tally if (!cat.isExtraCredit()) { totalWeight = totalWeight.add(BigDecimal.valueOf(cat.getWeight())); } } } if (totalWeight.compareTo(BigDecimal.ONE) != 0) { error(getString("settingspage.update.failure.categoryweighttotals")); } } // if categories and weighting selected AND if course grade display points was selected, // give error message if (model.getGradebookInformation().getCategoryType() == GbCategoryType.WEIGHTED_CATEGORY.getValue() && model.getGradebookInformation().isCourseGradeDisplayed() && model.getGradebookInformation().isCoursePointsDisplayed()) { error(getString("settingspage.displaycoursegrade.incompatible")); } // validate the course grade display settings if (model.getGradebookInformation().isCourseGradeDisplayed()) { int displayOptions = 0; if (model.getGradebookInformation().isCourseLetterGradeDisplayed()) { displayOptions++; } if (model.getGradebookInformation().isCourseAverageDisplayed()) { displayOptions++; } if (model.getGradebookInformation().isCoursePointsDisplayed()) { displayOptions++; } if (displayOptions == 0) { error(getString("settingspage.displaycoursegrade.notenough")); } } } @Override public void onSubmit() { final GbSettings model = getModelObject(); Page responsePage = new SettingsPage( gradeEntryPanel.isExpanded(), gradeReleasePanel.isExpanded(), categoryPanel.isExpanded(), gradingSchemaPanel.isExpanded()); // update settings try { SettingsPage.this.businessService.updateGradebookSettings( model.getGradebookInformation()); getSession().info(getString("settingspage.update.success")); } catch (ConflictingCategoryNameException e) { getSession().error(getString("settingspage.update.failure.categorynameconflict")); responsePage = this.getPage(); } catch (IllegalArgumentException e) { getSession().error(e.getMessage()); responsePage = this.getPage(); } setResponsePage(responsePage); } }; // cancel button final Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(new GradebookPage()); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); // panels form.add(gradeEntryPanel); form.add(gradeReleasePanel); form.add(categoryPanel); form.add(gradingSchemaPanel); add(form); // expand/collapse panel actions add( new AjaxLink<String>("expandAll") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget target) { target.appendJavaScript("$('#settingsAccordion .panel-collapse').collapse('show');"); } }); add( new AjaxLink<String>("collapseAll") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget target) { target.appendJavaScript("$('#settingsAccordion .panel-collapse').collapse('hide');"); } }); }
protected void setupPage(RepositoryModel model) { this.repositoryModel = model; // ensure this user can create or edit this repository checkPermissions(repositoryModel); List<String> indexedBranches = new ArrayList<String>(); List<String> federationSets = new ArrayList<String>(); final List<RegistrantAccessPermission> repositoryUsers = new ArrayList<RegistrantAccessPermission>(); final List<RegistrantAccessPermission> repositoryTeams = new ArrayList<RegistrantAccessPermission>(); List<String> preReceiveScripts = new ArrayList<String>(); List<String> postReceiveScripts = new ArrayList<String>(); GitBlitWebSession session = GitBlitWebSession.get(); final UserModel user = session.getUser() == null ? UserModel.ANONYMOUS : session.getUser(); final boolean allowEditName = isCreate || isAdmin || repositoryModel.isUsersPersonalRepository(user.username); if (isCreate) { if (user.canAdmin()) { super.setupPage(getString("gb.newRepository"), ""); } else { super.setupPage(getString("gb.newRepository"), user.getDisplayName()); } } else { super.setupPage(getString("gb.edit"), repositoryModel.name); repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel)); repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel)); Collections.sort(repositoryUsers); Collections.sort(repositoryTeams); federationSets.addAll(repositoryModel.federationSets); if (!ArrayUtils.isEmpty(repositoryModel.indexedBranches)) { indexedBranches.addAll(repositoryModel.indexedBranches); } } final String oldName = repositoryModel.name; final RegistrantPermissionsPanel usersPalette = new RegistrantPermissionsPanel( "users", RegistrantType.USER, GitBlit.self().getAllUsernames(), repositoryUsers, getAccessPermissions()); final RegistrantPermissionsPanel teamsPalette = new RegistrantPermissionsPanel( "teams", RegistrantType.TEAM, GitBlit.self().getAllTeamnames(), repositoryTeams, getAccessPermissions()); // owners palette List<String> owners = new ArrayList<String>(repositoryModel.owners); List<String> persons = GitBlit.self().getAllUsernames(); final Palette<String> ownersPalette = new Palette<String>( "owners", new ListModel<String>(owners), new CollectionModel<String>(persons), new StringChoiceRenderer(), 12, true); // indexed local branches palette List<String> allLocalBranches = new ArrayList<String>(); allLocalBranches.add(Constants.DEFAULT_BRANCH); allLocalBranches.addAll(repositoryModel.getLocalBranches()); boolean luceneEnabled = GitBlit.getBoolean(Keys.web.allowLuceneIndexing, true); final Palette<String> indexedBranchesPalette = new Palette<String>( "indexedBranches", new ListModel<String>(indexedBranches), new CollectionModel<String>(allLocalBranches), new StringChoiceRenderer(), 8, false); indexedBranchesPalette.setEnabled(luceneEnabled); // federation sets palette List<String> sets = GitBlit.getStrings(Keys.federation.sets); final Palette<String> federationSetsPalette = new Palette<String>( "federationSets", new ListModel<String>(federationSets), new CollectionModel<String>(sets), new StringChoiceRenderer(), 8, false); // pre-receive palette if (!ArrayUtils.isEmpty(repositoryModel.preReceiveScripts)) { preReceiveScripts.addAll(repositoryModel.preReceiveScripts); } final Palette<String> preReceivePalette = new Palette<String>( "preReceiveScripts", new ListModel<String>(preReceiveScripts), new CollectionModel<String>(GitBlit.self().getPreReceiveScriptsUnused(repositoryModel)), new StringChoiceRenderer(), 12, true); // post-receive palette if (!ArrayUtils.isEmpty(repositoryModel.postReceiveScripts)) { postReceiveScripts.addAll(repositoryModel.postReceiveScripts); } final Palette<String> postReceivePalette = new Palette<String>( "postReceiveScripts", new ListModel<String>(postReceiveScripts), new CollectionModel<String>( GitBlit.self().getPostReceiveScriptsUnused(repositoryModel)), new StringChoiceRenderer(), 12, true); // custom fields final Map<String, String> customFieldsMap = GitBlit.getMap(Keys.groovy.customFields); List<String> customKeys = new ArrayList<String>(customFieldsMap.keySet()); final ListView<String> customFieldsListView = new ListView<String>("customFieldsListView", customKeys) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<String> item) { String key = item.getModelObject(); item.add(new Label("customFieldLabel", customFieldsMap.get(key))); String value = ""; if (repositoryModel.customFields != null && repositoryModel.customFields.containsKey(key)) { value = repositoryModel.customFields.get(key); } TextField<String> field = new TextField<String>("customFieldValue", new Model<String>(value)); item.add(field); } }; customFieldsListView.setReuseItems(true); CompoundPropertyModel<RepositoryModel> rModel = new CompoundPropertyModel<RepositoryModel>(repositoryModel); Form<RepositoryModel> form = new Form<RepositoryModel>("editForm", rModel) { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { try { // confirm a repository name was entered if (repositoryModel.name == null && StringUtils.isEmpty(repositoryModel.name)) { error(getString("gb.pleaseSetRepositoryName")); return; } // ensure name is trimmed repositoryModel.name = repositoryModel.name.trim(); // automatically convert backslashes to forward slashes repositoryModel.name = repositoryModel.name.replace('\\', '/'); // Automatically replace // with / repositoryModel.name = repositoryModel.name.replace("//", "/"); // prohibit folder paths if (repositoryModel.name.startsWith("/")) { error(getString("gb.illegalLeadingSlash")); return; } if (repositoryModel.name.startsWith("../")) { error(getString("gb.illegalRelativeSlash")); return; } if (repositoryModel.name.contains("/../")) { error(getString("gb.illegalRelativeSlash")); return; } if (repositoryModel.name.endsWith("/")) { repositoryModel.name = repositoryModel.name.substring(0, repositoryModel.name.length() - 1); } // confirm valid characters in repository name Character c = StringUtils.findInvalidCharacter(repositoryModel.name); if (c != null) { error(MessageFormat.format(getString("gb.illegalCharacterRepositoryName"), c)); return; } if (user.canCreate() && !user.canAdmin() && allowEditName) { // ensure repository name begins with the user's path if (!repositoryModel.name.startsWith(user.getPersonalPath())) { error( MessageFormat.format( getString("gb.illegalPersonalRepositoryLocation"), user.getPersonalPath())); return; } if (repositoryModel.name.equals(user.getPersonalPath())) { // reset path prefix and show error repositoryModel.name = user.getPersonalPath() + "/"; error(getString("gb.pleaseSetRepositoryName")); return; } } // confirm access restriction selection if (repositoryModel.accessRestriction == null) { error(getString("gb.selectAccessRestriction")); return; } // confirm federation strategy selection if (repositoryModel.federationStrategy == null) { error(getString("gb.selectFederationStrategy")); return; } // save federation set preferences if (repositoryModel.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) { repositoryModel.federationSets.clear(); Iterator<String> sets = federationSetsPalette.getSelectedChoices(); while (sets.hasNext()) { repositoryModel.federationSets.add(sets.next()); } } // set author metric exclusions String ax = metricAuthorExclusions.getObject(); if (!StringUtils.isEmpty(ax)) { Set<String> list = new HashSet<String>(); for (String exclusion : StringUtils.getStringsFromValue(ax, " ")) { if (StringUtils.isEmpty(exclusion)) { continue; } if (exclusion.indexOf(' ') > -1) { list.add("\"" + exclusion + "\""); } else { list.add(exclusion); } } repositoryModel.metricAuthorExclusions = new ArrayList<String>(list); } // set mailing lists String ml = mailingLists.getObject(); if (!StringUtils.isEmpty(ml)) { Set<String> list = new HashSet<String>(); for (String address : ml.split("(,|\\s)")) { if (StringUtils.isEmpty(address)) { continue; } list.add(address.toLowerCase()); } repositoryModel.mailingLists = new ArrayList<String>(list); } // indexed branches List<String> indexedBranches = new ArrayList<String>(); Iterator<String> branches = indexedBranchesPalette.getSelectedChoices(); while (branches.hasNext()) { indexedBranches.add(branches.next()); } repositoryModel.indexedBranches = indexedBranches; // owners repositoryModel.owners.clear(); Iterator<String> owners = ownersPalette.getSelectedChoices(); while (owners.hasNext()) { repositoryModel.addOwner(owners.next()); } // pre-receive scripts List<String> preReceiveScripts = new ArrayList<String>(); Iterator<String> pres = preReceivePalette.getSelectedChoices(); while (pres.hasNext()) { preReceiveScripts.add(pres.next()); } repositoryModel.preReceiveScripts = preReceiveScripts; // post-receive scripts List<String> postReceiveScripts = new ArrayList<String>(); Iterator<String> post = postReceivePalette.getSelectedChoices(); while (post.hasNext()) { postReceiveScripts.add(post.next()); } repositoryModel.postReceiveScripts = postReceiveScripts; // custom fields repositoryModel.customFields = new LinkedHashMap<String, String>(); for (int i = 0; i < customFieldsListView.size(); i++) { ListItem<String> child = (ListItem<String>) customFieldsListView.get(i); String key = child.getModelObject(); TextField<String> field = (TextField<String>) child.get("customFieldValue"); String value = field.getValue(); repositoryModel.customFields.put(key, value); } // save the repository GitBlit.self().updateRepositoryModel(oldName, repositoryModel, isCreate); // repository access permissions if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { GitBlit.self().setUserAccessPermissions(repositoryModel, repositoryUsers); GitBlit.self().setTeamAccessPermissions(repositoryModel, repositoryTeams); } } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(false); setResponsePage(RepositoriesPage.class); } }; // do not let the browser pre-populate these fields form.add(new SimpleAttributeModifier("autocomplete", "off")); // field names reflective match RepositoryModel fields form.add(new TextField<String>("name").setEnabled(allowEditName)); form.add(new TextField<String>("description")); form.add(ownersPalette); form.add( new CheckBox("allowForks").setEnabled(GitBlit.getBoolean(Keys.web.allowForking, true))); DropDownChoice<AccessRestrictionType> accessRestriction = new DropDownChoice<AccessRestrictionType>( "accessRestriction", Arrays.asList(AccessRestrictionType.values()), new AccessRestrictionRenderer()); form.add(accessRestriction); form.add(new CheckBox("isFrozen")); // TODO enable origin definition form.add(new TextField<String>("origin").setEnabled(false /* isCreate */)); // allow relinking HEAD to a branch or tag other than master on edit repository List<String> availableRefs = new ArrayList<String>(); if (!ArrayUtils.isEmpty(repositoryModel.availableRefs)) { availableRefs.addAll(repositoryModel.availableRefs); } form.add( new DropDownChoice<String>("HEAD", availableRefs).setEnabled(availableRefs.size() > 0)); boolean gcEnabled = GitBlit.getBoolean(Keys.git.enableGarbageCollection, false); List<Integer> gcPeriods = Arrays.asList(1, 2, 3, 4, 5, 7, 10, 14); form.add( new DropDownChoice<Integer>("gcPeriod", gcPeriods, new GCPeriodRenderer()) .setEnabled(gcEnabled)); form.add(new TextField<String>("gcThreshold").setEnabled(gcEnabled)); // federation strategies - remove ORIGIN choice if this repository has // no origin. List<FederationStrategy> federationStrategies = new ArrayList<FederationStrategy>(Arrays.asList(FederationStrategy.values())); if (StringUtils.isEmpty(repositoryModel.origin)) { federationStrategies.remove(FederationStrategy.FEDERATE_ORIGIN); } form.add( new DropDownChoice<FederationStrategy>( "federationStrategy", federationStrategies, new FederationTypeRenderer())); form.add(new CheckBox("useTickets")); form.add(new CheckBox("useDocs")); form.add(new CheckBox("useIncrementalPushTags")); form.add(new CheckBox("showRemoteBranches")); form.add(new CheckBox("showReadme")); form.add(new CheckBox("skipSizeCalculation")); form.add(new CheckBox("skipSummaryMetrics")); List<Integer> maxActivityCommits = Arrays.asList(-1, 0, 25, 50, 75, 100, 150, 200, 250, 500); form.add( new DropDownChoice<Integer>( "maxActivityCommits", maxActivityCommits, new MaxActivityCommitsRenderer())); metricAuthorExclusions = new Model<String>( ArrayUtils.isEmpty(repositoryModel.metricAuthorExclusions) ? "" : StringUtils.flattenStrings(repositoryModel.metricAuthorExclusions, " ")); form.add(new TextField<String>("metricAuthorExclusions", metricAuthorExclusions)); mailingLists = new Model<String>( ArrayUtils.isEmpty(repositoryModel.mailingLists) ? "" : StringUtils.flattenStrings(repositoryModel.mailingLists, " ")); form.add(new TextField<String>("mailingLists", mailingLists)); form.add(indexedBranchesPalette); List<AuthorizationControl> acList = Arrays.asList(AuthorizationControl.values()); final RadioChoice<AuthorizationControl> authorizationControl = new RadioChoice<Constants.AuthorizationControl>( "authorizationControl", acList, new AuthorizationControlRenderer()); form.add(authorizationControl); final CheckBox verifyCommitter = new CheckBox("verifyCommitter"); verifyCommitter.setOutputMarkupId(true); form.add(verifyCommitter); form.add(usersPalette); form.add(teamsPalette); form.add(federationSetsPalette); form.add(preReceivePalette); form.add( new BulletListPanel( "inheritedPreReceive", getString("gb.inherited"), GitBlit.self().getPreReceiveScriptsInherited(repositoryModel))); form.add(postReceivePalette); form.add( new BulletListPanel( "inheritedPostReceive", getString("gb.inherited"), GitBlit.self().getPostReceiveScriptsInherited(repositoryModel))); WebMarkupContainer customFieldsSection = new WebMarkupContainer("customFieldsSection"); customFieldsSection.add(customFieldsListView); form.add( customFieldsSection.setVisible(!GitBlit.getString(Keys.groovy.customFields, "").isEmpty())); // initial enable/disable of permission controls if (repositoryModel.accessRestriction.equals(AccessRestrictionType.NONE)) { // anonymous everything, disable all controls usersPalette.setEnabled(false); teamsPalette.setEnabled(false); authorizationControl.setEnabled(false); verifyCommitter.setEnabled(false); } else { // authenticated something // enable authorization controls authorizationControl.setEnabled(true); verifyCommitter.setEnabled(true); boolean allowFineGrainedControls = repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED); usersPalette.setEnabled(allowFineGrainedControls); teamsPalette.setEnabled(allowFineGrainedControls); } accessRestriction.add( new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { // enable/disable permissions panel based on access restriction boolean allowAuthorizationControl = repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE); authorizationControl.setEnabled(allowAuthorizationControl); verifyCommitter.setEnabled(allowAuthorizationControl); boolean allowFineGrainedControls = allowAuthorizationControl && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED); usersPalette.setEnabled(allowFineGrainedControls); teamsPalette.setEnabled(allowFineGrainedControls); if (allowFineGrainedControls) { repositoryModel.authorizationControl = AuthorizationControl.NAMED; } target.addComponent(authorizationControl); target.addComponent(verifyCommitter); target.addComponent(usersPalette); target.addComponent(teamsPalette); } }); authorizationControl.add( new AjaxFormChoiceComponentUpdatingBehavior() { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { // enable/disable permissions panel based on access restriction boolean allowAuthorizationControl = repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE); authorizationControl.setEnabled(allowAuthorizationControl); boolean allowFineGrainedControls = allowAuthorizationControl && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED); usersPalette.setEnabled(allowFineGrainedControls); teamsPalette.setEnabled(allowFineGrainedControls); if (allowFineGrainedControls) { repositoryModel.authorizationControl = AuthorizationControl.NAMED; } target.addComponent(authorizationControl); target.addComponent(usersPalette); target.addComponent(teamsPalette); } }); form.add(new Button("save")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(RepositoriesPage.class); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); add(form); }