Example usage for org.apache.wicket.model Model getObject

List of usage examples for org.apache.wicket.model Model getObject

Introduction

In this page you can find the example usage for org.apache.wicket.model Model getObject.

Prototype

@Override
    public T getObject() 

Source Link

Usage

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));
}