Example usage for org.apache.commons.lang StringUtils startsWithAny

List of usage examples for org.apache.commons.lang StringUtils startsWithAny

Introduction

In this page you can find the example usage for org.apache.commons.lang StringUtils startsWithAny.

Prototype

public static boolean startsWithAny(String string, String[] searchStrings) 

Source Link

Document

Check if a String starts with any of an array of specified strings.

Usage

From source file:msi.gaml.types.GamaType.java

@Override
public String asPattern() {
    final boolean vowel = StringUtils.startsWithAny(name, vowels);
    return "${" + (vowel ? "an_" : "a_") + name + "}";
}

From source file:com.adobe.acs.commons.wcm.views.impl.WCMViewsFilter.java

/**
 * Determines if the filter should process this request.
 *
 * @param request the request//  w w  w.ja  va 2s.  co  m
 * @return true is the filter should attempt to process
 */
@SuppressWarnings("squid:S3776")
private boolean accepts(final SlingHttpServletRequest request) {
    final PageManager pageManager = request.getResourceResolver().adaptTo(PageManager.class);
    final Resource resource = request.getResource();

    // Only process requests that match the include path prefixes if any are provided
    if (ArrayUtils.isEmpty(this.includePathPrefixes)
            || (!StringUtils.startsWithAny(request.getResource().getPath(), this.includePathPrefixes))) {
        return false;
    }

    // If the WCM Views on Request is set to disabled; do not process
    if (this.getRequestViews(request).contains(WCM_VIEW_DISABLED)) {
        return false;
    }

    // Only process resources that are part of a Page
    if (pageManager.getContainingPage(request.getResource()) == null) {
        return false;
    }

    final Node node = request.getResource().adaptTo(Node.class);

    if (node != null) {
        try {
            // Do not process cq:Page or cq:PageContent nodes as this will break all sorts of things,
            // and they dont have dropzone of their own
            if (node.isNodeType(NameConstants.NT_PAGE) || node.isNodeType("cq:PageContent") // Do not process Page node inclusions
                    || JcrConstants.JCR_CONTENT.equals(node.getName())) { // Do not process Page jcr:content nodes (that may not have the cq:PageContent jcr:primaryType)
                return false;
            }
        } catch (RepositoryException e) {
            log.error("Repository exception prevented WCM Views Filter "
                    + "from determining if the resource is acceptable", e);
            return false;
        }
    }

    if (CollectionUtils.isNotEmpty(this.resourceTypesIncludes)) {
        for (final Pattern pattern : this.resourceTypesIncludes) {
            final Matcher matcher = pattern.matcher(resource.getResourceType());

            if (matcher.matches()) {
                return true;
            }
        }

        return false;
    }

    return true;
}

From source file:$.MessageLogParser.java

/**
     * Gets lines which corresponds with specified correlation ID from the specified log file.
     */*from   w ww  . j a v  a  2s. com*/
     * @param logFile the log file
     * @param correlationId the correlation ID
     * @return log lines
     * @throws IOException when error occurred during file reading
     */
    private List<String> getLogLines(File logFile, String correlationId) throws IOException {
        List<String> logLines = new ArrayList<String>();

        Log.debug("Go through the following log file: " + logFile);

        int year = Calendar.getInstance().get(Calendar.YEAR);
        String[] possibleYears = new String[] { String.valueOf(year - 1), String.valueOf(year) };

        InputStream stream = null;
        try {
            if (logFile.getName().endsWith(GZIP_FILE_EXTENSION)) {
                stream = new GZIPInputStream(new BufferedInputStream(new FileInputStream(logFile)));
            } else {
                stream = new BufferedInputStream(new FileInputStream(logFile));
            }

            LineIterator it = IOUtils.lineIterator(stream, Charset.defaultCharset());

            String requestId = null;
            boolean lastCorrectLine = false; // if previous log line belongs to requestId
            while (it.hasNext()) {
                String line = it.nextLine();

                if (requestId == null) {
                    if (StringUtils.contains(line, correlationId)) {
                        logLines.add(formatLogLine(line));

                        // finds requestID
                        requestId = getRequestId(line);

                        if (requestId != null) {
                            Log.debug("correlationId (" + correlationId + ") => requestId (" + requestId + ")");
                        }
                    }
                } else {
                    // adds lines with requestID and lines that belongs to previous log record (e.g. XML request)
                    //  it's better to check also correlationID because it's not one request ID
                    //  for all repeated scheduled jobs for processing of partly failed messages

                    // 2013-05-23 20:22:36,754 [MACHINE_IS_UNDEFINED, ajp-bio-8009-exec-19, /esb/ws/account/v1, ...
                    // <checkCustomerCreditRequest xmlns="cleverbus.org/ws/AccountService-v1">
                    //    <firstName>csd</firstName>
                    //    <lastName>acs</lastName>
                    //    <birthNumber>111111/1111</birthNumber>
                    // </checkCustomerCreditRequest>

                    if (StringUtils.contains(line, requestId) || (StringUtils.contains(line, correlationId))
                            || (lastCorrectLine && !StringUtils.startsWithAny(line, possibleYears))) {
                        logLines.add(formatLogLine(line));
                        lastCorrectLine = true;
                    } else {
                        lastCorrectLine = false;
                    }
                }
            }
        } finally {
            IOUtils.closeQuietly(stream);
        }

        return logLines;
    }

From source file:au.org.ala.delta.intkey.ui.UIUtils.java

/**
 * Prompts for a file using the file chooser dialog
 * /*  ww w  . ja v  a  2  s .c  o  m*/
 * @param fileExtensions
 *            Accepted file extensions - must be null if filePrefixes is
 *            non-null
 * @param filePrefixes
 *            Accepted file prefixes - must be null if fileExtensions is
 *            non-null
 * @param description
 *            Description of the acceptable files
 * @param createFileIfNonExistant
 *            if true, the file will be created if it does not exist. Also,
 *            the system's "save" will be used instead of the "open" dialog.
 * @param startBrowseDirectory
 *            The directory that the file chooser should start in
 * @param parent
 *            parent component for the file chooser
 * @return the selected file, or null if no file was selected.
 * @throws IOException
 */
public static File promptForFile(List<String> fileExtensions, List<String> filePrefixes,
        final String description, boolean createFileIfNonExistant, File startBrowseDirectory, Component parent)
        throws IOException {
    if (fileExtensions != null && filePrefixes != null) {
        throw new IllegalArgumentException(
                "Only one of the file extensions or file prefixes should be non-null");
    }

    JFileChooser chooser = new JFileChooser(startBrowseDirectory);
    FileFilter filter;

    if (fileExtensions != null) {
        String[] extensionsArray = new String[fileExtensions.size()];
        fileExtensions.toArray(extensionsArray);
        filter = new FileNameExtensionFilter(description, extensionsArray);
    } else {
        final String[] prefixesArray = new String[filePrefixes.size()];
        filePrefixes.toArray(prefixesArray);
        filter = new FileFilter() {

            @Override
            public String getDescription() {
                return description;
            }

            @Override
            public boolean accept(File f) {
                if (f.isDirectory()) {
                    return true;
                } else {
                    return StringUtils.startsWithAny(f.getName(), prefixesArray);
                }
            }
        };
    }
    chooser.setFileFilter(filter);

    int returnVal;

    if (createFileIfNonExistant) {
        returnVal = chooser.showSaveDialog(parent);
    } else {
        returnVal = chooser.showOpenDialog(parent);
    }

    if (returnVal == JFileChooser.APPROVE_OPTION) {

        if (createFileIfNonExistant) {
            File file = chooser.getSelectedFile();

            if (!file.exists()) {
                // if only one file extension was supplied and the filename
                // does
                // not end with this extension, add it before
                // creating the file
                if (fileExtensions.size() == 1) {
                    String extension = fileExtensions.get(0);
                    String filePath = chooser.getSelectedFile().getAbsolutePath();
                    if (!filePath.endsWith(extension)) {
                        file = new File(filePath + "." + extension);
                    }
                }

                file.createNewFile();
            }
            return file;
        } else {
            return chooser.getSelectedFile();
        }
    } else {
        return null;
    }
}

From source file:com.adobe.acs.commons.wcm.impl.AemEnvironmentIndicatorFilter.java

@SuppressWarnings("squid:S3923")
private boolean accepts(final HttpServletRequest request) {
    if (StringUtils.isBlank(css) && StringUtils.isBlank(titlePrefix)) {
        // Only accept is properly configured
        log.warn("AEM Environment Indicator is not properly configured; If this feature is unwanted, "
                + "remove the OSGi configuration and disable completely.");
        return false;
    } else if (!StringUtils.equalsIgnoreCase("get", request.getMethod())) {
        // Only inject on GET requests
        return false;
    } else if (StringUtils.startsWithAny(request.getRequestURI(), REJECT_PATH_PREFIXES)) {
        // Reject any request to well-known rejection-worthy path prefixes
        return false;
    } else if (StringUtils.equals(request.getHeader("X-Requested-With"), "XMLHttpRequest")) {
        // Do not inject into XHR requests
        return false;
    } else if (StringUtils.endsWith(request.getHeader("Referer"), "/editor.html" + request.getRequestURI())) {
        // Do not apply to pages loaded in the TouchUI editor.html
        return false;
    } else if (StringUtils.endsWith(request.getHeader("Referer"), "/cf")) {
        // Do not apply to pages loaded in the Classic Content Finder
        return false;
    }//from   w w  w .j a  va  2 s . c om
    return true;
}

From source file:msi.gaml.types.ParametricType.java

@Override
public String asPattern() {
    final boolean vowel = StringUtils.startsWithAny(type.getName(), vowels);
    return "${" + (vowel ? "an_" : "a_") + serialize(true) + "}";
}

From source file:ips1ap101.lib.core.jsf.JSF.java

public static void validateInputFile(Part file, String label, long maxSize, String[] validTypes) {
    long size;//from  w  w w.  j av  a  2  s .c om
    String type;
    String summary;
    FacesMessage message;
    List<FacesMessage> messages = new ArrayList<>();
    size = file.getSize();
    type = file.getContentType();
    if (size < INPUT_FILE_MIN_SIZE) {
        summary = Bitacora.getTextoMensaje(CBM.UPLOAD_ROW_EXCEPTION_1, label, INPUT_FILE_MIN_SIZE);
        message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, null);
        messages.add(message);
    }
    if (size > maxSize) {
        summary = Bitacora.getTextoMensaje(CBM.UPLOAD_ROW_EXCEPTION_2, label, maxSize);
        message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, null);
        messages.add(message);
    }
    if (validTypes != null && validTypes.length > 0) {
        if (StringUtils.startsWithAny(type, validTypes)) {
        } else {
            summary = Bitacora.getTextoMensaje(CBM.UPLOAD_ROW_EXCEPTION_3, label, type);
            message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, null);
            messages.add(message);
        }
    }
    if (messages.isEmpty()) {
    } else {
        throw new ValidatorException(messages);
    }
}

From source file:eu.apenet.dpt.standalone.gui.eag2012.EagAccessAndServicesPanel.java

