Example usage for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink.

Prototype

public AjaxLink(final String id) 

Source Link

Document

Construct.

Usage

From source file:net.rrm.ehour.ui.common.panel.entryselector.EntrySelectorPanel.java

License:Open Source License

private void addHideInactiveFilter(Form<Void> form) {
    final HideInactiveFilter hideInactiveFilter = new HideInactiveFilter();
    hideInactiveFilter.setHideInactive(getEhourWebSession().getHideInactiveSelections());

    final WebMarkupContainer filterIcon = new WebMarkupContainer("filterIcon");
    addFilterIconAttributes(filterIcon, getEhourWebSession().getHideInactiveSelections());
    filterIcon.setOutputMarkupId(true);//from   w  ww  . j  a v a  2  s . c  o m

    final AjaxLink<Void> hideInactiveLink = new AjaxLink<Void>("filterToggle") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            Boolean hideInactiveSelections = getEhourWebSession().toggleHideInactiveSelections();
            HideInactiveFilter inactiveFilter = new HideInactiveFilter(hideInactiveSelections);
            send(getPage(), Broadcast.DEPTH, new InactiveFilterChangedEvent(inactiveFilter, target));

            target.appendJavaScript(jsRefresh());

            filterIcon.removeAll();
            addFilterIconAttributes(filterIcon, getEhourWebSession().getHideInactiveSelections());
            target.add(filterIcon);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);

            attributes.getAjaxCallListeners().add(new LoadingSpinnerDecorator());
        }
    };

    hideInactiveLink.setVisible(showHideInactiveLink);
    hideInactiveLink.add(filterIcon);
    form.add(hideInactiveLink);
}

From source file:net.rrm.ehour.ui.manage.assignment.AssignmentListPanel.java

License:Open Source License

private ListView<ProjectAssignment> getProjectAssignmentLists(
        final List<ProjectAssignment> projectAssignments) {
    assignmentListView = new ListView<ProjectAssignment>("assignments", projectAssignments) {
        @Override// w  w w.j av a 2  s  .co m
        protected void populateItem(ListItem<ProjectAssignment> item) {
            final ProjectAssignment assignment = item.getModelObject();

            AjaxLink<Void> link = new AjaxLink<Void>("itemLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    EventPublisher.publishAjaxEvent(AssignmentListPanel.this,
                            new PayloadAjaxEvent<>(AssignmentAjaxEventType.ASSIGNMENT_EDIT, assignment));
                }
            };

            AjaxLink<Void> imgLink = new AjaxLink<Void>("imgLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    EventPublisher.publishAjaxEvent(AssignmentListPanel.this,
                            new PayloadAjaxEvent<>(AssignmentAjaxEventType.ASSIGNMENT_EDIT, assignment));
                }
            };

            item.add(imgLink);
            item.add(link);
            link.add(new Label("project", assignment.getProject().getFullName()));
            item.add(new Label("customer", assignment.getProject().getCustomer().getFullName()));

            Label dateStart = new Label("dateStart",
                    new DateModel(assignment.getDateStart(), config, DateModel.DATESTYLE_FULL_SHORT));
            dateStart.setEscapeModelStrings(false);
            item.add(dateStart);

            Label dateEnd = new Label("dateEnd",
                    new DateModel(assignment.getDateEnd(), config, DateModel.DATESTYLE_FULL_SHORT));
            dateEnd.setEscapeModelStrings(false);
            item.add(dateEnd);

            item.add(new Label("assignmentType", new ResourceModel(
                    WebUtils.getResourceKeyForProjectAssignmentType(assignment.getAssignmentType()))));

            item.add(new Label("role",
                    (StringUtils.isBlank(assignment.getRole())) ? "--" : assignment.getRole()));

            item.add(new Label("currency",
                    Currency.getInstance(config.getCurrency()).getSymbol(config.getCurrency())));
            item.add(new Label("rate", new Model<>(assignment.getHourlyRate())));

        }
    };

    return assignmentListView;
}

From source file:net.rrm.ehour.ui.report.panel.criteria.ReportCriteriaPanel.java

