List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink
public AjaxLink(final String id)
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); } }); }