@Override
protected JComponent buildEditorPanel(List<String> errors) {
    if (errors == null)
        errors = new ArrayList<String>(0);
    else if (Utilities.isDev && errors.size() > 0) {
        LOG.info("Errors in form:");
        for (String error : errors) {
            LOG.info(error);/*w  w w .  j a  va  2s .c o  m*/
        }
    }

    FormLayout layout = new FormLayout("right:max(50dlu;p), 4dlu, 100dlu, 7dlu, right:p, 4dlu, 100dlu",
            EDITOR_ROW_SPEC);

    layout.setColumnGroups(new int[][] { { 1, 3, 5, 7 } });
    PanelBuilder builder = new PanelBuilder(layout);

    builder.setDefaultDialogBorder();
    CellConstraints cc = new CellConstraints();

    rowNb = 1;

    Repository repository = eag.getArchguide().getDesc().getRepositories().getRepository().get(repositoryNb);

    //opening hours
    if (repository.getTimetable().getOpening().size() == 0) {
        repository.getTimetable().getOpening().add(new Opening());
    }
    openingHoursTfs = new ArrayList<TextAreaWithLanguage>(repository.getTimetable().getOpening().size());
    for (int i = 0; i < repository.getTimetable().getOpening().size(); i++) {
        Opening opening = repository.getTimetable().getOpening().get(i);
        //remove * from second ahead
        if (i == 0)
            builder.addLabel(labels.getString("eag2012.commons.openingHours") + "*", cc.xy(1, rowNb));
        else
            builder.addLabel(labels.getString("eag2012.commons.openingHours"), cc.xy(1, rowNb));

        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(opening.getContent(),
                opening.getLang());
        openingHoursTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    if (errors.contains("openingHoursTfs")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.openingHours")), cc.xy(1, rowNb));
        setNextRow();
    }
    //add opening hours button
    JButton addOpeningHoursBtn = new ButtonTab(labels.getString("eag2012.commons.addOpeningHours"));
    builder.add(addOpeningHoursBtn, cc.xy(1, rowNb));
    addOpeningHoursBtn.addActionListener(new AddOpeningHoursBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (repository.getTimetable().getClosing().size() == 0) {
        repository.getTimetable().getClosing().add(new Closing());
    }
    closingDatesTfs = new ArrayList<TextAreaWithLanguage>(repository.getTimetable().getClosing().size());
    for (Closing closing : repository.getTimetable().getClosing()) {
        builder.addLabel(labels.getString("eag2012.commons.closingDates"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(closing.getContent(),
                closing.getLang());
        closingDatesTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addClosingDatesBtn = new ButtonTab(labels.getString("eag2012.commons.addClosingDates"));
    builder.add(addClosingDatesBtn, cc.xy(1, rowNb));
    addClosingDatesBtn.addActionListener(new AddClosingDatesBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (repository.getDirections().size() == 0)
        repository.getDirections().add(new Directions());
    travellingDirectionsTfs = new ArrayList<TextAreaWithLanguage>(repository.getDirections().size());
    for (Directions directions : repository.getDirections()) {
        builder.addLabel(labels.getString("eag2012.accessAndServices.travellingDirections"), cc.xy(1, rowNb));
        String str = "";
        String citation = "";
        for (Object obj : directions.getContent()) {
            if (obj instanceof String) {
                str += (String) obj;
            } else if (obj instanceof Citation) {
                citation += ((Citation) obj).getHref();
            }
        }
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(str, directions.getLang(),
                citation);
        travellingDirectionsTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.accessAndServices.link"), cc.xy(1, rowNb));
        builder.add(textAreaWithLanguage.getExtraField(), cc.xy(3, rowNb));
        setNextRow();
        if (errors.contains("travellingDirectionsTfs")) {
            if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText()) && !StringUtils
                    .startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText())
                && !StringUtils.startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }

    JButton addTravellingDirectionsBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addTravellingDirections"));
    builder.add(addTravellingDirectionsBtn, cc.xy(1, rowNb));
    addTravellingDirectionsBtn.addActionListener(new AddTravellingDirectionsBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.commons.accessiblePublic") + "*", cc.xy(1, rowNb));
    if (Arrays.asList(yesOrNo).contains(repository.getAccess().getQuestion())) {
        accessiblePublicCombo.setSelectedItem(repository.getAccess().getQuestion());
    }
    builder.add(accessiblePublicCombo, cc.xy(3, rowNb));
    setNextRow();

    if (repository.getAccess().getRestaccess().size() == 0)
        repository.getAccess().getRestaccess().add(new Restaccess());
    restaccessTfs = new ArrayList<TextAreaWithLanguage>(repository.getAccess().getRestaccess().size());
    int last = repository.getAccess().getRestaccess().size() - 1;
    for (Restaccess restaccess : repository.getAccess().getRestaccess()) {
        builder.addLabel(labels.getString("eag2012.accessAndServices.accessRestrictions"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(restaccess.getContent(),
                restaccess.getLang());
        restaccessTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
        if (last-- == 0) {
            JButton addRestaccessBtn = new ButtonTab(
                    labels.getString("eag2012.commons.addFutherAccessInformation"));
            builder.add(addRestaccessBtn, cc.xy(1, rowNb));
            addRestaccessBtn.addActionListener(new AddRestaccessBtnAction(eag, tabbedPane, model));
            setNextRow();
        }
    }

    if (repository.getAccess().getTermsOfUse().size() == 0)
        repository.getAccess().getTermsOfUse().add(new TermsOfUse());
    termsOfUseTfs = new ArrayList<TextAreaWithLanguage>(repository.getAccess().getTermsOfUse().size());
    for (TermsOfUse termsOfUse : repository.getAccess().getTermsOfUse()) {
        builder.addLabel(labels.getString("eag2012.accessAndServices.termsOfUse"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(termsOfUse.getContent(),
                termsOfUse.getLang(), termsOfUse.getHref());
        termsOfUseTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.accessAndServices.link"), cc.xy(1, rowNb));
        builder.add(textAreaWithLanguage.getExtraField(), cc.xy(3, rowNb));
        setNextRow();
        if (errors.contains("termsOfUseTfs")) {
            if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText()) && !StringUtils
                    .startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText())
                && !StringUtils.startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }

    //ad further button
    JButton addTermsOfUseBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addFurtherTermsOfUse"));
    builder.add(addTermsOfUseBtn, cc.xy(1, rowNb));
    addTermsOfUseBtn.addActionListener(new addTermsOfUseBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.commons.disabledAccess") + "*", cc.xy(1, rowNb));
    if (repository.getAccessibility().size() > 0
            && Arrays.asList(yesOrNo).contains(repository.getAccessibility().get(0).getQuestion())) {
        facilitiesForDisabledCombo.setSelectedItem(repository.getAccessibility().get(0).getQuestion());
    }
    builder.add(facilitiesForDisabledCombo, cc.xy(3, rowNb));
    setNextRow();

    //facilities for disabled persons
    accessibilityTfs = new ArrayList<TextAreaWithLanguage>(repository.getAccessibility().size());
    for (Accessibility accessibility : repository.getAccessibility()) {
        builder.addLabel(labels.getString("eag2012.commons.disabledAccess.facilities"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(accessibility.getContent(),
                accessibility.getLang());
        accessibilityTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        if (last-- == 0) {
            JButton addAccessibilityBtn = new ButtonTab(
                    labels.getString("eag2012.yourinstitution.addInfoOnExistingFacilities"));
            builder.add(addAccessibilityBtn, cc.xy(7, rowNb));
            addAccessibilityBtn.addActionListener(new AddAccessibilityBtnAction(eag, tabbedPane, model));
        }
        setNextRow();
    }

    //add button
    JButton addFacilitiesForDisabledBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addFurtherFacilitiesForDisabled"));
    builder.add(addFacilitiesForDisabledBtn, cc.xy(1, rowNb));
    addFacilitiesForDisabledBtn
            .addActionListener(new addFacilitiesForDisabledBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.accessAndServices.searchroom"), cc.xyw(1, rowNb, 7));
    setNextRow();

    if (repository.getServices() == null)
        repository.setServices(new Services());
    if (repository.getServices().getSearchroom() == null)
        repository.getServices().setSearchroom(new Searchroom());
    Searchroom searchroom = repository.getServices().getSearchroom();

    if (searchroom.getContact() == null)
        searchroom.setContact(new Contact());

    //(searchroom.getContact().getTelephone()
    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    int i = 0;
    telephoneSearchroomTf = new ArrayList<JTextField>(searchroom.getContact().getTelephone().size());
    for (Telephone telephone : searchroom.getContact().getTelephone()) {
        JTextField telephoneTf = new JTextField(telephone.getContent());
        telephoneSearchroomTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addtelephoneSearchroomTfBtn = new ButtonTab(
                    labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
            addtelephoneSearchroomTfBtn
                    .addActionListener(new AddTelephoneSearchroomBtnAction(eag, tabbedPane, model));
            builder.add(addtelephoneSearchroomTfBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (searchroom.getContact().getTelephone().size() == 0) {
        JTextField telephoneTf = new JTextField();
        telephoneSearchroomTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        JButton addtelephoneSearchroomTfBtn = new ButtonTab(
                labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
        addtelephoneSearchroomTfBtn
                .addActionListener(new AddTelephoneSearchroomBtnAction(eag, tabbedPane, model));
        builder.add(addtelephoneSearchroomTfBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    //searchroom.getContact().getEmail()
    emailSearchroomTf = new ArrayList<JTextField>(searchroom.getContact().getEmail().size());
    emailTitleSearchroomTf = new ArrayList<JTextField>(searchroom.getContact().getEmail().size());
    if (searchroom.getContact().getEmail().size() == 0)
        searchroom.getContact().getEmail().add(new Email());
    for (Email email : searchroom.getContact().getEmail()) {
        JTextField emailTf = new JTextField(email.getHref());
        JTextField emailTitleTf = new JTextField(email.getContent());
        emailSearchroomTf.add(emailTf);
        emailTitleSearchroomTf.add(emailTitleTf);
        builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
        builder.add(emailTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(emailTitleTf, cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addEmailSearchroomBtn = new ButtonTab(labels.getString("eag2012.commons.addEmail"));
    addEmailSearchroomBtn.addActionListener(new AddEmailSearchroomAction(eag, tabbedPane, model));
    builder.add(addEmailSearchroomBtn, cc.xy(1, rowNb));
    setNextRow();

    //searchroom.getWebpage()
    webpageSearchroomTf = new ArrayList<JTextField>(searchroom.getWebpage().size());
    webpageTitleSearchroomTf = new ArrayList<JTextField>(searchroom.getWebpage().size());
    if (searchroom.getWebpage().size() == 0)
        searchroom.getWebpage().add(new Webpage());
    for (Webpage webpage : searchroom.getWebpage()) {
        JTextField webpageTf = new JTextField(webpage.getHref());
        JTextField webpageTitleTf = new JTextField(webpage.getContent());
        webpageTitleSearchroomTf.add(webpageTitleTf);
        webpageSearchroomTf.add(webpageTf);
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(webpageTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(webpageTitleTf, cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("webpageSearchroomTf")) {
            if (StringUtils.isNotBlank(webpageTf.getText())
                    && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xyw(1, rowNb, 3));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(webpageTf.getText())
                && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                    cc.xyw(1, rowNb, 3));
            setNextRow();
        }
    }
    JButton addWebpageSearchroomBtn = new ButtonTab(labels.getString("eag2012.commons.addWebpage"));
    addWebpageSearchroomBtn.addActionListener(new AddWebpageSearchroomAction(eag, tabbedPane, model));
    builder.add(addWebpageSearchroomBtn, cc.xy(1, rowNb));
    setNextRow();

    if (searchroom.getWorkPlaces() == null)
        searchroom.setWorkPlaces(new WorkPlaces());
    builder.addLabel(labels.getString("eag2012.commons.workPlaces"), cc.xy(1, rowNb));
    try {
        workplacesSearchroomTf = new JTextField(searchroom.getWorkPlaces().getNum().getContent());
    } catch (NullPointerException npe) {
        workplacesSearchroomTf = new JTextField();
    }
    builder.add(workplacesSearchroomTf, cc.xy(3, rowNb));
    setNextRow();

    if (searchroom.getComputerPlaces() == null) {
        ComputerPlaces computerPlaces = new ComputerPlaces();
        Num num = new Num();
        num.setUnit("site");
        computerPlaces.setNum(num);
        searchroom.setComputerPlaces(computerPlaces);
    }
    builder.addLabel(labels.getString("eag2012.accessAndServices.computerPlaces"), cc.xy(1, rowNb));
    computerplacesSearchroomTf = new JTextField(searchroom.getComputerPlaces().getNum().getContent());
    builder.add(computerplacesSearchroomTf, cc.xy(3, rowNb));
    if (searchroom.getComputerPlaces().getDescriptiveNote() == null) {
        JButton addDescriptionBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addDescription"));
        builder.add(addDescriptionBtn, cc.xy(5, rowNb));
        addDescriptionBtn.addActionListener(new AddComputerplacesDescriptionBtnAction(eag, tabbedPane, model));
    }
    setNextRow();
    if (searchroom.getComputerPlaces().getDescriptiveNote() != null) {
        computerplacesDescriptionTfs = new ArrayList<TextFieldWithLanguage>(
                searchroom.getComputerPlaces().getDescriptiveNote().getP().size());
        for (P p : searchroom.getComputerPlaces().getDescriptiveNote().getP()) {
            builder.addLabel(labels.getString("eag2012.commons.computerplacesDescription"), cc.xy(1, rowNb));
            TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(p.getContent(),
                    p.getLang());
            computerplacesDescriptionTfs.add(textFieldWithLanguage);
            builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
            setNextRow();
        }
        JButton addDescriptionBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addDescription"));
        builder.add(addDescriptionBtn, cc.xy(5, rowNb));
        addDescriptionBtn.addActionListener(new AddComputerplacesDescriptionBtnAction(eag, tabbedPane, model));
        setNextRow();
    }

    if (searchroom.getMicrofilmPlaces() == null) {
        MicrofilmPlaces microfilmPlaces = new MicrofilmPlaces();
        Num num = new Num();
        num.setUnit("site");
        microfilmPlaces.setNum(num);
        searchroom.setMicrofilmPlaces(microfilmPlaces);
    }
    if (searchroom.getPhotographAllowance() == null) {
        searchroom.setPhotographAllowance(new PhotographAllowance());
    }
    builder.addLabel(labels.getString("eag2012.accessAndServices.microfilmPlaces"), cc.xy(1, rowNb));
    microfilmplacesSearchroomTf = new JTextField(searchroom.getMicrofilmPlaces().getNum().getContent());
    builder.add(microfilmplacesSearchroomTf, cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.accessAndServices.photographAllowance"), cc.xy(5, rowNb));
    if (Arrays.asList(photographAllowance).contains(searchroom.getPhotographAllowance().getValue())) {
        photographAllowanceCombo.setSelectedItem(searchroom.getPhotographAllowance().getValue());
    } else {
        photographAllowanceCombo.setSelectedItem("---");
    }
    builder.add(photographAllowanceCombo, cc.xy(7, rowNb));
    setNextRow();

    if (searchroom.getReadersTicket().size() == 0)
        searchroom.getReadersTicket().add(new ReadersTicket());
    readersticketSearchroomTfs = new ArrayList<TextFieldWithLanguage>(searchroom.getReadersTicket().size());
    for (ReadersTicket readersTicket : searchroom.getReadersTicket()) {
        builder.addLabel(labels.getString("eag2012.accessAndServices.readersTicket"), cc.xy(1, rowNb));
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(readersTicket.getContent(),
                readersTicket.getLang(), readersTicket.getHref());
        readersticketSearchroomTfs.add(textFieldWithLanguage);
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.accessAndServices.link"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getExtraField(), cc.xy(3, rowNb));
        setNextRow();
        if (errors.contains("readersticketSearchroomTfs")) {
            if (StringUtils.isNotBlank(textFieldWithLanguage.getExtraField().getText()) && !StringUtils
                    .startsWithAny(textFieldWithLanguage.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(textFieldWithLanguage.getExtraField().getText())
                && !StringUtils.startsWithAny(textFieldWithLanguage.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }
    JButton addReadersticketBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addReadersTicket"));
    builder.add(addReadersticketBtn, cc.xy(1, rowNb));
    addReadersticketBtn.addActionListener(new AddReadersticketBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (searchroom.getAdvancedOrders().size() == 0)
        searchroom.getAdvancedOrders().add(new AdvancedOrders());
    advancedordersSearchroomTfs = new ArrayList<TextFieldWithLanguage>(searchroom.getAdvancedOrders().size());
    for (AdvancedOrders advancedOrders : searchroom.getAdvancedOrders()) {
        builder.addLabel(labels.getString("eag2012.accessAndServices.advancedOrders"), cc.xy(1, rowNb));
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(advancedOrders.getContent(),
                advancedOrders.getLang(), advancedOrders.getHref());
        advancedordersSearchroomTfs.add(textFieldWithLanguage);
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.accessAndServices.link"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getExtraField(), cc.xy(3, rowNb));
        setNextRow();
        if (errors.contains("advancedordersSearchroomTfs")) {
            if (StringUtils.isNotBlank(textFieldWithLanguage.getExtraField().getText()) && !StringUtils
                    .startsWithAny(textFieldWithLanguage.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(textFieldWithLanguage.getExtraField().getText())
                && !StringUtils.startsWithAny(textFieldWithLanguage.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }
    JButton addAdvancedordersBtn = new ButtonTab(labels.getString("eag2012.control.advancedOrders"));
    builder.add(addAdvancedordersBtn, cc.xy(1, rowNb));
    addAdvancedordersBtn.addActionListener(new AddAdvancedordersBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (searchroom.getResearchServices().size() == 0) {
        DescriptiveNote descriptiveNote = new DescriptiveNote();
        descriptiveNote.getP().add(new P());
        ResearchServices researchServices = new ResearchServices();
        researchServices.setDescriptiveNote(descriptiveNote);
        searchroom.getResearchServices().add(researchServices);
    }
    researchServicesSearchroomTfs = new ArrayList<TextFieldWithLanguage>(
            searchroom.getResearchServices().size());
    for (ResearchServices researchServices : searchroom.getResearchServices()) {
        if (researchServices.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            descriptiveNote.setP(new ArrayList<P>() {
                {
                    add(new P());
                }
            });
            researchServices.setDescriptiveNote(descriptiveNote);
        }
        builder.addLabel(labels.getString("eag2012.accessAndServices.researchServices"), cc.xy(1, rowNb));
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(
                researchServices.getDescriptiveNote().getP().get(0).getContent(),
                researchServices.getDescriptiveNote().getP().get(0).getLang());
        researchServicesSearchroomTfs.add(textFieldWithLanguage);
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addResearchservicesBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addResearchservices"));
    builder.add(addResearchservicesBtn, cc.xy(1, rowNb));
    addResearchservicesBtn.addActionListener(new AddResearchservicesBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.accessAndServices.library"), cc.xyw(1, rowNb, 7));
    setNextRow();

    if (repository.getServices().getLibrary() == null)
        repository.getServices().setLibrary(new Library());
    Library library = repository.getServices().getLibrary();

    if (library.getContact() == null)
        library.setContact(new Contact());

    //LibrarygetContact().getTelephone()
    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    i = 0;
    telephoneLibraryTf = new ArrayList<JTextField>(library.getContact().getTelephone().size());
    for (Telephone telephone : library.getContact().getTelephone()) {
        JTextField telephoneTf = new JTextField(telephone.getContent());
        telephoneLibraryTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addtelephoneLibraryTfBtn = new ButtonTab(
                    labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
            addtelephoneLibraryTfBtn
                    .addActionListener(new addTelephoneLibraryTfBtnAction(eag, tabbedPane, model));
            builder.add(addtelephoneLibraryTfBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (library.getContact().getTelephone().size() == 0) {
        JTextField telephoneTf = new JTextField();
        telephoneLibraryTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        JButton addtelephoneLibraryTfBtn = new ButtonTab(
                labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
        addtelephoneLibraryTfBtn.addActionListener(new addTelephoneLibraryTfBtnAction(eag, tabbedPane, model));
        builder.add(addtelephoneLibraryTfBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    //library.getContact().getEmail()
    emailLibraryTf = new ArrayList<JTextField>(library.getContact().getEmail().size());
    emailTitleLibraryTf = new ArrayList<JTextField>(library.getContact().getEmail().size());
    if (library.getContact().getEmail().size() == 0)
        library.getContact().getEmail().add(new Email());
    for (Email email : library.getContact().getEmail()) {
        JTextField emailTf = new JTextField(email.getHref());
        JTextField emailTitleTf = new JTextField(email.getContent());
        emailLibraryTf.add(emailTf);
        emailTitleLibraryTf.add(emailTitleTf);
        builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
        builder.add(emailTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(emailTitleTf, cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addEmailLibraryBtn = new ButtonTab(labels.getString("eag2012.commons.addEmail"));
    addEmailLibraryBtn.addActionListener(new AddEmailLibraryAction(eag, tabbedPane, model));
    builder.add(addEmailLibraryBtn, cc.xy(1, rowNb));
    setNextRow();

    //library.getWebpage()
    webpageLibraryTf = new ArrayList<JTextField>(library.getWebpage().size());
    webpageTitleLibraryTf = new ArrayList<JTextField>(library.getWebpage().size());
    if (library.getWebpage().size() == 0)
        library.getWebpage().add(new Webpage());
    for (Webpage webpage : library.getWebpage()) {
        JTextField webpageTf = new JTextField(webpage.getHref());
        JTextField webpageTitleTf = new JTextField(webpage.getContent());
        webpageTitleLibraryTf.add(webpageTitleTf);
        webpageLibraryTf.add(webpageTf);
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(webpageTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(webpageTitleTf, cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("webpageLibraryTf")) {
            if (StringUtils.isNotBlank(webpageTf.getText())
                    && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xyw(1, rowNb, 3));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(webpageTf.getText())
                && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                    cc.xyw(1, rowNb, 3));
            setNextRow();
        }
    }
    JButton addEbpageLibraryBtn = new ButtonTab(labels.getString("eag2012.commons.addWebpage"));
    addEbpageLibraryBtn.addActionListener(new AddWebpageLibraryAction(eag, tabbedPane, model));
    builder.add(addEbpageLibraryBtn, cc.xy(1, rowNb));
    setNextRow();

    if (library.getMonographicpub() == null) {
        Monographicpub monographicpub = new Monographicpub();
        Num num = new Num();
        num.setUnit("site");
        monographicpub.setNum(num);
        library.setMonographicpub(monographicpub);
    }
    if (library.getSerialpub() == null) {
        Serialpub serialpub = new Serialpub();
        Num num = new Num();
        num.setUnit("site");
        serialpub.setNum(num);
        library.setSerialpub(serialpub);
    }
    builder.addLabel(labels.getString("eag2012.accessAndServices.monographicPublication"), cc.xy(1, rowNb));
    monographicPubLibraryTf = new JTextField(library.getMonographicpub().getNum().getContent());
    builder.add(monographicPubLibraryTf, cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.accessAndServices.serialPublication"), cc.xy(5, rowNb));
    serialPubLibraryTf = new JTextField(library.getSerialpub().getNum().getContent());
    builder.add(serialPubLibraryTf, cc.xy(7, rowNb));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.accessAndServices.internetAccess"), cc.xyw(1, rowNb, 7));
    setNextRow();

    // public Internet access
    if (repository.getServices().getInternetAccess() == null) {
        DescriptiveNote descriptiveNote = new DescriptiveNote();
        descriptiveNote.getP().add(new P());
        InternetAccess internetAccess = new InternetAccess();
        internetAccess.setDescriptiveNote(descriptiveNote);
        repository.getServices().setInternetAccess(internetAccess);
    }
    InternetAccess internetAccess = repository.getServices().getInternetAccess();
    internetAccessDescTfs = new ArrayList<TextFieldWithLanguage>(
            internetAccess.getDescriptiveNote().getP().size());
    for (P p : internetAccess.getDescriptiveNote().getP()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(p.getContent(), p.getLang());
        internetAccessDescTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.accessAndServices.description"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addInternetAccessBtn = new ButtonTab(labels.getString("eag2012.isil.addInternetAccess"));
    builder.add(addInternetAccessBtn, cc.xy(1, rowNb));
    addInternetAccessBtn.addActionListener(new AddInternetAccessBtnAction(eag, tabbedPane, model));
    setNextRow();

    // technical services
    builder.addSeparator(labels.getString("eag2012.accessAndServices.technicalServices"), cc.xyw(1, rowNb, 7));
    setNextRow();
    builder.addSeparator(labels.getString("eag2012.accessAndServices.conservationLab"), cc.xyw(1, rowNb, 7));
    setNextRow();

    if (repository.getServices().getTechservices() == null)
        repository.getServices().setTechservices(new Techservices());
    if (repository.getServices().getTechservices().getRestorationlab() == null)
        repository.getServices().getTechservices().setRestorationlab(new Restorationlab());
    Restorationlab restorationlab = repository.getServices().getTechservices().getRestorationlab();

    if (restorationlab.getDescriptiveNote() == null)
        restorationlab.setDescriptiveNote(new DescriptiveNote());
    if (restorationlab.getDescriptiveNote().getP().size() == 0)
        restorationlab.getDescriptiveNote().getP().add(new P());

    // description for restoration
    descriptionRestorationServiceTfs = new ArrayList<TextFieldWithLanguage>(
            restorationlab.getDescriptiveNote().getP().size());
    for (P p : restorationlab.getDescriptiveNote().getP()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(p.getContent(), p.getLang());
        descriptionRestorationServiceTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.accessAndServices.description"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addDescriptionRestorationBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addDescriptionTranslation"), true);
    builder.add(addDescriptionRestorationBtn, cc.xy(1, rowNb));
    addDescriptionRestorationBtn
            .addActionListener(new AddDescriptionRestorationBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (restorationlab.getContact() == null)
        restorationlab.setContact(new Contact());

    //restorationlab.getContact().getTelephone()
    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    i = 0;
    telephoneRestorationlabTf = new ArrayList<JTextField>(restorationlab.getContact().getTelephone().size());
    for (Telephone telephone : restorationlab.getContact().getTelephone()) {
        JTextField telephoneTf = new JTextField(telephone.getContent());
        telephoneRestorationlabTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addtelephoneRestorationlabTfBtn = new ButtonTab(
                    labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
            addtelephoneRestorationlabTfBtn
                    .addActionListener(new AddTelephoneRestorationlabTfBtnAction(eag, tabbedPane, model));
            builder.add(addtelephoneRestorationlabTfBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (restorationlab.getContact().getTelephone().size() == 0) {
        JTextField telephoneTf = new JTextField();
        telephoneRestorationlabTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        JButton addtelephoneRestorationlabTfBtn = new ButtonTab(
                labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
        addtelephoneRestorationlabTfBtn
                .addActionListener(new AddTelephoneRestorationlabTfBtnAction(eag, tabbedPane, model));
        builder.add(addtelephoneRestorationlabTfBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    //Restoration.getContact().getEmail()
    emailRestorationlabTf = new ArrayList<JTextField>(restorationlab.getContact().getEmail().size());
    emailTitleRestorationlabTf = new ArrayList<JTextField>(restorationlab.getContact().getEmail().size());
    if (restorationlab.getContact().getEmail().size() == 0)
        restorationlab.getContact().getEmail().add(new Email());
    for (Email email : restorationlab.getContact().getEmail()) {
        JTextField emailTf = new JTextField(email.getHref());
        JTextField emailTitleTf = new JTextField(email.getContent());
        emailRestorationlabTf.add(emailTf);
        emailTitleRestorationlabTf.add(emailTitleTf);
        builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
        builder.add(emailTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(emailTitleTf, cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addEmaiRestorationlabBtn = new ButtonTab(labels.getString("eag2012.commons.addEmail"));
    addEmaiRestorationlabBtn.addActionListener(new AddEmailRestorationAction(eag, tabbedPane, model));
    builder.add(addEmaiRestorationlabBtn, cc.xy(1, rowNb));
    setNextRow();

    //restorationlab.getWebpage()
    webpageRestorationlabTf = new ArrayList<JTextField>(restorationlab.getWebpage().size());
    webpageTitleRestorationlabTf = new ArrayList<JTextField>(restorationlab.getWebpage().size());
    if (restorationlab.getWebpage().size() == 0)
        restorationlab.getWebpage().add(new Webpage());
    for (Webpage webpage : restorationlab.getWebpage()) {
        JTextField webpageTf = new JTextField(webpage.getHref());
        JTextField webpageTitleTf = new JTextField(webpage.getContent());
        webpageTitleRestorationlabTf.add(webpageTitleTf);
        webpageRestorationlabTf.add(webpageTf);
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(webpageTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(webpageTitleTf, cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("webpageRestorationlabTf")) {
            if (StringUtils.isNotBlank(webpageTf.getText())
                    && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xyw(1, rowNb, 3));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(webpageTf.getText())
                && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                    cc.xyw(1, rowNb, 3));
            setNextRow();
        }
    }
    JButton addWebpageRestorationlabBtn = new ButtonTab(labels.getString("eag2012.commons.addWebpage"));
    addWebpageRestorationlabBtn.addActionListener(new AddWebpageRestorationAction(eag, tabbedPane, model));
    builder.add(addWebpageRestorationlabBtn, cc.xy(1, rowNb));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.accessAndServices.reproductionService"),
            cc.xyw(1, rowNb, 7));
    setNextRow();

    if (repository.getServices().getTechservices().getReproductionser() == null)
        repository.getServices().getTechservices().setReproductionser(new Reproductionser());
    Reproductionser reproductionser = repository.getServices().getTechservices().getReproductionser();

    if (reproductionser.getDescriptiveNote() == null)
        reproductionser.setDescriptiveNote(new DescriptiveNote());
    if (reproductionser.getDescriptiveNote().getP().size() == 0)
        reproductionser.getDescriptiveNote().getP().add(new P());

    descriptionReproductionServiceTfs = new ArrayList<TextFieldWithLanguage>(
            reproductionser.getDescriptiveNote().getP().size());
    for (P p : reproductionser.getDescriptiveNote().getP()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(p.getContent(), p.getLang());
        descriptionReproductionServiceTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.accessAndServices.description"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addDescriptionReproductionBtn = new ButtonTab(
            labels.getString("eag2012.accessAndServices.addDescriptionTranslation"), true);
    builder.add(addDescriptionReproductionBtn, cc.xy(1, rowNb));
    addDescriptionReproductionBtn
            .addActionListener(new AddDescriptionReproductionBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (reproductionser.getContact() == null)
        reproductionser.setContact(new Contact());

    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    i = 0;

    //reproductionser.getContact().getTelephone()
    telephoneReproductionServiceTf = new ArrayList<JTextField>(
            reproductionser.getContact().getTelephone().size());
    for (Telephone telephone : reproductionser.getContact().getTelephone()) {
        JTextField telephoneTf = new JTextField(telephone.getContent());
        telephoneReproductionServiceTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addtelephoneReproductionServiceTfBtn = new ButtonTab(
                    labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
            addtelephoneReproductionServiceTfBtn
                    .addActionListener(new AddTelephoneReproductionServiceTfBtnAction(eag, tabbedPane, model));
            builder.add(addtelephoneReproductionServiceTfBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (reproductionser.getContact().getTelephone().size() == 0) {
        JTextField telephoneTf = new JTextField();
        telephoneReproductionServiceTf.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        JButton addtelephoneRestorationlabTfBtn = new ButtonTab(
                labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
        addtelephoneRestorationlabTfBtn
                .addActionListener(new AddTelephoneReproductionServiceTfBtnAction(eag, tabbedPane, model));
        builder.add(addtelephoneRestorationlabTfBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    //Reproductionser.getContact().getEmail()
    emailReproductionServiceTf = new ArrayList<JTextField>(reproductionser.getContact().getEmail().size());
    emailTitleReproductionServiceTf = new ArrayList<JTextField>(reproductionser.getContact().getEmail().size());
    if (reproductionser.getContact().getEmail().size() == 0)
        reproductionser.getContact().getEmail().add(new Email());
    for (Email email : reproductionser.getContact().getEmail()) {
        JTextField emailTf = new JTextField(email.getHref());
        JTextField emailTitleTf = new JTextField(email.getContent());
        emailReproductionServiceTf.add(emailTf);
        emailTitleReproductionServiceTf.add(emailTitleTf);
        builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
        builder.add(emailTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(emailTitleTf, cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addEmaiReproductionServiceBtn = new ButtonTab(labels.getString("eag2012.commons.addEmail"));
    addEmaiReproductionServiceBtn
            .addActionListener(new AddEmailReproductionServiceBtnAction(eag, tabbedPane, model));
    builder.add(addEmaiReproductionServiceBtn, cc.xy(1, rowNb));
    setNextRow();

    //reproductionser.getWebpage()
    webpageReproductionServiceTf = new ArrayList<JTextField>(reproductionser.getWebpage().size());
    webpageTitleReproductionServiceTf = new ArrayList<JTextField>(reproductionser.getWebpage().size());
    if (reproductionser.getWebpage().size() == 0)
        reproductionser.getWebpage().add(new Webpage());
    for (Webpage webpage : reproductionser.getWebpage()) {
        JTextField webpageTf = new JTextField(webpage.getHref());
        JTextField webpageTitleTf = new JTextField(webpage.getContent());
        webpageTitleReproductionServiceTf.add(webpageTitleTf);
        webpageReproductionServiceTf.add(webpageTf);
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(webpageTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(webpageTitleTf, cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("webpageReproductionServiceTf")) {
            if (StringUtils.isNotBlank(webpageTf.getText())
                    && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xyw(1, rowNb, 3));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(webpageTf.getText())
                && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                    cc.xyw(1, rowNb, 3));
            setNextRow();
        }
    }
    JButton addWebpageReproductionserBtn = new ButtonTab(labels.getString("eag2012.commons.addWebpage"));
    addWebpageReproductionserBtn.addActionListener(new AddWebpageReproductionserAction(eag, tabbedPane, model));
    builder.add(addWebpageReproductionserBtn, cc.xy(1, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.accessAndServices.microformServices"), cc.xy(1, rowNb));
    if (reproductionser.getMicroformser() == null)
        reproductionser.setMicroformser(new Microformser());
    if (Arrays.asList(yesOrNo).contains(reproductionser.getMicroformser().getQuestion())) {
        microformServicesCombo.setSelectedItem(reproductionser.getMicroformser().getQuestion());
    } else {
        microformServicesCombo.setSelectedItem("---");
    }
    builder.add(microformServicesCombo, cc.xy(3, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.accessAndServices.photographServices"), cc.xy(1, rowNb));
    if (reproductionser.getPhotographser() == null)
        reproductionser.setPhotographser(new Photographser());
    if (Arrays.asList(yesOrNo).contains(reproductionser.getPhotographser().getQuestion())) {
        photographServicesCombo.setSelectedItem(reproductionser.getPhotographser().getQuestion());
    } else {
        photographServicesCombo.setSelectedItem("---");
    }
    builder.add(photographServicesCombo, cc.xy(3, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.accessAndServices.digitalServices"), cc.xy(1, rowNb));
    if (reproductionser.getDigitalser() == null)
        reproductionser.setDigitalser(new Digitalser());
    if (Arrays.asList(yesOrNo).contains(reproductionser.getDigitalser().getQuestion())) {
        digitalServicesCombo.setSelectedItem(reproductionser.getDigitalser().getQuestion());
    } else {
        digitalServicesCombo.setSelectedItem("---");
    }
    builder.add(digitalServicesCombo, cc.xy(3, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.accessAndServices.photocopyServices"), cc.xy(1, rowNb));
    if (reproductionser.getPhotocopyser() == null)
        reproductionser.setPhotocopyser(new Photocopyser());
    if (Arrays.asList(yesOrNo).contains(reproductionser.getPhotocopyser().getQuestion())) {
        photocopyServicesCombo.setSelectedItem(reproductionser.getPhotocopyser().getQuestion());
    } else {
        photocopyServicesCombo.setSelectedItem("---");
    }
    builder.add(photocopyServicesCombo, cc.xy(3, rowNb));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.accessAndServices.recreationalServices"),
            cc.xyw(1, rowNb, 7));
    setNextRow();

    if (repository.getServices().getRecreationalServices() == null)
        repository.getServices().setRecreationalServices(new RecreationalServices());
    RecreationalServices recreationalServices = repository.getServices().getRecreationalServices();

    if (recreationalServices.getRefreshment() == null) {
        DescriptiveNote descriptiveNote = new DescriptiveNote();
        descriptiveNote.getP().add(new P());
        Refreshment refreshment = new Refreshment();
        refreshment.setDescriptiveNote(descriptiveNote);
        recreationalServices.setRefreshment(refreshment);
    }
    builder.addLabel(labels.getString("eag2012.accessAndServices.refreshment"), cc.xy(1, rowNb));
    refreshmentTf = new TextAreaWithLanguage(
            recreationalServices.getRefreshment().getDescriptiveNote().getP().get(0).getContent(),
            recreationalServices.getRefreshment().getDescriptiveNote().getP().get(0).getLang());
    builder.add(refreshmentTf.getTextField(), cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
    builder.add(refreshmentTf.getLanguageBox(), cc.xy(7, rowNb));
    setNextRow();

    if (recreationalServices.getExhibition().size() == 0) {
        recreationalServices.getExhibition().add(new Exhibition());
    }
    exhibitionTfs = new ArrayList<TextAreaWithLanguage>(recreationalServices.getExhibition().size());
    for (Exhibition exhibition : recreationalServices.getExhibition()) {
        if (exhibition.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            descriptiveNote.getP().add(new P());
            exhibition.setDescriptiveNote(descriptiveNote);
            exhibition.setWebpage(new Webpage());
        }

        builder.addLabel(labels.getString("eag2012.accessAndServices.exhibition"), cc.xy(1, rowNb));
        if (exhibition.getWebpage() == null) {
            exhibition.setWebpage(new Webpage());
        }
        TextAreaWithLanguage exhibitionTf = new TextAreaWithLanguage(
                exhibition.getDescriptiveNote().getP().get(0).getContent(),
                exhibition.getDescriptiveNote().getP().get(0).getLang(), exhibition.getWebpage().getHref(),
                exhibition.getWebpage().getContent());
        exhibitionTfs.add(exhibitionTf);
        builder.add(exhibitionTf.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(exhibitionTf.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(exhibitionTf.getExtraField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(exhibitionTf.getSecondExtraField(), cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("exhibitionTfs")) {
            if (StringUtils.isNotBlank(exhibitionTf.getExtraField().getText())
                    && !StringUtils.startsWithAny(exhibitionTf.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(exhibitionTf.getExtraField().getText())
                && !StringUtils.startsWithAny(exhibitionTf.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }
    JButton addExhibitionsBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addExhibitions"));
    builder.add(addExhibitionsBtn, cc.xy(1, rowNb));
    addExhibitionsBtn.addActionListener(new AddExhibitionsBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (recreationalServices.getToursSessions().size() == 0) {
        recreationalServices.getToursSessions().add(new ToursSessions());
    }
    toursAndSessionsTfs = new ArrayList<TextAreaWithLanguage>(recreationalServices.getToursSessions().size());
    for (ToursSessions toursSessions : recreationalServices.getToursSessions()) {
        if (toursSessions.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            descriptiveNote.getP().add(new P());
            toursSessions.setDescriptiveNote(descriptiveNote);
            toursSessions.setWebpage(new Webpage());
        }
        builder.addLabel(labels.getString("eag2012.accessAndServices.toursAndSessions"), cc.xy(1, rowNb));
        if (toursSessions.getWebpage() == null) {
            toursSessions.setWebpage(new Webpage());
        }
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(
                toursSessions.getDescriptiveNote().getP().get(0).getContent(),
                toursSessions.getDescriptiveNote().getP().get(0).getLang(),
                toursSessions.getWebpage().getHref(), toursSessions.getWebpage().getContent());
        toursAndSessionsTfs.add(textAreaWithLanguage);
        builder.add(textAreaWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(textAreaWithLanguage.getExtraField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(textAreaWithLanguage.getSecondExtraField(), cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("toursAndSessionsTfs")) {
            if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText()) && !StringUtils
                    .startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(textAreaWithLanguage.getExtraField().getText())
                && !StringUtils.startsWithAny(textAreaWithLanguage.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }
    JButton addToursSessionsBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addToursSessions"));
    builder.add(addToursSessionsBtn, cc.xy(1, rowNb));
    addToursSessionsBtn.addActionListener(new AddToursSessionsBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (recreationalServices.getOtherServices().size() == 0) {
        recreationalServices.getOtherServices().add(new OtherServices());
    }
    otherServicesTfs = new ArrayList<TextAreaWithLanguage>(recreationalServices.getOtherServices().size());
    for (OtherServices otherServices : recreationalServices.getOtherServices()) {
        if (otherServices.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            otherServices.setDescriptiveNote(descriptiveNote);
        }
        if (otherServices.getDescriptiveNote().getP().size() == 0) {
            otherServices.getDescriptiveNote().getP().add(new P());
        }
        if (otherServices.getWebpage() == null) {
            otherServices.setWebpage(new Webpage());
        }
        builder.addLabel(labels.getString("eag2012.accessAndServices.otherServices"), cc.xy(1, rowNb));
        TextAreaWithLanguage otherServicesTf = new TextAreaWithLanguage(
                otherServices.getDescriptiveNote().getP().get(0).getContent(),
                otherServices.getDescriptiveNote().getP().get(0).getLang(),
                otherServices.getWebpage().getHref(), otherServices.getWebpage().getContent());
        otherServicesTfs.add(otherServicesTf);
        builder.add(otherServicesTf.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(otherServicesTf.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(otherServicesTf.getExtraField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(otherServicesTf.getSecondExtraField(), cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("otherServicesTfs")) {
            if (StringUtils.isNotBlank(otherServicesTf.getExtraField().getText())
                    && !StringUtils.startsWithAny(otherServicesTf.getExtraField().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(otherServicesTf.getExtraField().getText())
                && !StringUtils.startsWithAny(otherServicesTf.getExtraField().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }
    }
    JButton addOtherServicesBtn = new ButtonTab(labels.getString("eag2012.accessAndServices.addOtherServices"));
    builder.add(addOtherServicesBtn, cc.xy(1, rowNb));
    addOtherServicesBtn.addActionListener(new AddOtherServicesBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();

    JButton exitBtn = new ButtonTab(labels.getString("eag2012.commons.exit"));
    builder.add(exitBtn, cc.xy(1, rowNb));
    exitBtn.addActionListener(new ExitBtnAction(eag, tabbedPane, model));

    JButton previousTabBtn = new ButtonTab(labels.getString("eag2012.commons.previousTab"));
    builder.add(previousTabBtn, cc.xy(3, rowNb));
    previousTabBtn.addActionListener(new ChangeTabBtnAction(eag, tabbedPane, model, false));

    JButton nextTabBtn = new ButtonTab(labels.getString("eag2012.commons.nextTab"));
    builder.add(nextTabBtn, cc.xy(5, rowNb));
    nextTabBtn.addActionListener(new ChangeTabBtnAction(eag, tabbedPane, model, true));

    setNextRow();
    JButton saveBtn = new ButtonTab(labels.getString("eag2012.commons.save"));
    builder.add(saveBtn, cc.xy(5, rowNb));
    saveBtn.addActionListener(new SaveBtnAction(eag, tabbedPane, model));

    setNextRow();
    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();
    JButton previousInstitutionTabBtn = new ButtonTab(labels.getString("eag2012.controls.previousInstitution"));
    previousInstitutionTabBtn.addActionListener(new PreviousInstitutionTabBtnAction(eag, tabbedPane, model));
    builder.add(previousInstitutionTabBtn, cc.xy(1, rowNb));
    JButton nextInstitutionTabBtn = new ButtonTab(labels.getString("eag2012.controls.nextInstitution"));
    nextInstitutionTabBtn.addActionListener(new NextInstitutionTabBtnAction(eag, tabbedPane, model));
    builder.add(nextInstitutionTabBtn, cc.xy(5, rowNb));

    // Define the change tab listener.
    this.removeChangeListener();
    this.tabbedPane.addChangeListener(new ChangeTabListener(this.eag, this.tabbedPane, this.model, 3));

    JPanel panel = builder.getPanel();
    KeyboardFocusManager.getCurrentKeyboardFocusManager()
            .addPropertyChangeListener(new FocusManagerListener(panel));
    return panel;
}

From source file:eu.apenet.dpt.standalone.gui.eag2012.EagContactPanel.java

@Override
protected JComponent buildEditorPanel(List<String> errors) {
    if (errors == null)
        errors = new ArrayList<String>(0);
    else if (Utilities.isDev && errors.size() > 0) {
        LOG.info("Errors in form:");
        for (String error : errors) {
            LOG.info(error);// w  ww.  ja  v a 2s  .c o  m
        }
    }

    FormLayout layout = new FormLayout("right:max(50dlu;p), 4dlu, 100dlu, 7dlu, right:p, 4dlu, 100dlu",
            EDITOR_ROW_SPEC);

    layout.setColumnGroups(new int[][] { { 1, 3, 5, 7 } });
    PanelBuilder builder = new PanelBuilder(layout);

    builder.setDefaultDialogBorder();
    CellConstraints cc = new CellConstraints();

    rowNb = 1;

    Repository repository = eag.getArchguide().getDesc().getRepositories().getRepository().get(repositoryNb);

    if (repositoryNb > 0) {
        if (repository.getRepositoryRole() == null)
            repository.setRepositoryRole(new RepositoryRole());
        if (Arrays.asList(repositoryRoles).contains(repository.getRepositoryRole().getValue()))
            repositoryRoleTypeCombo.setSelectedItem(repository.getRepositoryRole().getValue());
        builder.addLabel(labels.getString("eag2012.commons.roleOfRepository"), cc.xy(1, rowNb));
        builder.add(repositoryRoleTypeCombo, cc.xy(3, rowNb));

        setNextRow();

        if (repository.getRepositoryName().size() == 0)
            repository.getRepositoryName().add(new RepositoryName());
        repositoryNameTfs = new ArrayList<TextFieldWithLanguage>(repository.getRepositoryName().size());
        for (RepositoryName repositoryName : repository.getRepositoryName()) {
            builder.addLabel(labels.getString("eag2012.commons.nameOfRepository"), cc.xy(1, rowNb));
            TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(repositoryName.getContent(),
                    repositoryName.getLang());
            repositoryNameTfs.add(textFieldWithLanguage);
            builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
            setNextRow();
        }
        JButton addNewRepositoryNameBtn = new ButtonTab(
                labels.getString("eag2012.contact.addNameOfRepository"));
        addNewRepositoryNameBtn.addActionListener(new AddRepositoryNameAction(eag, tabbedPane, model));
        builder.add(addNewRepositoryNameBtn, cc.xy(3, rowNb));
        setNextRow();
    }

    //visitors address and postal address
    boolean hasMinimumOnePostalAddress = false;
    boolean hasMinimumOneVisitorAddress = false;
    locationFields = new ArrayList<LocationType>(repository.getLocation().size());

    //loop to load Visitors address
    for (Location location : repository.getLocation()) {
        if (location.getLocalType() != null && location.getLocalType().equals("visitors address")) {
            LocationType locationType = new LocationType(location);
            locationFields.add(locationType);
            if (hasMinimumOneVisitorAddress) {
                locationType.getLatitudeTf().setEnabled(false);
                locationType.getLongitudeTf().setEnabled(false);
            }
            builder.addSeparator(labels.getString("eag2012.commons.visitorsAddress"), cc.xyw(1, rowNb, 7));
            hasMinimumOneVisitorAddress = true;
            setNextRow();

            String mandatoryStar = "*";
            if (location != repository.getLocation().get(0))
                mandatoryStar = "";

            builder.addLabel(labels.getString("eag2012.commons.street") + mandatoryStar, cc.xy(1, rowNb));
            builder.add(locationType.getStreetTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getStreetTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("streetTf") && StringUtils.isEmpty(locationType.getStreetTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.street")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.cityTownWithPostalcode") + mandatoryStar,
                    cc.xy(1, rowNb));
            builder.add(locationType.getCityTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCityTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("cityTf") && StringUtils.isEmpty(locationType.getCityTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.city")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.contact.district"), cc.xy(1, rowNb));
            builder.add(locationType.getDistrictTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getDistrictTf().getLanguageBox(), cc.xy(7, rowNb));
            setNextRow();

            builder.addLabel(labels.getString("eag2012.contact.countyLocalAuthority"), cc.xy(1, rowNb));
            builder.add(locationType.getCountyTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCountyTf().getLanguageBox(), cc.xy(7, rowNb));
            setNextRow();

            builder.addLabel(labels.getString("eag2012.contact.region"), cc.xy(1, rowNb));
            builder.add(locationType.getRegionTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getRegionTf().getLanguageBox(), cc.xy(7, rowNb));
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.country") + mandatoryStar, cc.xy(1, rowNb));
            builder.add(locationType.getCountryTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCountryTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("countryTf") && StringUtils.isEmpty(locationType.getCountryTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.country")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.latitude"), cc.xy(1, rowNb));
            locationType.getLatitudeTf()
                    .addFocusListener(new UpdateCoordsText(locationType, EagContactPanel.LATITUDE));
            builder.add(locationType.getLatitudeTf(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.longitude"), cc.xy(5, rowNb));
            locationType.getLongitudeTf()
                    .addFocusListener(new UpdateCoordsText(locationType, EagContactPanel.LONGITUDE));
            builder.add(locationType.getLongitudeTf(), cc.xy(7, rowNb));
            setNextRow();
        } // end if visitors address
    } //end loop to load Visitors address

    //add visitors address button
    if (hasMinimumOneVisitorAddress) {
        JButton addNewVisitorTranslationAddressBtn = new ButtonTab(
                labels.getString("eag2012.commons.addVisitorTranslationAddress"), true);
        addNewVisitorTranslationAddressBtn
                .addActionListener(new AddAddressAction(eag, tabbedPane, model, false));
        builder.add(addNewVisitorTranslationAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    } else {
        JButton addNewVisitorAddressBtn = new ButtonTab(labels.getString("eag2012.commons.addVisitorAddress"));
        addNewVisitorAddressBtn.addActionListener(new AddAddressAction(eag, tabbedPane, model, false));
        builder.add(addNewVisitorAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    }
    //end add visitors address button

    // loop to load Postal address
    for (Location location : repository.getLocation()) {
        if (location.getLocalType() != null && location.getLocalType().equals("postal address")) {
            LocationType locationType = new LocationType(location);
            locationFields.add(locationType);
            builder.addSeparator(labels.getString("eag2012.commons.postalAddress"), cc.xyw(1, rowNb, 7));
            hasMinimumOnePostalAddress = true;
            setNextRow();

            String mandatoryStar = "";

            builder.addLabel(labels.getString("eag2012.commons.street") + mandatoryStar, cc.xy(1, rowNb));
            builder.add(locationType.getStreetTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getStreetTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("streetTf") && StringUtils.isEmpty(locationType.getStreetTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.street")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.cityTownWithPostalcode") + mandatoryStar,
                    cc.xy(1, rowNb));
            builder.add(locationType.getCityTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCityTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("cityTf") && StringUtils.isEmpty(locationType.getCityTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.city")), cc.xy(1, rowNb));
            }
            setNextRow();
        } //end if postal address
    } // end loop to load Postal address

    //add postal address button
    if (hasMinimumOnePostalAddress) {
        JButton addNewPostalTranslationAddressBtn = new ButtonTab(
                labels.getString("eag2012.commons.addPostalTranslationAddress"), true);
        addNewPostalTranslationAddressBtn.addActionListener(new AddAddressAction(eag, tabbedPane, model, true));
        builder.add(addNewPostalTranslationAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    } else {
        JButton addNewPostalAddressBtn = new ButtonTab(labels.getString("eag2012.commons.addPostalAddress"));
        addNewPostalAddressBtn.addActionListener(new AddAddressAction(eag, tabbedPane, model, true));
        builder.add(addNewPostalAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    }
    //end add postal address button

    builder.addLabel(labels.getString("eag2012.commons.continent") + "*", cc.xy(1, rowNb));
    if (Arrays.asList(continents).contains(repository.getGeogarea().getValue())) {
        continentCombo.setSelectedItem(repository.getGeogarea().getValue());
    } else {
        continentCombo.setSelectedItem("Europe");
    }
    builder.add(continentCombo, cc.xy(3, rowNb));
    setNextRow();

    //getTelephone()
    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    int i = 0;
    telephoneTfs = new ArrayList<JTextField>(repository.getTelephone().size());
    for (Telephone telephone : repository.getTelephone()) {
        JTextField telephoneTf = new JTextField(telephone.getContent());
        telephoneTfs.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addTelephoneBtn = new ButtonTab(
                    labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
            addTelephoneBtn.addActionListener(new AddTelephoneAction(eag, tabbedPane, model));
            builder.add(addTelephoneBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (repository.getTelephone().size() == 0) {
        JTextField telephoneTf = new JTextField();
        telephoneTfs.add(telephoneTf);
        builder.add(telephoneTf, cc.xy(3, rowNb));
        JButton addTelephoneBtn = new ButtonTab(labels.getString("eag2012.contact.addFurtherTelephoneNumbers"));
        addTelephoneBtn.addActionListener(new AddTelephoneAction(eag, tabbedPane, model));
        builder.add(addTelephoneBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    builder.addLabel(labels.getString("eag2012.contact.fax"), cc.xy(1, rowNb));
    i = 0;
    faxTfs = new ArrayList<JTextField>(repository.getFax().size());
    for (Fax fax : repository.getFax()) {
        JTextField faxTf = new JTextField(fax.getContent());
        faxTfs.add(faxTf);
        builder.add(faxTf, cc.xy(3, rowNb));
        if (i++ == 0) {
            JButton addFaxBtn = new ButtonTab(labels.getString("eag2012.contact.addFaxNumbers"));
            addFaxBtn.addActionListener(new AddFaxAction(eag, tabbedPane, model));
            builder.add(addFaxBtn, cc.xy(5, rowNb));
        }
        setNextRow();
    }
    if (repository.getFax().size() == 0) {
        JTextField faxTf = new JTextField();
        faxTfs.add(faxTf);
        builder.add(faxTf, cc.xy(3, rowNb));
        JButton addFaxBtn = new ButtonTab(labels.getString("eag2012.contact.addFaxNumbers"));
        addFaxBtn.addActionListener(new AddFaxAction(eag, tabbedPane, model));
        builder.add(addFaxBtn, cc.xy(5, rowNb));
        setNextRow();
    }

    //getEmail()
    emailTfs = new ArrayList<JTextField>(repository.getEmail().size());
    emailTitleTfs = new ArrayList<JTextField>(repository.getEmail().size());
    if (repository.getEmail().size() == 0)
        repository.getEmail().add(new Email());
    for (Email email : repository.getEmail()) {
        JTextField emailTf = new JTextField(email.getHref());
        JTextField emailTitleTf = new JTextField(email.getContent());
        emailTfs.add(emailTf);
        emailTitleTfs.add(emailTitleTf);
        builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
        builder.add(emailTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(emailTitleTf, cc.xy(7, rowNb));
        setNextRow();
    }
    JButton addEmailBtn = new ButtonTab(labels.getString("eag2012.commons.addEmail"));
    addEmailBtn.addActionListener(new AddEmailAction(eag, tabbedPane, model));
    builder.add(addEmailBtn, cc.xy(1, rowNb));
    setNextRow();

    //getWebpage()
    webpageTfs = new ArrayList<JTextField>(repository.getWebpage().size());
    webpageTitleTfs = new ArrayList<JTextField>(repository.getWebpage().size());
    if (repository.getWebpage().size() == 0)
        repository.getWebpage().add(new Webpage());
    for (Webpage webpage : repository.getWebpage()) {
        JTextField webpageTf = new JTextField(webpage.getHref());
        JTextField webpageTitleTf = new JTextField(webpage.getContent());
        webpageTitleTfs.add(webpageTitleTf);
        webpageTfs.add(webpageTf);
        builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
        builder.add(webpageTf, cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
        builder.add(webpageTitleTf, cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("webpageTfs")) {
            if (StringUtils.isNotBlank(webpageTf.getText())
                    && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xyw(1, rowNb, 3));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(webpageTf.getText())
                && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                    cc.xyw(1, rowNb, 3));
            setNextRow();
        }
    }
    JButton addWebpageBtn = new ButtonTab(labels.getString("eag2012.commons.addWebpage"));
    addWebpageBtn.addActionListener(new AddWebpageAction(eag, tabbedPane, model));
    builder.add(addWebpageBtn, cc.xy(1, rowNb));
    setNextRow();

    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();

    JButton exitBtn = new ButtonTab(labels.getString("eag2012.commons.exit"));
    builder.add(exitBtn, cc.xy(1, rowNb));
    exitBtn.addActionListener(new ExitBtnAction(eag, tabbedPane, model));

    if (repositoryNb == 0) {
        JButton previousTabBtn = new ButtonTab(labels.getString("eag2012.commons.previousTab"));
        builder.add(previousTabBtn, cc.xy(3, rowNb));
        previousTabBtn.addActionListener(new ChangeTabBtnAction(eag, tabbedPane, model, false));
    }

    JButton nextTabBtn = new ButtonTab(labels.getString("eag2012.commons.nextTab"));
    builder.add(nextTabBtn, cc.xy(5, rowNb));
    nextTabBtn.addActionListener(new ChangeTabBtnAction(eag, tabbedPane, model, true));

    setNextRow();
    JButton saveBtn = new ButtonTab(labels.getString("eag2012.commons.save"));
    builder.add(saveBtn, cc.xy(5, rowNb));
    saveBtn.addActionListener(new SaveBtnAction(eag, tabbedPane, model));

    setNextRow();
    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();
    JButton previousInstitutionTabBtn = new ButtonTab(labels.getString("eag2012.controls.previousInstitution"));
    previousInstitutionTabBtn.addActionListener(new PreviousInstitutionTabBtnAction(eag, tabbedPane, model));
    builder.add(previousInstitutionTabBtn, cc.xy(1, rowNb));
    JButton nextInstitutionTabBtn = new ButtonTab(labels.getString("eag2012.controls.nextInstitution"));
    nextInstitutionTabBtn.addActionListener(new NextInstitutionTabBtnAction(eag, tabbedPane, model));
    builder.add(nextInstitutionTabBtn, cc.xy(5, rowNb));

    // Define the change tab listener.
    this.removeChangeListener();
    this.tabbedPane.addChangeListener(
            new ChangeTabListener(this.eag, this.tabbedPane, this.model, 2, this.repositoryNb));

    JPanel panel = builder.getPanel();
    KeyboardFocusManager.getCurrentKeyboardFocusManager()
            .addPropertyChangeListener(new FocusManagerListener(panel));
    return panel;
}

From source file:eu.apenet.dpt.standalone.gui.eag2012.EagInstitutionPanel.java

/**
 * Builds and answer the editor's general tab for the given layout.
 *
 * @return the editor's general panel//from   ww  w .ja va 2s .  c  om
 */
protected JComponent buildEditorPanel(List<String> errors) {

    if (errors == null) {
        errors = new ArrayList<String>(0);
    } else if (Utilities.isDev && errors.size() > 0) {
        LOG.info("Errors in form:");
        for (String error : errors) {
            LOG.info(error);
        }
    }

    FormLayout layout = new FormLayout("right:max(50dlu;p), 4dlu, 100dlu, 7dlu, right:p, 4dlu, 100dlu",
            EDITOR_ROW_SPEC);

    layout.setColumnGroups(new int[][] { { 1, 3, 5, 7 } });
    PanelBuilder builder = new PanelBuilder(layout);

    builder.setDefaultDialogBorder();
    CellConstraints cc = new CellConstraints();

    rowNb = 1;
    builder.addSeparator(labels.getString("eag2012.tab.yourInstitution"), cc.xyw(1, rowNb, 7));
    setNextRow();
    builder.addLabel(labels.getString("eag2012.commons.personResponsible"), cc.xy(1, rowNb));

    int sizeEvents = eag.getControl().getMaintenanceHistory().getMaintenanceEvent().size();
    if (sizeEvents == 0) {
        if (StringUtils.isNotEmpty(Eag2012Frame.getPersonResponsible())) {
            personTf = new JTextField(Eag2012Frame.getPersonResponsible());
        } else {
            personTf = new JTextField("");
        }
    } else {
        MaintenanceEvent event = eag.getControl().getMaintenanceHistory().getMaintenanceEvent()
                .get(sizeEvents - 1);
        personTf = new JTextField(event.getAgent().getContent());
    }

    builder.add(personTf, cc.xy(3, rowNb));
    setNextRow();
    builder.addLabel(labels.getString("eag2012.commons.countryCode") + "*", cc.xy(1, rowNb));
    if (isNew && StringUtils.isEmpty(eag.getArchguide().getIdentity().getRepositorid().getCountrycode())) {
        countryCodeTf = new JTextField(countrycode);
    } else {
        countryCodeTf = new JTextField(eag.getArchguide().getIdentity().getRepositorid().getCountrycode());
    }
    countryCodeTf.addKeyListener(new CheckKeyListener());
    builder.add(countryCodeTf, cc.xy(3, rowNb));
    setNextRow();
    if (errors.contains("countryCodeTf")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.countryCode")), cc.xy(1, rowNb));
        setNextRow();
    }

    if (eag.getControl().getOtherRecordId().size() == 0) {
        eag.getControl().getOtherRecordId().add(new OtherRecordId());
        if (isNew && StringUtils.isNotEmpty(mainagencycode)) {
            eag.getControl().getOtherRecordId().get(0).setLocalType("yes");
            eag.getControl().getOtherRecordId().get(0).setValue(mainagencycode);
        }
    }

    otherRecordIdTfs = new ArrayList<TextFieldWithCheckbox>(eag.getControl().getOtherRecordId().size());
    for (OtherRecordId otherRecordId : eag.getControl().getOtherRecordId()) {

        String mandatoryStar = "*";
        if (otherRecordId != eag.getControl().getOtherRecordId().get(0))
            mandatoryStar = "";

        TextFieldWithCheckbox textFieldWithCheckbox = new TextFieldWithCheckbox(otherRecordId.getValue(),
                otherRecordId.getLocalType());
        otherRecordIdTfs.add(textFieldWithCheckbox);
        builder.addLabel(labels.getString("eag2012.control.identifierInstitution") + mandatoryStar,
                cc.xy(1, rowNb));
        builder.add(textFieldWithCheckbox.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.isil.isThisISIL"), cc.xy(5, rowNb));
        textFieldWithCheckbox.getTextField().addKeyListener(new CheckKeyListener());
        builder.add(textFieldWithCheckbox.getIsilOrNotCombo(), cc.xy(7, rowNb));
        textFieldWithCheckbox.getIsilOrNotCombo()
                .addActionListener(new ComboboxActionListener(textFieldWithCheckbox));
        setNextRow();
    }
    if (errors.contains("otherRecordIdTfs")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.notIdentifierInstitution")),
                cc.xy(1, rowNb));
        setNextRow();
    }

    JButton addNewOtherIdentifierBtn = new ButtonTab(
            labels.getString("eag2012.yourinstitution.addOtherIdentifier"));
    addNewOtherIdentifierBtn.addActionListener(new AddOtherIdentifierAction(eag, tabbedPane, model));
    builder.add(addNewOtherIdentifierBtn, cc.xy(3, rowNb));

    builder.addLabel(labels.getString("eag2012.commons.idUsedInApe"), cc.xy(5, rowNb));
    if (Eag2012ValidFields.isRepositoryCodeCorrect(eag.getControl().getRecordId().getValue())) {
        idUsedInApeTf = new JTextField(eag.getControl().getRecordId().getValue());
    } else {
        idUsedInApeTf = new JTextField(TextChanger.getNewText(otherRecordIdTfs, countryCodeTf.getText()));
    }
    idUsedInApeTf.setEnabled(false);
    idUsedInApeTf.setEditable(false);
    builder.add(idUsedInApeTf, cc.xy(7, rowNb));
    setNextRow();

    if (eag.getArchguide().getIdentity().getAutform().size() == 0) {
        eag.getArchguide().getIdentity().getAutform().add(new Autform());
    }
    nameInstitutionTfs = new ArrayList<TextFieldWithLanguage>(
            eag.getArchguide().getIdentity().getAutform().size());
    for (Autform autform : eag.getArchguide().getIdentity().getAutform()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(autform.getContent(),
                autform.getLang());
        nameInstitutionTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.commons.nameOfInstitution") + "*", cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    if (errors.contains("nameInstitutionTfs")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.nameInstitutionEmpty")), cc.xy(1, rowNb));
        setNextRow();
    }

    if (eag.getArchguide().getIdentity().getParform().size() == 0) {
        eag.getArchguide().getIdentity().getParform().add(new Parform());
    }
    parallelNameTfs = new ArrayList<TextFieldWithLanguage>(
            eag.getArchguide().getIdentity().getParform().size());
    for (Parform parform : eag.getArchguide().getIdentity().getParform()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(parform.getContent(),
                parform.getLang());
        parallelNameTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.commons.parallelNameOfInstitution"), cc.xy(1, rowNb));
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }

    //print repositoryType combo
    if (eag.getArchguide().getIdentity().getRepositoryType() != null
            && !eag.getArchguide().getIdentity().getRepositoryType().isEmpty()) {
        for (RepositoryType repoType : eag.getArchguide().getIdentity().getRepositoryType()) {
            builder.addLabel(labels.getString("eag2012.identity.selectType"), cc.xy(1, rowNb));
            JComboBox comboBox = new JComboBox(typeInstitution);
            if (repoType.getValue() != null && !repoType.getValue().isEmpty()) {
                comboBox.setSelectedItem(repoType.getValue());
            } else {
                comboBox.setSelectedItem("---");
            }
            typeInstitutionComboList.add(comboBox);
            builder.add(comboBox, cc.xy(3, rowNb));
            setNextRow();
        }
    } else {
        builder.addLabel(labels.getString("eag2012.identity.selectType"), cc.xy(1, rowNb));
        JComboBox comboBox = new JComboBox(typeInstitution);
        comboBox.setSelectedItem("---");
        typeInstitutionComboList.add(comboBox);
        builder.add(comboBox, cc.xy(3, rowNb));
        setNextRow();
    }

    //add another repositoryType button
    JButton addNewTypeOfTheInstitution = new ButtonTab(
            labels.getString("eag2012.yourinstitution.addAnotherRepositoryType"));
    addNewTypeOfTheInstitution.addActionListener(new AddRepositoryTypeAction(eag, tabbedPane, model));
    builder.add(addNewTypeOfTheInstitution, cc.xy(1, rowNb));
    setNextRow();

    builder.addSeparator("", cc.xyw(1, this.rowNb, 7));
    setNextRow();

    //        if(eag.getArchguide().getDesc().getRepositories().getRepository().size() == 1) { //todo: BECAUSE FOR NOW ONLY ONE REPOSITORY!!!!
    Repository repository = eag.getArchguide().getDesc().getRepositories().getRepository().get(repositoryNb);

    boolean hasMinimumOnePostalAddress = false;
    boolean hasMinimumOneVisitorAddress = false;
    locationFields = new ArrayList<LocationType>(repository.getLocation().size());
    //        int locationNb = 0;
    for (Location location : repository.getLocation()) {
        //            locationNb++;
        boolean isPostal = false;
        LocationType locationType = new LocationType(location);
        if (StringUtils.isEmpty(location.getLocalType())
                || location.getLocalType().equals("visitors address")) {
            locationType.setLocalType("visitors address");
            if (hasMinimumOneVisitorAddress) {
                locationType.getLatitudeTf().setEnabled(false);
                locationType.getLongitudeTf().setEnabled(false);
            }
            builder.addSeparator(labels.getString("eag2012.commons.visitorsAddress"), cc.xyw(1, rowNb, 7));
            isPostal = false;
            hasMinimumOneVisitorAddress = true;
        } else if (location.getLocalType().equals("postal address")) {
            //                builder.addSeparator(labels.getString("eag2012.commons.postalAddress"), cc.xyw(1, rowNb, 7));
            isPostal = true;
            //                hasMinimumOnePostalAddress = true;
        }
        if (!isPostal) {
            locationFields.add(locationType);
            setNextRow();

            String mandatoryStar = "*";
            if (isPostal || location != repository.getLocation().get(0)) {
                mandatoryStar = "";
            }

            builder.addLabel(labels.getString("eag2012.commons.street") + mandatoryStar, cc.xy(1, rowNb));
            builder.add(locationType.getStreetTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getStreetTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("streetTf") && StringUtils.isEmpty(locationType.getStreetTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.street")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.cityTownWithPostalcode") + mandatoryStar,
                    cc.xy(1, rowNb));
            builder.add(locationType.getCityTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCityTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("cityTf") && StringUtils.isEmpty(locationType.getCityTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.city")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.country") + mandatoryStar, cc.xy(1, rowNb));
            builder.add(locationType.getCountryTf().getTextField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
            builder.add(locationType.getCountryTf().getLanguageBox(), cc.xy(7, rowNb));
            if (errors.contains("countryTf") && StringUtils.isEmpty(locationType.getCountryTfValue())) {
                setNextRow();
                builder.add(createErrorLabel(labels.getString("eag2012.errors.country")), cc.xy(1, rowNb));
            }
            setNextRow();

            builder.addLabel(labels.getString("eag2012.commons.latitude"), cc.xy(1, rowNb));
            locationType.getLatitudeTf()
                    .addFocusListener(new UpdateCoordsText(locationType, EagContactPanel.LATITUDE));
            builder.add(locationType.getLatitudeTf(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.longitude"), cc.xy(5, rowNb));
            locationType.getLongitudeTf()
                    .addFocusListener(new UpdateCoordsText(locationType, EagContactPanel.LONGITUDE));
            builder.add(locationType.getLongitudeTf(), cc.xy(7, rowNb));
            setNextRow();
        }
    }

    if (hasMinimumOneVisitorAddress) {
        JButton addNewVisitorTranslationAddressBtn = new ButtonTab(
                labels.getString("eag2012.commons.addVisitorTranslationAddress"), true);
        addNewVisitorTranslationAddressBtn
                .addActionListener(new AddAddressAction(eag, tabbedPane, model, false));
        builder.add(addNewVisitorTranslationAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    } else {
        JButton addNewVisitorAddressBtn = new ButtonTab(labels.getString("eag2012.commons.addVisitorAddress"));
        addNewVisitorAddressBtn.addActionListener(new AddAddressAction(eag, tabbedPane, model, false));
        builder.add(addNewVisitorAddressBtn, cc.xy(3, rowNb));
        setNextRow();
    }

    builder.addLabel(labels.getString("eag2012.commons.continent") + "*", cc.xy(1, rowNb));
    if (Arrays.asList(continents).contains(repository.getGeogarea().getValue())) {
        continentCombo.setSelectedItem(repository.getGeogarea().getValue());
    } else {
        continentCombo.setSelectedItem("Europe");
    }
    builder.add(continentCombo, cc.xy(3, rowNb));
    setNextRow();
    builder.addLabel(labels.getString("eag2012.commons.telephone"), cc.xy(1, rowNb));
    if (repository.getTelephone().size() > 0) {
        telephoneTf = new JTextField(repository.getTelephone().get(0).getContent());
    } else {
        telephoneTf = new JTextField();
    }
    builder.add(telephoneTf, cc.xy(3, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.commons.email"), cc.xy(1, rowNb));
    if (repository.getEmail().size() > 0) {
        emailTf = new JTextField(repository.getEmail().get(0).getHref());
        emailTitleTf = new JTextField(repository.getEmail().get(0).getContent());
    } else {
        emailTf = new JTextField();
        emailTitleTf = new JTextField();
    }
    builder.add(emailTf, cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
    builder.add(emailTitleTf, cc.xy(7, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.commons.webpage"), cc.xy(1, rowNb));
    if (repository.getWebpage().size() > 0) {
        webpageTf = new JTextField(repository.getWebpage().get(0).getHref());
        if (!StringUtils.isBlank(repository.getWebpage().get(0).getContent())) {
            webpageTitleTf = new JTextField(repository.getWebpage().get(0).getContent());
        } else {
            webpageTitleTf = new JTextField();
        }
    } else {
        webpageTf = new JTextField();
        webpageTitleTf = new JTextField();
    }
    builder.add(webpageTf, cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.commons.linkTitle"), cc.xy(5, rowNb));
    builder.add(webpageTitleTf, cc.xy(7, rowNb));
    setNextRow();
    if ((StringUtils.isNotBlank(webpageTf.getText())
            && !StringUtils.startsWithAny(webpageTf.getText(), webPrefixes)) || errors.contains("webpageTf")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
        setNextRow();
    }

    if (repository.getTimetable().getOpening().size() == 0) {
        repository.getTimetable().getOpening().add(new Opening());
    }
    openingHoursTfs = new ArrayList<TextFieldWithLanguage>(repository.getTimetable().getOpening().size());
    for (Opening opening : repository.getTimetable().getOpening()) {
        builder.addLabel(labels.getString("eag2012.commons.openingHours") + "*", cc.xy(1, rowNb));
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(opening.getContent(),
                opening.getLang());
        openingHoursTfs.add(textFieldWithLanguage);
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    if (errors.contains("openingHoursTfs")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.openingHours")), cc.xy(1, rowNb));
        setNextRow();
    }

    if (repository.getTimetable().getClosing().size() == 0) {
        repository.getTimetable().getClosing().add(new Closing());
    }
    //        closingDatesTfs = new ArrayList<TextFieldWithLanguage>(repository.getTimetable().getClosing().size());
    //        for(Closing closing : repository.getTimetable().getClosing()) {
    //            builder.addLabel(labels.getString("eag2012.commons.closingDates"), cc.xy(1, rowNb));
    //            TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(closing.getContent(), closing.getLang());
    //            closingDatesTfs.add(textFieldWithLanguage);
    //            builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
    //            builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy (5, rowNb));
    //            builder.add(textFieldWithLanguage.getLanguageBox(), cc.xy(7, rowNb));
    //            setNextRow();
    //        }

    builder.addLabel(labels.getString("eag2012.commons.accessiblePublic") + "*", cc.xy(1, rowNb));
    if (repository.getAccess() != null
            && Arrays.asList(yesOrNo).contains(repository.getAccess().getQuestion())) {
        accessiblePublicCombo.setSelectedItem(repository.getAccess().getQuestion());
    }
    builder.add(accessiblePublicCombo, cc.xy(3, rowNb));
    setNextRow();
    builder.addLabel(labels.getString("eag2012.commons.disabledAccess") + "*", cc.xy(1, rowNb));
    if (repository.getAccessibility().size() > 0
            && Arrays.asList(yesOrNo).contains(repository.getAccessibility().get(0).getQuestion())) {
        facilitiesForDisabledCombo.setSelectedItem(repository.getAccessibility().get(0).getQuestion());
    }
    builder.add(facilitiesForDisabledCombo, cc.xy(3, rowNb));
    setNextRow();

    //        builder.addLabel(labels.getString("eag2012.yourinstitution.linkToHoldingsGuide"), cc.xy(1, rowNb));
    //        if(eag.getRelations() == null) {
    //            eag.setRelations(new Relations());
    //        }
    //        if(eag.getRelations().getResourceRelation().size() > 0) {
    //            refInstitutionHoldingsGuideTf = new JTextField(eag.getRelations().getResourceRelation().get(0).getHref());
    //            if(eag.getRelations().getResourceRelation().get(0).getRelationEntry() != null)
    //                refInstitutionHoldingsGuideTitleTf = new JTextField(eag.getRelations().getResourceRelation().get(0).getRelationEntry().getContent());
    //            else
    //                refInstitutionHoldingsGuideTitleTf = new JTextField();
    //        } else {
    //            refInstitutionHoldingsGuideTf = new JTextField();
    //            refInstitutionHoldingsGuideTitleTf = new JTextField();
    //        }
    //        builder.add(refInstitutionHoldingsGuideTf, cc.xy(3, rowNb));
    //        builder.addLabel(labels.getString("eag2012.commons.linkTitle"),             cc.xy (5, rowNb));
    //        builder.add(refInstitutionHoldingsGuideTitleTf, cc.xy(7, rowNb));
    //        setNextRow();
    //        if((StringUtils.isNotBlank(refInstitutionHoldingsGuideTf.getText()) && !StringUtils.startsWithAny(refInstitutionHoldingsGuideTf.getText(), webPrefixes)) || errors.contains("refInstitutionHoldingsGuideTf")) {
    //            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
    //            setNextRow();
    //        }
    //        }

    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();

    JButton addRepositoryBtn = new ButtonTab(
            labels.getString("eag2012.yourinstitution.addRepositoryTabButton"));
    builder.add(addRepositoryBtn, cc.xy(1, rowNb));
    addRepositoryBtn.addActionListener(new AddRepositoryTabButton());

    JButton nextTabBtn = new ButtonTab(labels.getString("eag2012.commons.nextTab"));
    builder.add(nextTabBtn, cc.xy(5, rowNb));
    nextTabBtn.addActionListener(new NextTabBtnAction(eag, tabbedPane, model));

    setNextRow();
    JButton exitBtn = new ButtonTab(labels.getString("eag2012.commons.exit"));
    builder.add(exitBtn, cc.xy(1, rowNb));
    exitBtn.addActionListener(new ExitBtnAction(eag, tabbedPane, model));
    JButton saveBtn = new ButtonTab(labels.getString("eag2012.commons.save"));
    builder.add(saveBtn, cc.xy(5, rowNb));
    saveBtn.addActionListener(new SaveBtnAction(eag, tabbedPane, model));

    setNextRow();
    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    setNextRow();
    JButton nextInstitutionTabBtn = new ButtonTab(labels.getString("eag2012.controls.nextInstitution"));
    nextInstitutionTabBtn.addActionListener(new NextInstitutionTabBtnAction(eag, tabbedPane, model));
    builder.add(nextInstitutionTabBtn, cc.xy(5, rowNb));

    // Define the change tab listener.
    this.removeChangeListener();
    this.tabbedPane.addChangeListener(new ChangeTabListener(this.eag, this.tabbedPane, this.model, 0));

    JPanel panel = builder.getPanel();
    KeyboardFocusManager.getCurrentKeyboardFocusManager()
            .addPropertyChangeListener(new FocusManagerListener(panel));
    return panel;
}