License:Open Source License

private void addCustomerSelection(final ReportCriteriaBackingBean bean, WebMarkupContainer parent) {
    customers = new ListMultipleChoice<>("reportCriteria.userSelectedCriteria.customers",
            new PropertyModel<Collection<Customer>>(bean, "reportCriteria.userSelectedCriteria.customers"),
            new PropertyModel<List<Customer>>(bean, "reportCriteria.availableCriteria.customers"),
            new DomainObjectChoiceRenderer<Customer>());
    customers.setMarkupId("customerSelect");
    customers.setMaxRows(MAX_CRITERIA_ROW);

    customers.setOutputMarkupId(true);//from  w ww  . ja va 2 s  . co m

    customers.add(new AjaxFormComponentUpdatingBehavior("change") {
        private static final long serialVersionUID = -5588313671121851508L;

        protected void onUpdate(AjaxRequestTarget target) {
            // show only projects for selected customers
            List<Customer> preCustomers = Lists
                    .newArrayList(bean.getReportCriteria().getAvailableCriteria().getCustomers());

            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS);

            List<Customer> postCustomers = bean.getReportCriteria().getAvailableCriteria().getCustomers();

            if (!preCustomers.containsAll(postCustomers)) {
                updateCustomers(target);
            }
            updateProjects(target);
        }
    });

    parent.add(customers);

    final AjaxCheckBox deactivateBox = new AjaxCheckBox(
            "reportCriteria.userSelectedCriteria.onlyActiveCustomers") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            updateCustomersAndProjects(target);
        }
    };
    deactivateBox.setOutputMarkupId(true);
    parent.add(deactivateBox);

    final DropDownChoice<Sort> customerSort = createCustomerSort();
    parent.add(customerSort);

    parent.add(new AjaxLink<Void>("clearCustomer") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            bean.getReportCriteria().getUserSelectedCriteria().resetCustomerSelection();

            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS);

            updateCustomers(target);
            updateProjects(target);

            target.appendJavaScript(getCustomerFilterClearScript());

            target.add(customerSort);
            target.add(deactivateBox);
        }
    });
}

From source file:net.rrm.ehour.ui.report.panel.criteria.ReportCriteriaPanel.java

License:Open Source License

private void addProjectSelection(final ReportCriteriaBackingBean bean, WebMarkupContainer parent) {
    projects = new ListMultipleChoice<>("reportCriteria.userSelectedCriteria.projects",
            new PropertyModel<List<Project>>(bean, "reportCriteria.availableCriteria.projects"),
            new DomainObjectChoiceRenderer<Project>());
    projects.setMaxRows(MAX_CRITERIA_ROW);
    projects.setOutputMarkupId(true);/*from  w  ww  .  j a v a 2s. c o m*/
    projects.setMarkupId("projectSelect");

    projects.add(new AjaxFormComponentUpdatingBehavior("change") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {

        }
    });

    parent.add(projects);

    final AjaxCheckBox onlyActiveCheckbox = new AjaxCheckBox(
            "reportCriteria.userSelectedCriteria.onlyActiveProjects") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS);
            updateCustomers(target);
            updateProjects(target);
        }
    };
    onlyActiveCheckbox.setOutputMarkupId(true);
    parent.add(onlyActiveCheckbox);

    final AjaxCheckBox billableCheckbox = new AjaxCheckBox(
            "reportCriteria.userSelectedCriteria.onlyBillableProjects",
            new PropertyModel<Boolean>(ReportCriteriaPanel.this.getDefaultModel(),
                    "reportCriteria.userSelectedCriteria.onlyBillableProjects")) {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS);
            updateProjects(target);
        }
    };

    billableCheckbox.setMarkupId("reportCriteria.userSelectedCriteria.onlyBillableProjects");
    billableCheckbox.setOutputMarkupId(true);
    parent.add(billableCheckbox);

    final DropDownChoice<Sort> projectSort = createProjectSort();
    parent.add(projectSort);

    parent.add(new AjaxLink<Void>("clearProject") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            bean.getReportCriteria().getUserSelectedCriteria().resetProjectSelection();

            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS);

            updateCustomers(target);
            updateProjects(target);

            target.appendJavaScript(getProjectFilterClearScript());

            target.add(projectSort);
            target.add(billableCheckbox);
            target.add(onlyActiveCheckbox);
        }
    });
}

