Package org.geoserver.web.translator.view

Source Code of org.geoserver.web.translator.view.NewTranslationPage$LocaleInputField

/* Copyright (c) 2001 - 2009 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.translator.view;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.SubmitLink;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.geoserver.web.GeoServerBasePage;

/**
* A page to start the translation for a new {@link Locale}.
*
* @author Gabriel Roldan
* @version $Id: NewTranslationPage.java 13241 2009-08-30 05:44:14Z groldan $
* @since 2.0
*/
public class NewTranslationPage extends GeoServerBasePage {

    private Component newLanguageChoice;

    private Form newTranslationForm;

    private LocaleInputField localeInput;

    public NewTranslationPage() {
        super();

        add(newTranslationForm = new Form("newTranslationForm"));

        newLanguageChoice = newLanguageChoice();
        newTranslationForm.add(newLanguageChoice);
        newTranslationForm.add(new CheckBox("showNativeLanguageNames"));
       
        newTranslationForm.add(createNewTranslationLink());
        newTranslationForm.add(cancelLink());
        localeInput = new LocaleInputField("localeInput");
        localeInput.setOutputMarkupId(true);
        newTranslationForm.add(localeInput);
    }

    private Link cancelLink() {
        return new Link("cancel") {
            private static final long serialVersionUID = -765151069378795644L;

            @Override
            public void onClick() {
                setResponsePage(TranslationPage.class);
            }
        };
    }

    private Component newLanguageChoice() {
        // GeoServerDialog dialog = new GeoServerDialog("dialog");
        // add(dialog);
        // return new NewLanguageLink("newLanguage", dialog, translateForm.getModel());

        IModel userInterfaceLocaleModel = new Model(getLocale());
        IModel selectedLocaleModel = new Model(getLocale());
        IModel choices = new NonTranslatedLocalesDetachableModel();
        final LocaleDropDown localeDropDown = new LocaleDropDown("newTranslationLanguage",
                userInterfaceLocaleModel, selectedLocaleModel, choices);

        localeDropDown.add(new OnChangeAjaxBehavior() {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onUpdate(final AjaxRequestTarget target) {
                Locale newTranslation = (Locale) newLanguageChoice.getModelObject();
                localeInput.setValue(newTranslation);
                target.addComponent(localeInput);
            }
        });

        // localeDropDown.add(new AjaxFormSubmitBehavior(newTranslationForm, "onchange") {
        // private static final long serialVersionUID = 1L;
        //
        // @Override
        // protected void onSubmit(final AjaxRequestTarget target) {
        // }
        //
        // @Override
        // protected void onError(AjaxRequestTarget arg0) {
        // // TODO Auto-generated method stub
        //
        // }
        // });
        return localeDropDown;
    }

    private Component createNewTranslationLink() {
        SubmitLink submitLink = new SubmitLink("createLanguage", newTranslationForm) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onSubmit() {
                error("Not yet implemented");
            }
        };

        return submitLink;
    }

    private class NonTranslatedLocalesDetachableModel extends LoadableDetachableModel {

        private static final long serialVersionUID = 8363152206993598511L;

        @Override
        protected Object load() {
            // TranslateBean translateState = (TranslateBean)
            // NewLanguagePanel.this.getModelObject();
            // Set<Locale> availableTranslations = translateState.getAvailableTranslations();

            Set<Locale> nonTranslated = new HashSet<Locale>(Arrays.asList(Locale
                    .getAvailableLocales()));
            // nonTranslated.removeAll(availableTranslations);

            List<Locale> choices = new ArrayList<Locale>(nonTranslated);
            {
                final Locale userInterfaceLocale = NewTranslationPage.this.getLocale();
                Collections.sort(choices, new Comparator<Locale>() {
                    public int compare(Locale o1, Locale o2) {
                        return o1.getDisplayName(o1).compareTo(o2.getDisplayName(o2));
                    }
                });
            }
            return choices;
        }
    }

    public static class LocaleInputField extends Panel {
        private static final long serialVersionUID = 1L;

        private TextField language;

        private TextField country;

        private TextField variant;

        public LocaleInputField(final String id) {
            super(id);
            add(language = new TextField("language", new Model("")));
            add(country = new TextField("country", new Model("")));
            add(variant = new TextField("variant", new Model("")));

            language.setRequired(true);
        }

        public void setValue(final Locale locale) {
            if (locale == null) {
                language.setModelObject(null);
                country.setModelObject(null);
                variant.setModelObject(null);
            } else {
                language.setModelObject(locale.getLanguage());
                country.setModelObject(locale.getCountry());
                variant.setModelObject(locale.getVariant());
            }
        }

        public String getLanguage() {
            return language.getValue() == null ? "" : language.getValue();
        }

        public String getCountry() {
            return country.getValue() == null ? "" : country.getValue();
        }

        public String getVariant() {
            return variant.getValue() == null ? "" : variant.getValue();
        }
    }

}
TOP

Related Classes of org.geoserver.web.translator.view.NewTranslationPage$LocaleInputField

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.