List of usage examples for org.apache.wicket.model Model getObject
@Override
public T getObject()
From source file:com.axway.ats.testexplorer.pages.testcase.statistics.DataPanel.java
License:Apache License
/** * Display the collected//from w w w. j a va 2s .c o m * @param statsForm */ public void displayStatisticDescriptions(Form<Object> statsForm) { boolean isDataPanelVisible = machineDescriptions.size() > 0; List<List<StatisticsTableCell>> rows = new ArrayList<List<StatisticsTableCell>>(); List<StatisticsTableCell> columns = new ArrayList<StatisticsTableCell>(); // add machine columns columns.add(new StatisticsTableCell("<img class=\"arrowUD\" src=\"images/up.png\">", false)); columns.add(new StatisticsTableCell(this.name, false)); for (MachineDescription machine : machineDescriptions) { String machineName = machine.getMachineAlias(); if (SQLServerDbReadAccess.MACHINE_NAME_FOR_ATS_AGENTS.equals(machineName)) { machineName = ""; } StatisticsTableCell cell = new StatisticsTableCell( "<b style=\"padding: 0 5px;\">" + machineName + "</b>", false, "centeredLabel"); cell.cssClass = "fixTableColumn"; columns.add(cell); } rows.add(columns); // add empty row columns = new ArrayList<StatisticsTableCell>(); for (int i = 0; i < 2 + machineDescriptions.size(); i++) { columns.add(NBSP_EMPTY_CELL); } rows.add(columns); final Set<Integer> hiddenRowIndexes = new HashSet<Integer>(); for (StatisticContainer statContainer : statContainers.values()) { List<DbStatisticDescription> statDescriptions = sortQueueItems(statContainer.getStatDescriptions()); String lastStatParent = ""; for (DbStatisticDescription statDescription : statDescriptions) { String statisticLabel = "<span class=\"statName\">" + statDescription.name + "</span><span class=\"statUnit\">(" + statDescription.unit + ")</span>"; // add parent table line if needed String statParent = statDescription.parentName; if (!StringUtils.isNullOrEmpty(statParent) && !statParent.equals(StatisticsPanel.SYSTEM_STATISTIC_CONTAINER) && !lastStatParent.equals(statParent)) { columns = new ArrayList<StatisticsTableCell>(); columns.add(NBSP_EMPTY_CELL); if (statParent.startsWith(PROCESS_STAT_PREFIX)) { // only Process parent element can hide its children (it is not a good idea to hide the User actions behind queue names) columns.add(new StatisticsTableCell( "<a href=\"#\" onclick=\"showHiddenStatChildren(this);return false;\">" + statParent + "</a>", false, "parentStatTd")); } else { columns.add(new StatisticsTableCell(statParent, false, "parentStatTd")); } for (int i = 0; i < machineDescriptions.size(); i++) { columns.add(NBSP_EMPTY_CELL); } rows.add(columns); } lastStatParent = statParent; columns = new ArrayList<StatisticsTableCell>(); columns.add(new StatisticsTableCell(true)); StatisticsTableCell statName = new StatisticsTableCell(statisticLabel, true); statName.title = statDescription.params; columns.add(statName); for (MachineDescription machine : machineDescriptions) { Model<Boolean> selectionModel = machine.getStatDescriptionSelectionModel(statDescription); // selectionModel.getObject() should sometimes return // NULL - when comparing with other testcases if (selectionModel != null && selectionModel.getObject() != null) { columns.add(new StatisticsTableCell(selectionModel)); } else { columns.add(EMPTY_CELL); } } // hide only the Process child elements if (!StringUtils.isNullOrEmpty(lastStatParent) && lastStatParent.startsWith(PROCESS_STAT_PREFIX)) { // add current row number as a child row which must be hidden hiddenRowIndexes.add(rows.size()); } rows.add(columns); } } statisticsUIContainer = new ListView<List<StatisticsTableCell>>(uiPrefix + "StatsRows", rows) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<List<StatisticsTableCell>> item) { // table TR if (item.getIndex() == 0) { item.add(AttributeModifier.replace("class", "statisticsHeaderRow")); item.add(AttributeModifier.replace("onclick", "showOrHideTableRows('" + uiPrefix + "StatsTable',1,true);")); } else if (item.getIndex() > 3) { // skip the machines,label and // measurement rows item.add(AttributeModifier.replace("class", "statisticRow")); } if (hiddenRowIndexes.contains(item.getIndex())) { item.add(new AttributeAppender("class", new Model<String>("hiddenStatRow"), " ")); } item.add(new ListView<StatisticsTableCell>(uiPrefix + "StatsColumns", item.getModelObject()) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<StatisticsTableCell> item) { // table TD if (item.getIndex() > 0) { // skip the first (CheckBox) // column item.add(AttributeModifier.replace("class", "statisticColumn")); } StatisticsTableCell cell = item.getModelObject(); CheckBox checkBox = new CheckBox("checkbox", cell.checkboxModel); if (cell.isCheckbox) { if (item.getIndex() == 0) { // this is the first/main CheckBox // binding onclick function which will (un)select all the CheckBoxes on that row // and will change the line color if it is selected or not checkBox.add(AttributeModifier.replace("onclick", "selectAllCheckboxes(this,'" + uiPrefix + "StatsTable');")); checkBox.add(AttributeModifier.replace("class", "allMachinesCheckbox")); } else { // binding onclick function which will (un)select the main/first CheckBox on that row // when all the CheckBoxes are selected or some are unselected. // Also the row/cell color will be changed. checkBox.add(AttributeModifier.replace("onclick", "unselectMainTrCheckbox(this,'" + uiPrefix + "StatsTable');")); checkBox.add(AttributeModifier.replace("class", "machineCheckbox")); item.add(AttributeModifier.replace("class", "statisticColumnWithCheckboxOnly")); } } else { checkBox.setVisible(false); } item.add(checkBox); Label label = new Label("label", cell.labelText); label.setEscapeModelStrings(false).setVisible(!cell.isCheckbox && !cell.isInputText); if (cell.isCheckboxLabel) { // binding JavaScript function which will click on the first/main CheckBox of this statistic label.add(AttributeModifier.replace("onclick", "clickSelectAllCheckbox(this);")); label.add(AttributeModifier.replace("class", "checkboxLabel noselection")); if (cell.title != null && !cell.title.isEmpty()) { String title = cell.title; int readingStartIndex = cell.title.indexOf(PARAMS_READING_UNIQUENESS_MAKRER); if (readingStartIndex > 0) { title = cell.title.substring(0, readingStartIndex) + cell.title.substring(cell.title.indexOf("_", readingStartIndex + 1)); } label.add(AttributeModifier.replace("title", title.replace("_", ", ").trim())); } } else if (label.isVisible() && cell.cssClass != null) { label.add(AttributeModifier.replace("class", cell.cssClass)); } item.add(label); Label machineAliasLabel = new Label("inputText", cell.getMachineLabelModel()); machineAliasLabel.setVisible(cell.isInputText); if (cell.getMachineLabelModel() != null && cell.getMachineLabelModel().getObject() != null) { machineAliasLabel.setOutputMarkupId(true); machineAliasLabel.add( AttributeModifier.replace("title", cell.getMachineLabelModel().getObject())); globalPanel.rememberMachineAliasLabel(machineAliasLabel); } item.add(machineAliasLabel); } }); } }; statisticsUIContainer.setVisible(isDataPanelVisible); statsForm.add(statisticsUIContainer); }
From source file:com.comcast.cdn.traffic_control.traffic_monitor.wicket.components.GraphPanel.java
License:Apache License
private Map<String, Object> getOptions(final Model<Integer> serverListSize) { final Map<String, Object> options = new HashMap<String, Object>(); // graph.Set("chart.background.barcolor1", "white"); // graph.Set("chart.background.barcolor2", "white"); options.put("chart.title.xaxis", "Time >>>"); options.put("chart.title.yaxis", "Servers Down"); options.put("chart.title.vpos", new Double(0.5)); options.put("chart.title", "Servers Marked Down On This Traffic Monitor"); options.put("chart.title.yaxis.pos", new Double(0.5)); options.put("chart.title.xaxis.pos", new Double(0.5)); //obj.Set("chart.ylabels.inside", true); options.put("chart.yaxispos", "right"); options.put("chart.ymax", serverListSize.getObject().intValue()); options.put("chart.xticks", new Integer(25)); return options; // graph.Set("chart.filled", true); // var grad = graph.context.createLinearGradient(0, 0, 0, 250); // grad.addColorStop(0, "#efefef"); // grad.addColorStop(0.9, "rgba(0,0,0,0)"); // graph.Set("chart.fillstyle", [ grad ]); }
From source file:com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteItemDefinitionPanel.java
License:Apache License
private void initLayout(final IModel<ItemDefinition<?>> model) { final Model<String> itemDefinitionAsStringModel = new Model<>(null); AutoCompleteTextField<String> input = new AutoCompleteTextField<String>(ID_INPUT, itemDefinitionAsStringModel, String.class, createAutoCompleteSettings()) { private static final long serialVersionUID = 1L; @Override/*w w w . j a v a 2 s . c o m*/ protected Iterator<String> getChoices(String input) { List<String> defsAsString = new ArrayList<>(); for (ItemDefinition<?> def : listChoices(input).values()) { defsAsString.add(def.getName().getLocalPart()); } return defsAsString.iterator(); } @Override protected void onConfigure() { super.onConfigure(); itemDefinitionAsStringModel.setObject(null); } }; input.add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { String newValue = itemDefinitionAsStringModel.getObject(); if (StringUtils.isNotBlank(newValue)) { ItemDefinition<?> def = listChoices("").get(newValue); if (def != null) { model.setObject(def); } } } }); add(input); }
From source file:com.evolveum.midpoint.web.component.assignment.SimpleParametricRoleSelector.java
License:Apache License
private void initLayout() { IModel<String> labelParamModel = new IModel<String>() { @Override/* w ww .ja v a2 s. c o m*/ public void detach() { } @Override public String getObject() { return getLabelParam(); } @Override public void setObject(String object) { } }; add(new Label(ID_LABEL_PARAM, labelParamModel) { @Override protected void onConfigure() { setVisible(getLabelParam() != null); super.onConfigure(); } }); IModel<String> labelRoleModel = new IModel<String>() { @Override public void detach() { } @Override public String getObject() { return getLabelRole(); } @Override public void setObject(String object) { } }; add(new Label(ID_LABEL_ROLE, labelRoleModel) { @Override protected void onConfigure() { setVisible(getLabelRole() != null); super.onConfigure(); } }); paramList = new ListView<String>(ID_LIST_PARAM, paramListModel) { @Override protected void populateItem(ListItem<String> item) { item.add(createParamLink(ID_ITEM_PARAM, item.getModel())); } }; paramList.setOutputMarkupId(true); add(paramList); final Model<String> addInputModel = new Model<String>(); TextField<String> addInput = new TextField<>(ID_ADD_INPUT, addInputModel); addInput.setOutputMarkupId(true); addInput.add(new AjaxFormComponentUpdatingBehavior("blur") { @Override protected void onUpdate(AjaxRequestTarget target) { // nothing to do, Ajax behavior is there only to get data to model } }); add(addInput); AjaxLink<String> addLink = new AjaxLink<String>(ID_ADD_LINK) { @Override public void onClick(AjaxRequestTarget target) { String newParam = addInputModel.getObject(); LOGGER.debug("ADD cliked, input field value: {}", newParam); if (!StringUtils.isBlank(newParam)) { addParam(newParam); } addInputModel.setObject(null); target.add(SimpleParametricRoleSelector.this); } }; add(addLink); AjaxLink<String> deleteLink = new AjaxLink<String>(ID_DELETE_LINK) { @Override public void onClick(AjaxRequestTarget target) { LOGGER.debug("DELETE cliked, selected param: {}", selectedParam); deleteParam(selectedParam); target.add(SimpleParametricRoleSelector.this); } }; add(deleteLink); }
From source file:com.fdorigo.rmfly.wicket.JudgePage.java
private void init() { add(new FeedbackPanel("feedback")); final DropDownChoice<Judge> ddc; ddc = new DropDownChoice<Judge>("judgeName", new CompoundPropertyModel<Judge>(judge), new LoadableDetachableModel<List<Judge>>() { @Override/*from w ww.jav a2s . com*/ protected List<Judge> load() { return judgeFacade.findAll(); } }) { @Override public boolean isNullValid() { return true; } @Override protected boolean wantOnSelectionChangedNotifications() { return true; } @Override protected void onSelectionChanged(Judge newSelection) { judge = newSelection; PageParameters params = new PageParameters(); if (judge != null) { params.add("jId", judge.getId()); } setResponsePage(JudgePage.class, params); } }; final TextField<String> firstNameField = new TextField<>("firstName"); final TextField<String> lastNameField = new TextField<>("lastName"); final TextField<String> phoneNumber = new TextField<>("phoneNumber"); Model<Judge> judgeModel = new Model<>(judge); Form<Judge> judgeForm = new Form<Judge>("judgeForm", new CompoundPropertyModel<>(judgeModel)) { @Override protected void onSubmit() { if (judgeFacade.exists(judgeModel.getObject())) { judge = judgeFacade.getByFirstLast(judgeModel.getObject()); judge.setFirstName(judgeModel.getObject().getFirstName()); judge.setLastName(judgeModel.getObject().getLastName()); judge.setPhoneNumber(judgeModel.getObject().getPhoneNumber()); } judgeFacade.edit(judge); setResponsePage(HomePage.class); } }; add(judgeForm.setOutputMarkupId(true)); /* Mandatory Fields */ judgeForm.add(firstNameField.setRequired(true)); judgeForm.add(lastNameField.setRequired(true)); judgeForm.add(phoneNumber.setRequired(true)); judgeForm.add(ddc.setRequired(false)); }
From source file:com.fdorigo.rmfly.wicket.ScorePage.java
private void init() { add(new FeedbackPanel("feedback")); final DateTextField dateTextField = new DateTextField("date"); dateTextField.setRequired(true);/* ww w. ja v a 2 s.c o m*/ final DatePicker datePicker = new DatePicker(); datePicker.setShowOnFieldClick(true); datePicker.setAutoHide(true); dateTextField.add(datePicker); final TextField<String> searchField = new TextField<>("nNumber", Model.of(record.getNnumber())); searchField.setRequired(true); final TextField<String> ownerName = new TextField<>("ownerName"); ownerName.setRequired(true); final DropDownChoice<String> ddc = new DropDownChoice<>("judgeName", new PropertyModel<String>(score, "judgeName"), judgeFacade.getAllNames()); final TextField<String> category = new TextField<>("category"); // Scoring Fields final TextField<Integer> fuselage = new TextField<>("scoreFuselage", Integer.class); fuselage.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> lifts = new TextField<>("scoreLifts", Integer.class); lifts.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> pitch = new TextField<>("scorePitch", Integer.class); pitch.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> landing = new TextField<>("scoreLanding", Integer.class); landing.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> cockpit = new TextField<>("scoreCockpit", Integer.class); cockpit.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> power = new TextField<>("scorePower", Integer.class); power.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> finish = new TextField<>("scoreFinish", Integer.class); finish.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> innovation = new TextField<>("scoreInnovation", Integer.class); innovation.setRequired(true).add(new RangeValidator<>(1, 10)); final TextField<Integer> overall = new TextField<>("scoreOverall", Integer.class); overall.setRequired(true).add(new RangeValidator<>(1, 10)); Model<Score> scoreModel = new Model<>(score); Form<Score> searchForm = new Form<Score>("scoreForm", new CompoundPropertyModel<>(scoreModel)) { @Override protected void onSubmit() { Integer existingScore = scoreFacade.exists(ddc.getModelObject(), score.getNnumber().getNnumber()); if (existingScore != null) { score = scoreFacade.find(existingScore); Score tempScore = scoreModel.getObject(); score.setDate(tempScore.getDate()); score.setScoreCockpit(tempScore.getScoreCockpit()); score.setScoreFinish(tempScore.getScoreFinish()); score.setScoreFuselage(tempScore.getScoreFuselage()); score.setScoreInnovation(tempScore.getScoreInnovation()); score.setScoreLanding(tempScore.getScoreLanding()); score.setScoreLifts(tempScore.getScoreLifts()); score.setScoreOverall(tempScore.getScoreOverall()); score.setScorePitch(tempScore.getScorePitch()); score.setScorePower(tempScore.getScorePower()); } scoreFacade.edit(score); setResponsePage(CompetingPage.class); } }; add(searchForm); searchForm.add(dateTextField); searchForm.add(ownerName); searchForm.add(ddc.setRequired(true)); searchForm.add(searchField); searchForm.add(category); searchForm.add(overall); searchForm.add(fuselage); searchForm.add(lifts); searchForm.add(pitch); searchForm.add(landing); searchForm.add(cockpit); searchForm.add(power); searchForm.add(finish); searchForm.add(innovation); }
From source file:com.genericconf.bbbgateway.web.pages.ManageMeeting.java
License:Apache License
public ManageMeeting(PageParameters params) { final String meetingID = params.getString("0"); String check = params.getString("1"); boolean okay = createCheck(meetingID).equals(check); logger.info("meeting ID: " + meetingID + "; check: " + check + "; okay: " + okay); if (!okay) {/*from ww w .j av a 2s . co m*/ getSession().error("You are not authorized to manage that meeting"); throw new RestartResponseAtInterceptPageException(getApplication().getHomePage()); } IModel<Meeting> model = new LoadableDetachableModel<Meeting>() { private static final long serialVersionUID = 1L; @Override protected Meeting load() { final Meeting mtg = meetingService.findByMeetingID(meetingID); if (mtg == null) { getSession().error("That meeting no longer exists"); throw new RestartResponseAtInterceptPageException(getApplication().getHomePage()); } return mtg; } }; setDefaultModel(new CompoundPropertyModel<Meeting>(model)); add(new Label("name")); add(new Label("meetingID")); add(new Label("attendeePassword")); add(new Label("moderatorPassword")); add(maxAtts = new Label("maximumAttendees")); maxAtts.setOutputMarkupId(true); attendeeList = new AttendeeAndWaitingListPanel("attendeeList", getModel()); add(attendeeList.setAllowAdminControls(true)); checked = new DateTimeLabel("checkedTime", new AlwaysReturnCurrentDateModel()); add(checked.setOutputMarkupId(true)); final Form<Void> bulkAllowForm = new Form<Void>("bulkAllowForm"); add(bulkAllowForm.setOutputMarkupId(true)); final Model<Integer> howMany = new Model<Integer>(0); bulkAllowForm.add(new TextField<Integer>("howMany", howMany, Integer.class)); bulkAllowForm.add(new AjaxButton("submit") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { if (howMany.getObject() <= 0) { target.appendJavascript("alert('must be a positive number');"); } else { final Meeting meeting = ManageMeeting.this.getModel().getObject(); meeting.increaseMaximumAttendees(howMany.getObject()); meetingService.bulkAllowAttendees(meeting); ManageMeeting.this.onPageAjaxRequest(target); } } }); add(new AbstractAjaxTimerBehavior( Duration.seconds(TimerSettings.INSTANCE.getSecondsBetweenManageMeetingPagePolls())) { private static final long serialVersionUID = 1L; @Override protected void onTimer(AjaxRequestTarget target) { ManageMeeting.this.onPageAjaxRequest(target); } }); }
From source file:com.gitblit.wicket.pages.EditFilePage.java
License:Apache License
public EditFilePage(final PageParameters params) { super(params); final UserModel currentUser = (GitBlitWebSession.get().getUser() != null) ? GitBlitWebSession.get().getUser() : UserModel.ANONYMOUS;//from ww w .j av a2 s . c o m final String path = WicketUtils.getPath(params).replace("%2f", "/").replace("%2F", "/"); MarkupProcessor processor = new MarkupProcessor(app().settings(), app().xssFilter()); Repository r = getRepository(); RevCommit commit = JGitUtils.getCommit(r, objectId); String[] encodings = getEncodings(); // Read raw markup content and transform it to html String documentPath = path; String markupText = JGitUtils.getStringContent(r, commit.getTree(), path, encodings); // Hunt for document if (StringUtils.isEmpty(markupText)) { String name = StringUtils.stripFileExtension(path); List<String> docExtensions = processor.getAllExtensions(); for (String ext : docExtensions) { String checkName = name + "." + ext; markupText = JGitUtils.getStringContent(r, commit.getTree(), checkName, encodings); if (!StringUtils.isEmpty(markupText)) { // found it documentPath = path; break; } } } if (markupText == null) { markupText = ""; } BugtraqProcessor bugtraq = new BugtraqProcessor(app().settings()); markupText = bugtraq.processText(getRepository(), repositoryName, markupText); Fragment fragment; String displayedCommitId = commit.getId().getName(); if (currentUser.canEdit(getRepositoryModel()) && JGitUtils.isTip(getRepository(), objectId.toString())) { final Model<String> documentContent = new Model<String>(markupText); final Model<String> commitMessage = new Model<String>("Document update"); final Model<String> commitIdAtLoad = new Model<String>(displayedCommitId); fragment = new Fragment("doc", "markupContent", EditFilePage.this); Form<Void> form = new Form<Void>("documentEditor") { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { final Repository repository = getRepository(); final String document = documentContent.getObject(); final String message = commitMessage.getObject(); final String branchName = JGitUtils.getBranch(getRepository(), objectId).getName(); final String authorEmail = StringUtils.isEmpty(currentUser.emailAddress) ? (currentUser.username + "@gitblit") : currentUser.emailAddress; boolean success = false; try { ObjectId docAtLoad = getRepository().resolve(commitIdAtLoad.getObject()); logger.trace("Commiting Edit File page: " + commitIdAtLoad.getObject()); DirCache index = DirCache.newInCore(); DirCacheBuilder builder = index.builder(); byte[] bytes = document.getBytes(Constants.ENCODING); final DirCacheEntry fileUpdate = new DirCacheEntry(path); fileUpdate.setLength(bytes.length); fileUpdate.setLastModified(System.currentTimeMillis()); fileUpdate.setFileMode(FileMode.REGULAR_FILE); fileUpdate.setObjectId(repository.newObjectInserter() .insert(org.eclipse.jgit.lib.Constants.OBJ_BLOB, bytes)); builder.add(fileUpdate); Set<String> ignorePaths = new HashSet<String>(); ignorePaths.add(path); for (DirCacheEntry entry : JGitUtils.getTreeEntries(repository, branchName, ignorePaths)) { builder.add(entry); } builder.finish(); final boolean forceCommit = false; success = JGitUtils.commitIndex(repository, branchName, index, docAtLoad, forceCommit, currentUser.getDisplayName(), authorEmail, message); } catch (IOException | ConcurrentRefUpdateException e) { e.printStackTrace(); } if (success == false) { getSession().error(MessageFormat.format(getString("gb.fileNotMergeable"), path)); return; } getSession().info(MessageFormat.format(getString("gb.fileCommitted"), path)); setResponsePage(EditFilePage.class, params); } }; final TextArea<String> docIO = new TextArea<String>("content", documentContent); docIO.setOutputMarkupId(false); form.add(new Label("commitAuthor", String.format("%s <%s>", currentUser.getDisplayName(), currentUser.emailAddress))); form.add(new TextArea<String>("commitMessage", commitMessage)); form.setOutputMarkupId(false); form.add(docIO); addBottomScriptInline( "attachDocumentEditor(document.querySelector('textarea#editor'), $('#commitDialog'));"); fragment.add(form); } else { MarkupDocument markupDoc = processor.parse(repositoryName, displayedCommitId, documentPath, markupText); final Model<String> documentContent = new Model<String>(markupDoc.html); fragment = new Fragment("doc", "plainContent", EditFilePage.this); fragment.add(new Label("content", documentContent).setEscapeModelStrings(false)); } // document page links fragment.add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class, WicketUtils.newPathParameter(repositoryName, objectId, documentPath))); fragment.add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, documentPath))); String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, documentPath); fragment.add(new ExternalLink("rawLink", rawUrl)); add(fragment); }
From source file:com.gitblit.wicket.pages.EditUserPage.java
License:Apache License
protected void setupPage(final UserModel userModel) { if (isCreate) { super.setupPage(getString("gb.newUser"), ""); } else {/*from ww w . ja v a 2s .c o m*/ 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.teams) { 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); Locale locale = userModel.getPreferences().getLocale(); if (locale == null) { locale = Locale.ENGLISH; } List<Language> languages = UserPage.getLanguages(); Language preferredLanguage = null; if (locale != null) { String localeCode = locale.getLanguage(); if (!StringUtils.isEmpty(locale.getCountry())) { localeCode += "_" + locale.getCountry(); } for (Language lang : languages) { if (lang.code.equals(localeCode)) { // language_COUNTRY match preferredLanguage = lang; } else if (preferredLanguage != null && lang.code.startsWith(locale.getLanguage())) { // language match preferredLanguage = lang; } } } final IModel<Language> language = Model.of(preferredLanguage); 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; } Language lang = language.getObject(); if (lang != null) { userModel.getPreferences().setLocale(lang.code); } // 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 = userModel.createCookie(); // 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.teams.clear(); while (selectedTeams.hasNext()) { TeamModel team = app().users().getTeamModel(selectedTeams.next()); if (team == null) { continue; } userModel.teams.add(team); } try { if (isCreate) { app().gitblit().addUser(userModel); } else { app().gitblit().reviseUser(oldName, userModel); } } catch (GitBlitException e) { error(e.getMessage()); return; } 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 AttributeModifier("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)); DropDownChoice<Language> choice = new DropDownChoice<Language>("language", language, languages); form.add(choice.setEnabled(languages.size() > 0)); 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); }
From source file:com.gitblit.wicket.pages.LuceneSearchPage.java
License:Apache License
private void setup(PageParameters params) { setupPage("", ""); // default values ArrayList<String> repositories = new ArrayList<String>(); String query = ""; boolean allRepos = false; int page = 1; int pageSize = app().settings().getInteger(Keys.web.itemsPerPage, 50); // display user-accessible selections UserModel user = GitBlitWebSession.get().getUser(); List<String> availableRepositories = new ArrayList<String>(); for (RepositoryModel model : app().repositories().getRepositoryModels(user)) { if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) { availableRepositories.add(model.name); }/*from w w w. j a v a2 s . c o m*/ } if (params != null) { String repository = WicketUtils.getRepositoryName(params); if (!StringUtils.isEmpty(repository)) { repositories.add(repository); } page = WicketUtils.getPage(params); if (!params.get("repositories").isEmpty()) { String value = params.get("repositories").toString(""); List<String> list = StringUtils.getStringsFromValue(value); repositories.addAll(list); } allRepos = params.get("allrepos").toBoolean(false); if (allRepos) { repositories.addAll(availableRepositories); } if (!params.get("query").isEmpty()) { query = params.get("query").toString(""); } else { String value = WicketUtils.getSearchString(params); String type = WicketUtils.getSearchType(params); com.gitblit.Constants.SearchType searchType = com.gitblit.Constants.SearchType.forName(type); if (!StringUtils.isEmpty(value)) { if (searchType == SearchType.COMMIT) { query = "type:" + searchType.name().toLowerCase() + " AND \"" + value + "\""; } else { query = searchType.name().toLowerCase() + ":\"" + value + "\""; } } } } boolean luceneEnabled = app().settings().getBoolean(Keys.web.allowLuceneIndexing, true); if (luceneEnabled) { if (availableRepositories.size() == 0) { info(getString("gb.noIndexedRepositoriesWarning")); } } else { error(getString("gb.luceneDisabled")); } // enforce user-accessible repository selections Set<String> uniqueRepositories = new LinkedHashSet<String>(); for (String selectedRepository : repositories) { if (availableRepositories.contains(selectedRepository)) { uniqueRepositories.add(selectedRepository); } } ArrayList<String> searchRepositories = new ArrayList<String>(uniqueRepositories); // search form final Model<String> queryModel = new Model<String>(query); final Model<ArrayList<String>> repositoriesModel = new Model<ArrayList<String>>(searchRepositories); final Model<Boolean> allreposModel = new Model<Boolean>(allRepos); SessionlessForm<Void> form = new SessionlessForm<Void>("searchForm", getClass()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String q = queryModel.getObject(); if (StringUtils.isEmpty(q)) { error(getString("gb.undefinedQueryWarning")); return; } if (repositoriesModel.getObject().size() == 0 && !allreposModel.getObject()) { error(getString("gb.noSelectedRepositoriesWarning")); return; } PageParameters params = new PageParameters(); params.add("repositories", StringUtils.flattenStrings(repositoriesModel.getObject())); params.add("query", queryModel.getObject()); params.add("allrepos", allreposModel.getObject()); LuceneSearchPage page = new LuceneSearchPage(params); setResponsePage(page); } }; ListMultipleChoice<String> selections = new ListMultipleChoice<String>("repositories", repositoriesModel, availableRepositories, new StringChoiceRenderer()); selections.setMaxRows(8); form.add(selections.setEnabled(luceneEnabled)); form.add(new TextField<String>("query", queryModel).setEnabled(luceneEnabled)); form.add(new CheckBox("allrepos", allreposModel)); form.add(new ExternalLink("querySyntax", LUCENE_QUERY_SYNTAX_LINK)); add(form.setEnabled(luceneEnabled)); // execute search final List<SearchResult> results = new ArrayList<SearchResult>(); if (!ArrayUtils.isEmpty(searchRepositories) && !StringUtils.isEmpty(query)) { results.addAll(app().repositories().search(query, page, pageSize, searchRepositories)); } // results header if (results.size() == 0) { if (!ArrayUtils.isEmpty(searchRepositories) && !StringUtils.isEmpty(query)) { add(new Label("resultsHeader", query).setRenderBodyOnly(true)); add(new Label("resultsCount", getString("gb.noHits")).setRenderBodyOnly(true)); } else { add(new Label("resultsHeader").setVisible(false)); add(new Label("resultsCount").setVisible(false)); } } else { add(new Label("resultsHeader", query).setRenderBodyOnly(true)); add(new Label("resultsCount", MessageFormat.format(getString("gb.queryResults"), results.get(0).hitId, results.get(results.size() - 1).hitId, results.get(0).totalHits)) .setRenderBodyOnly(true)); } // search results view ListDataProvider<SearchResult> resultsDp = new ListDataProvider<SearchResult>(results); final DataView<SearchResult> resultsView = new DataView<SearchResult>("searchResults", resultsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<SearchResult> item) { final SearchResult sr = item.getModelObject(); switch (sr.type) { case commit: { Label icon = WicketUtils.newIcon("type", "icon-refresh"); WicketUtils.setHtmlTooltip(icon, "commit"); item.add(icon); item.add(new LinkPanel("summary", null, sr.summary, CommitPage.class, WicketUtils.newObjectParameter(sr.repository, sr.commitId))); // show tags Fragment fragment = new Fragment("tags", "tagsPanel", LuceneSearchPage.this); List<String> tags = sr.tags; if (tags == null) { tags = new ArrayList<String>(); } ListDataProvider<String> tagsDp = new ListDataProvider<String>(tags); final DataView<String> tagsView = new DataView<String>("tag", tagsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<String> item) { String tag = item.getModelObject(); Component c = new LinkPanel("tagLink", null, tag, TagPage.class, WicketUtils.newObjectParameter(sr.repository, Constants.R_TAGS + tag)); WicketUtils.setCssClass(c, "tagRef"); item.add(c); } }; fragment.add(tagsView); item.add(fragment); break; } case blob: { Label icon = WicketUtils.newIcon("type", "icon-file"); WicketUtils.setHtmlTooltip(icon, "blob"); item.add(icon); item.add(new LinkPanel("summary", null, sr.path, BlobPage.class, WicketUtils.newPathParameter(sr.repository, sr.branch, sr.path))); item.add(new Label("tags").setVisible(false)); break; } } item.add(new Label("fragment", sr.fragment).setEscapeModelStrings(false) .setVisible(!StringUtils.isEmpty(sr.fragment))); item.add(new LinkPanel("repository", null, sr.repository, SummaryPage.class, WicketUtils.newRepositoryParameter(sr.repository))); if (StringUtils.isEmpty(sr.branch)) { item.add(new Label("branch", "null")); } else { item.add(new LinkPanel("branch", "branch", StringUtils.getRelativePath(Constants.R_HEADS, sr.branch), LogPage.class, WicketUtils.newObjectParameter(sr.repository, sr.branch))); } item.add(new Label("author", sr.author)); item.add(WicketUtils.createDatestampLabel("date", sr.date, getTimeZone(), getTimeUtils())); } }; add(resultsView.setVisible(results.size() > 0)); PageParameters pagerParams = new PageParameters(); pagerParams.add("repositories", StringUtils.flattenStrings(repositoriesModel.getObject())); pagerParams.add("query", queryModel.getObject()); boolean showPager = false; int totalPages = 0; if (results.size() > 0) { totalPages = (results.get(0).totalHits / pageSize) + (results.get(0).totalHits % pageSize > 0 ? 1 : 0); showPager = results.get(0).totalHits > pageSize; } add(new PagerPanel("topPager", page, totalPages, LuceneSearchPage.class, pagerParams) .setVisible(showPager)); add(new PagerPanel("bottomPager", page, totalPages, LuceneSearchPage.class, pagerParams) .setVisible(showPager)); }