From source file:net.rrm.ehour.ui.report.panel.criteria.ReportCriteriaPanel.java

License:Open Source License

private void addUserSelection(final ReportCriteriaBackingBean bean, WebMarkupContainer parent) {
    users = new ListMultipleChoice<>("reportCriteria.userSelectedCriteria.users",
            new PropertyModel<List<User>>(getDefaultModel(), "reportCriteria.availableCriteria.users"),
            new DomainObjectChoiceRenderer<User>());
    users.setMarkupId("userSelect");
    users.setOutputMarkupId(true);//  w ww  . ja v a2 s.  com
    users.setMaxRows(MAX_CRITERIA_ROW);
    parent.add(users);

    // hide active checkbox
    final AjaxCheckBox deactivateBox = new AjaxCheckBox("reportCriteria.userSelectedCriteria.onlyActiveUsers") {
        private static final long serialVersionUID = 2585047163449150793L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_USERS_AND_DEPTS);
            target.add(users);

            // reapply the filter to the possible new contents of the dropdowns
            target.appendJavaScript(getUserFilterRegistrationScript());
        }
    };

    parent.add(deactivateBox);

    Label filterToggleText = new Label("onlyActiveUsersLabel", new ResourceModel("report.onlyActiveUsers"));
    parent.add(filterToggleText);

    parent.add(new AjaxLink<Void>("clearUser") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            bean.getReportCriteria().getUserSelectedCriteria().resetUserSelection();

            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_USERS_AND_DEPTS);

            updateUsers(target);
            updateDepartments(target);

            target.appendJavaScript(getUserFilterClearScript());
        }
    });
}

From source file:net.rrm.ehour.ui.report.panel.criteria.ReportCriteriaPanel.java

License:Open Source License

private void addUserDepartmentSelection(final ReportCriteriaBackingBean bean, WebMarkupContainer parent) {
    departments = new ListMultipleChoice<>("reportCriteria.userSelectedCriteria.userDepartments",
            new PropertyModel<List<UserDepartment>>(getDefaultModel(),
                    "reportCriteria.availableCriteria.userDepartments"),
            new DomainObjectChoiceRenderer<UserDepartment>());
    departments.setMarkupId("departmentSelect");
    departments.setMaxRows(MAX_CRITERIA_ROW);
    departments.setOutputMarkupId(true);

    // update projects when customer(s) selected
    departments.add(new AjaxFormComponentUpdatingBehavior("change") {
        private static final long serialVersionUID = 1L;

        protected void onUpdate(AjaxRequestTarget target) {
            // show only projects for selected customers
            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_USERS_AND_DEPTS);
            target.add(users);/*from  w ww. j av a  2s. c om*/
        }
    });

    parent.add(departments);

    parent.add(new AjaxLink<Void>("clearDepartment") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            bean.getReportCriteria().getUserSelectedCriteria().resetUserDepartmentSelection();

            updateReportCriteria(ReportCriteriaUpdateType.UPDATE_USERS_AND_DEPTS);

            updateUsers(target);
            updateDepartments(target);

            target.appendJavaScript(getDepartmentFilterClearScript());
        }
    });
}

From source file:net.rrm.ehour.ui.timesheet.panel.ProjectOverviewPanel.java

License:Open Source License

/**
 * Create fold link (also contains the creation of the summary row)
 *///from  ww  w.j  a va2  s. c  om
@SuppressWarnings("serial")
private Component createFoldLink(final Component original) {
    AjaxLink<String> foldLink = new AjaxLink<String>(ID_FOLD_LINK) {
        @Override
        public void onClick(AjaxRequestTarget target) {
            boolean isVisible = original.isVisible();

            original.setVisible(!isVisible);
            target.add(original);

            WebMarkupContainer img = createFoldImage(!isVisible);
            this.get(ID_FOLD_IMG).replaceWith(img);
            target.add(img);
        }
    };

    final WebMarkupContainer originalImage = createFoldImage(false);
    foldLink.add(originalImage);
    return foldLink;
}

