Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License") + you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.openmeetings.web.components.admin.labels; import org.apache.openmeetings.data.basic.FieldLanguageDao; import org.apache.openmeetings.persistence.beans.lang.FieldLanguage; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.components.ConfirmCallListener; import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.util.time.Duration; /** * Modify the language selection, add/delete {@link FieldLanguage} * * @author swagner * */ public class LangForm extends Form<Void> { private static final long serialVersionUID = 2837702941211636609L; private DropDownChoice<FieldLanguage> languages; public void updateLanguages(AjaxRequestTarget target) { FieldLanguageDao langDao = Application.getBean(FieldLanguageDao.class); languages.setChoices(langDao.getLanguages()); // add(languages); target.add(languages); } /** * Render Main * * @param id * @param listContainer * @param language * @param langPanel */ public LangForm(String id, final WebMarkupContainer listContainer, final LangPanel langPanel) { super(id); setOutputMarkupId(true); FieldLanguageDao langDao = Application.getBean(FieldLanguageDao.class); languages = new DropDownChoice<FieldLanguage>("language", new PropertyModel<FieldLanguage>(langPanel, "language"), langDao.getLanguages(), new ChoiceRenderer<FieldLanguage>("name", "language_id")); languages.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = -2055912815073387536L; @Override protected void onUpdate(AjaxRequestTarget target) { target.add(listContainer); } }); add(languages); add(new WebMarkupContainer("deleteLangBtn").add(new AjaxEventBehavior("onclick") { private static final long serialVersionUID = -1650946343073068686L; @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L)); } @Override protected void onEvent(AjaxRequestTarget target) { langPanel.language.setDeleted(true); FieldLanguageDao langDao = Application.getBean(FieldLanguageDao.class); try { langDao.updateLanguage(langPanel.language); } catch (Exception e) { // TODO add feedback message e.printStackTrace(); } languages.setChoices(langDao.getLanguages()); target.add(languages); // FIXME need to force update list container target.add(listContainer); } })); // attach an ajax validation behavior to all form component's keydown // event and throttle it down to once per second AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND); } }