From source file:net.rrm.ehour.ui.timesheet.panel.TimesheetRowList.java

License:Open Source License

private Component createBookWholeWeekLink(final TimesheetRow row, final String bookWholeWeek) {
    final AjaxLink<Void> link = new AjaxLink<Void>(bookWholeWeek) {
        private static final long serialVersionUID = -663239917205218384L;

        @Override// w  w  w .  j a  va 2 s. co m
        public void onClick(AjaxRequestTarget target) {
            row.bookRemainingHoursOnRow();
            target.add(form);
        }
    };
    link.setVisible(EhourWebApplication.get().isBookWholeWeekEnabled() && !row.getTimesheet().isAnyLocked());
    return link;
}

From source file:nl.knaw.dans.dccd.web.datapanels.ObjectTypeSelectionPanel.java

License:Apache License

public ObjectTypeSelectionPanel(String id, IModel<?> model) {
    super(id, model);

    EntityAttribute attr = (EntityAttribute) this.getDefaultModelObject();
    // assume object is a ControlledVoc
    final ControlledVoc cvoc = (ControlledVoc) attr.getEntryObject();

    // TESTING//from   w w w. j a v a2 s  . c  o  m
    //String labelStr = "";
    //if (cvoc != null && cvoc.isSetValue())
    //   labelStr = cvoc.getValue();
    //Label label = new Label("label", "Initial term: " + labelStr);
    //add(label);

    // Build multilingual selectable table
    // first just a table... ListView
    MultiLingualTridasTerms terms = DccdVocabularyService.getService()
            .getMultiLingualTridasTerms("object.type");

    final int descriptionIndex = terms.getDescriptionIndex();

    final int MAX_LANG = 4; // Note: fixed in html

    // iterate the lines
    List<List<String>> termLines = terms.getTermLines();
    ListView<List<String>> termlist = new ListView<List<String>>("termlist", termLines) {
        private static final long serialVersionUID = -3651087863165431582L;

        protected void populateItem(ListItem item) {
            List<String> line = (List<String>) item.getModel().getObject();

            // fixed to columns max.
            for (int i = 0; i < MAX_LANG; i++) {
                if (line.size() < (i + 1)) {
                    item.add(new Label("term_" + i, ""));//empty
                } else {
                    // TODO make selectable...
                    //item.add(new Label("term_"+i, line.get(i)));
                    final String termStr = line.get(i);
                    // Note: could use AjaxFallbackLink, but without Ajax DCCD is almost unusable...
                    AjaxLink link = new AjaxLink("linkterm_" + i) {
                        private static final long serialVersionUID = -1L;

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            selectedTerm = termStr;

                            logger.debug("selected term: " + selectedTerm);

                            // update
                            cvoc.setValue(selectedTerm);
                            onSelectionChanged(target);
                        }
                    };
                    item.add(link);
                    link.add(new Label("term_" + i, termStr));
                }
            }

            // description
            if (descriptionIndex >= MAX_LANG) {
                item.add(new Label("term_description", line.get(descriptionIndex)));
            } else {
                item.add(new Label("term_description", ""));// empty
            }
        }
    };
    add(termlist);
    termlist.setReuseItems(true); // speedup, the list is not changing during a session!

    // Add headers for the columns
    for (int i = 0; i < MAX_LANG; i++) {
        String languageCode = terms.getLanguageCode(i);

        if (languageCode.isEmpty())
            add(new Label("title_" + i, ""));//empty
        else
            add(new Label("title_" + i, languageCode.toUpperCase())); // TODO get display string for this code
    }

    // TODO could make this into a sortable pagable GridView....

}

From source file:nl.knaw.dans.dccd.web.entitytree.EntityTreePanel.java

License:Apache License

public EntityTreePanel(String id, IModel model, final ProjectPermissionLevel permissionLevel,
        final boolean entitiesEditable) {
    super(id, model);
    this.entitiesEditable = entitiesEditable;

    // assume DendroProject is the model object
    Project project = (Project) model.getObject();
    EntityTree entityTree = project.entityTree;

    // build the UI tree model
    EntityUITreeBuilder treeBuilder = new EntityUITreeBuilder(entitiesEditable);
    ProjectEntity projectEntity = entityTree.getProjectEntity();
    DefaultMutableTreeNode rootNode = treeBuilder.buildProjectUINodesTree(projectEntity, permissionLevel);
    treeModel = new DefaultTreeModel(rootNode);

    // create the UI tree with the model
    linkTree = new LinkTree("tree", treeModel) {
        private static final long serialVersionUID = 8851142522578546998L;

        @Override//  ww w.jav a 2 s. c om
        protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target) {

            if (!tree.getTreeState().isNodeSelected(node)) {
                logger.debug("node is deselected, reselecting in order to disable this!");
                // select again, forcing single selection!
                // it is a hack, when clicking doesn't work it should not
                // look clickable...
                tree.getTreeState().selectNode(node, true);
                return;
            }

            //logger.info("clicked: " + node);
            // the resources are in DccdAttrPanel.xml etc. ?
            ResourceModel nameModel = new ResourceModel("entity_name_" + node.toString(), node.toString());
            logger.debug("clicked: " + nameModel.getObject().toString());

            // I know it's a DefaultMutableTreeNode
            EntityUITreeNodeModel nodeModel = (EntityUITreeNodeModel) ((DefaultMutableTreeNode) node)
                    .getUserObject();

            // let others do their thing
            onSelectionChanged(nodeModel, tree, target);
        }

        // When we edit in a form we might have unsaved changes, 
        // add a behavior on each link to show a confirm dialog
        @Override
        public MarkupContainer newLink(String id, ILinkCallback callback) {
            MarkupContainer newLink = super.newLink(id, callback);

            if (entitiesEditable) {
                String condition = "formOnRender != (formBeforeSubmit=Wicket.Form.doSerialize(getFormWatched()))";
                String message = getString("unsavedchanges_entitychange_message");

                newLink.add(new ConditionalLinkConfirmationBehavior(message, condition));
            }
            return newLink;
        }

        /*
        // Trying to change the looks of invalid nodes... 
        // extending AttributeModifier might be what we want... but with css it is tricky
        class AddCSSClassBehavior extends AbstractBehavior {
           private static final long   serialVersionUID   = 1L;
                
           @Override
           public void onComponentTag(Component component, ComponentTag tag)
           {
              super.onComponentTag(component, tag);
                      
              //String classes = tag.getAttributes().getString("class");
              //logger.debug("CSS Class: " + classes);
              logger.debug("---> Changing tag: " + tag.getName());
                      
              // As a test just set the background to yellow
              tag.getAttributes().put("style", "background-color:yellow;");
              // but we don't have control over the content inside
              // We could have a JavaScript (jQuery possibly) 
              // to fix all the inside of the tags marked wit the class   
           }
        };
        @Override
        protected Component newNodeComponent(String id, IModel<Object> model)
        {
           Component component = super.newNodeComponent(id, model);
           //logger.debug("---> id: " + id); 
                   
           // Note: these are the table cells on the row with the link
           component.add(new AddCSSClassBehavior());
                   
           return component;
        }
        */

    };
    //linkTree.getTreeState().expandAll();
    // Have the toplevel of the tree expanded
    linkTree.getTreeState().expandNode(rootNode);

    add(linkTree);

    // selection, initial
    linkTree.getTreeState().selectNode(rootNode, true);

    //--- Tree expand/collapse 

    add(new AjaxLink("expandAll") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            linkTree.getTreeState().expandAll();
            linkTree.updateTree(target);
        }
    });

    add(new AjaxLink("collapseAll") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            linkTree.getTreeState().collapseAll();
            linkTree.updateTree(target);
        }
    });

}