Example usage for com.jgoodies.forms.layout FormLayout setColumnGroups

List of usage examples for com.jgoodies.forms.layout FormLayout setColumnGroups

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout FormLayout setColumnGroups.

Prototype

public void setColumnGroups(int[][] groupOfIndices) 

Source Link

Document

Sets the column groups, where each column in a group gets the same group wide width.

Usage

From source file:eu.apenet.dpt.standalone.gui.eaccpf.EacCpfIdentityPanel.java

License:EUPL

/**
 * Builds and answer the identity tab for the given layout.
 *
 * @param errors List of errors./*from   ww w  .j  av a 2  s .c om*/
 * @return the identity tab.
 */
protected JComponent buildEditorPanel(List<String> errors) {
    // Checks and initialize the errors list.
    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);
        }
    }

    // Define the layout for the form.
    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 } });

    // Construct the panel.
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setDefaultDialogBorder();

    CellConstraints cc = new CellConstraints(); // Constraints for the cells;

    // Create object parts if needed.
    if (this.eaccpf.getCpfDescription() == null) {
        this.eaccpf.setCpfDescription(new CpfDescription());
    }
    if (this.eaccpf.getCpfDescription().getIdentity() == null) {
        this.eaccpf.getCpfDescription().setIdentity(new Identity());
    }

    // Call method to build the text of the entity type.
    builder = this.buildEntityTypeText(builder, cc);

    // Call method to build the name section.
    builder = this.buildNameSection(builder, cc, errors);

    // Call method to build the identifier section.
    builder = this.buildIdentifierSection(builder, cc);

    // Call method to build the dates of existence section.
    builder = this.buildDatesOfExistenceSection(builder, cc, errors);

    // Call method to build the main buttons zone.
    this.buildButtons(builder, cc);

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

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

From source file:eu.apenet.dpt.standalone.gui.eaccpf.EacCpfRelationsPanel.java

License:EUPL

/**
 * Builds and answer the relations tab for the given layout.
 *
 * @param errors List of errors.//from w w  w . ja  va 2s .  co m
 * @return the relations tab.
 */
protected JComponent buildEditorPanel(List<String> errors) {
    // Checks and initialize the errors list.
    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);
        }
    }

    // Define the layout for the form.
    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 } });

    // Construct the panel.
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setDefaultDialogBorder();

    CellConstraints cc = new CellConstraints(); // Constraints for the cells;

    // Create object parts if needed.
    if (this.eaccpf.getCpfDescription() == null) {
        this.eaccpf.setCpfDescription(new CpfDescription());
    }
    if (this.eaccpf.getCpfDescription().getRelations() == null) {
        this.eaccpf.getCpfDescription().setRelations(new Relations());
    }

    // Call method to build the text of the entity type.
    builder = this.buildEntityTypeText(builder, cc);

    // init globals
    initCPFGlobals();

    // Set section title.
    /*this.setNextRow();
    builder.addLabel(this.labels.getString("eaccpf.relations.cpf.section"), cc.xyw(1, this.rowNb, 7));*/

    //Call method to build sets relations section.
    builder = buildSetRelationsSection(builder, cc);
    // Call method to build cpf relations section.
    builder = this.buildCPFRelationsSection(builder, cc);

    // Button to add new CPF/identity relation.
    this.setNextRow();
    JButton addFurtherCPFBtn = new ButtonTab(this.labels.getString("eaccpf.relations.add.further.cpf"));
    addFurtherCPFBtn.addActionListener(new AddFurtherCPF(this.eaccpf, this.tabbedPane, this.model));
    builder.add(addFurtherCPFBtn, cc.xy(1, this.rowNb));

    // Call method to build resource relations section.
    builder = buildResourceRelationsSection(builder, cc);

    // Call method to build functions relations section.
    builder = buildFunctionsRelationsSection(builder, cc);

    // Call method to build the main buttons zone.
    this.buildButtons(builder, cc);

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

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

From source file:eu.apenet.dpt.standalone.gui.eaccpf.EacCpfStartPanel.java

License:EUPL

/**
 * Builds and answer the editor's tab for the given layout.
 * @return the editor's panel/*from   w w w  .  j av a2 s  .  co  m*/
 */
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, max(100dlu;p)",
            EDITOR_ROW_SPEC);

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

    LanguageDeclaration languageDeclaration = null;
    if (this.eaccpf.getControl().getLanguageDeclaration() == null) {
        languageDeclaration = new LanguageDeclaration();
        languageDeclaration.setLanguage(new Language());
        languageDeclaration.setScript(new Script());
        this.eaccpf.getControl().setLanguageDeclaration(languageDeclaration);
    }
    rowNb = 1;
    builder.addSeparator(labels.getString("eaccpf.start.title"), cc.xyw(1, rowNb, 7));
    this.setNextRow();
    // the radio button Panel
    builder.addLabel(labels.getString("eaccpf.start.createInstance") + "*" + ":", cc.xy(1, rowNb));
    this.radioBtnPanel = new JPanel();
    builder.add(makeCheckboxesType(), cc.xyw(3, rowNb, 5));
    this.setNextRow();
    builder.addLabel(labels.getString("eaccpf.start.text"), cc.xyw(1, rowNb, 5));
    this.setNextRow();
    //language
    builder.addLabel(labels.getString("eaccpf.start.language") + ":", cc.xy(1, rowNb));
    LanguageWithScript languageWithScript = new LanguageWithScript(
            languageDeclaration.getLanguage().getLanguageCode(),
            languageDeclaration.getScript().getScriptCode(), labels);
    this.languageWithScriptFirst = languageWithScript;
    builder.add(languageWithScript.getLanguageBox(), cc.xy(3, rowNb));
    //script
    builder.addLabel(labels.getString("eaccpf.start.script") + ":", cc.xy(5, rowNb));
    builder.add(languageWithScript.getScriptBox(), cc.xy(7, rowNb));
    this.setNextRow();
    builder.addSeparator("", cc.xyw(1, rowNb, 7));
    this.setNextRow();
    //exit button
    JButton exitBtn = new ButtonTab(labels.getString("eaccpf.commons.exit"));
    builder.add(exitBtn, cc.xy(5, rowNb));
    exitBtn.addActionListener(new ExitBtnAction());
    //Go button
    JButton goBtn = new ButtonTab(labels.getString("eaccpf.start.go"));
    goBtn.addActionListener(new GoBtnAction());
    builder.add(goBtn, cc.xy(7, rowNb));
    JScrollPane scrollPane;
    scrollPane = new JScrollPane(builder.getPanel());
    scrollPane.getVerticalScrollBar().setUnitIncrement(20);

    return scrollPane;
}

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

License:EUPL

@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  av a 2s  . c om*/
        }
    }

    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

License:EUPL

@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);//from   w  w  w  . ja  v  a 2 s .  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.EagControlPanel.java

License:EUPL

@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);// www .ja va 2  s . c om
        }
    }

    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.addLabel(labels.getString("eag2012.commons.idUsedInApe") + "*", cc.xy(1, rowNb));
    JTextField recordIdTf = new JTextField(eag.getControl().getRecordId().getValue());
    recordIdTf.setEnabled(false);
    builder.add(recordIdTf, cc.xy(3, rowNb));
    setNextRow();

    builder.addLabel(labels.getString("eag2012.commons.personResponsible"), cc.xy(1, rowNb));
    int sizeEvents = eag.getControl().getMaintenanceHistory().getMaintenanceEvent().size();
    if (sizeEvents > 0) {
        MaintenanceEvent event = eag.getControl().getMaintenanceHistory().getMaintenanceEvent()
                .get(sizeEvents - 1);
        personInstitutionRespTf = new TextFieldWithLanguage(event.getAgent().getContent(),
                event.getAgent().getLang());
    } else {
        personInstitutionRespTf = new TextFieldWithLanguage("", "");
    }
    personInstitutionRespTf.getTextField().setEnabled(false);
    builder.add(personInstitutionRespTf.getTextField(), cc.xy(3, rowNb));
    builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
    builder.add(personInstitutionRespTf.getLanguageBox(), cc.xy(7, rowNb));
    setNextRow();

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

    if (eag.getControl().getLanguageDeclarations() == null)
        eag.getControl().setLanguageDeclarations(new LanguageDeclarations());
    if (eag.getControl().getLanguageDeclarations().getLanguageDeclaration().size() == 0) {
        LanguageDeclaration languageDeclaration = new LanguageDeclaration();
        languageDeclaration.setLanguage(new Language());
        languageDeclaration.setScript(new Script());
        eag.getControl().getLanguageDeclarations().getLanguageDeclaration().add(languageDeclaration);
    }
    int i = 0;
    languageWithScriptTfs = new ArrayList<LanguageWithScript>(
            eag.getControl().getLanguageDeclarations().getLanguageDeclaration().size());
    for (LanguageDeclaration languageDeclaration : eag.getControl().getLanguageDeclarations()
            .getLanguageDeclaration()) {
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(1, rowNb));
        LanguageWithScript languageWithScript = new LanguageWithScript(
                languageDeclaration.getLanguage().getLanguageCode(),
                languageDeclaration.getScript().getScriptCode(), labels);
        languageWithScriptTfs.add(languageWithScript);
        builder.add(languageWithScript.getLanguageBox(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.control.descriptionScript"), cc.xy(5, rowNb));
        builder.add(languageWithScript.getScriptBox(), cc.xy(7, rowNb));
        setNextRow();
    }
    if (errors.contains("languageWithScriptTfs")) {
        builder.add(createErrorLabel(labels.getString("eag2012.errors.noscript")), cc.xy(3, rowNb));
    }

    JButton addLanguagesBtn = new ButtonTab(labels.getString("eag2012.control.addFurtherLangsAnsScripts"));
    builder.add(addLanguagesBtn, cc.xy(5, rowNb));
    addLanguagesBtn.addActionListener(new AddLanguagesBtnAction(eag, tabbedPane, model));
    setNextRow();

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

    if (eag.getControl().getConventionDeclaration().size() == 0)
        eag.getControl().getConventionDeclaration().add(new ConventionDeclaration());
    rulesConventionTfs = new ArrayList<TextFieldWithLanguage>(
            eag.getControl().getConventionDeclaration().size());
    for (ConventionDeclaration conventionDeclaration : eag.getControl().getConventionDeclaration()) {
        builder.addLabel(labels.getString("eag2012.control.abbreviation"), cc.xy(1, rowNb));
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(
                conventionDeclaration.getAbbreviation().getContent(), "",
                conventionDeclaration.getCitation().get(0).getContent());
        rulesConventionTfs.add(textFieldWithLanguage);
        builder.add(textFieldWithLanguage.getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.control.fullName"), cc.xy(5, rowNb));
        builder.add(textFieldWithLanguage.getExtraField(), cc.xy(7, rowNb));
        setNextRow();
    }

    JButton addConventionBtn = new ButtonTab(labels.getString("eag2012.commons.addCnventions"));
    builder.add(addConventionBtn, cc.xy(5, rowNb));
    addConventionBtn.addActionListener(new AddConventionBtnAction(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 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, 5));

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

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

License:EUPL

@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);//from   w  w w  . j a  va2s.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;

    //todo here

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

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

    if (repository.getRepositorhist() == null) {
        DescriptiveNote descriptiveNote = new DescriptiveNote();
        descriptiveNote.getP().add(new P());
        Repositorhist repositorhist = new Repositorhist();
        repositorhist.setDescriptiveNote(descriptiveNote);
        repository.setRepositorhist(repositorhist);
    }
    repositoryHistoryTfs = new ArrayList<TextAreaWithLanguage>(
            repository.getRepositorhist().getDescriptiveNote().getP().size());
    for (P p : repository.getRepositorhist().getDescriptiveNote().getP()) {
        builder.addLabel(labels.getString("eag2012.description.epositoryHistory"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(p.getContent(), p.getLang());
        repositoryHistoryTfs.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 addRepositorhistDescriptionBtn = new ButtonTab(
            labels.getString("eag2012.isil.addHistoryDescription"));
    builder.add(addRepositorhistDescriptionBtn, cc.xy(1, rowNb));
    addRepositorhistDescriptionBtn.addActionListener(
            new EagDescriptionPanel.AddRepositorhistDescriptionBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (repository.getRepositorfound() == null) {
        repository.setRepositorfound(new Repositorfound());
    }
    if (repository.getRepositorfound().getDate() == null) {
        repository.getRepositorfound().setDate(new Date());
    }
    if (repository.getRepositorfound().getRule().size() == 0) {
        repository.getRepositorfound().getRule().add(new Rule());
    }

    builder.addLabel(labels.getString("eag2012.description.foundationDate"), cc.xy(1, rowNb));
    repositoryFoundationDateTf = new JTextField(repository.getRepositorfound().getDate().getContent());
    builder.add(repositoryFoundationDateTf, cc.xy(3, rowNb));
    setNextRow();

    repositoryFoundationTfs = new ArrayList<TextFieldWithLanguage>(
            repository.getRepositorfound().getRule().size());
    for (Rule rule : repository.getRepositorfound().getRule()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(rule.getContent(),
                rule.getLang());
        repositoryFoundationTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.description.ruleOfRepositoryFoundation"), 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 addRuleFoundationBtn = new ButtonTab(labels.getString("eag2012.control.addRule"));
    builder.add(addRuleFoundationBtn, cc.xy(1, rowNb));
    addRuleFoundationBtn.addActionListener(new AddRuleFoundationBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (repository.getRepositorsup() == null) {
        repository.setRepositorsup(new Repositorsup());
    }
    if (repository.getRepositorsup().getDate() == null) {
        repository.getRepositorsup().setDate(new Date());
    }
    if (repository.getRepositorsup().getRule().size() == 0) {
        repository.getRepositorsup().getRule().add(new Rule());
    }

    builder.addLabel(labels.getString("eag2012.description.dateArchiveClosure"), cc.xy(1, rowNb));
    repositorySuppressionDateTf = new JTextField(repository.getRepositorsup().getDate().getContent());
    builder.add(repositorySuppressionDateTf, cc.xy(3, rowNb));
    setNextRow();

    repositorySuppressionTfs = new ArrayList<TextFieldWithLanguage>(
            repository.getRepositorsup().getRule().size());
    for (Rule rule : repository.getRepositorsup().getRule()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(rule.getContent(),
                rule.getLang());
        repositorySuppressionTfs.add(textFieldWithLanguage);
        builder.addLabel(labels.getString("eag2012.description.ruleOfRepositorySuppression"), 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 addRuleSuppressionBtn = new ButtonTab(labels.getString("eag2012.control.addRule"));
    builder.add(addRuleSuppressionBtn, cc.xy(1, rowNb));
    addRuleSuppressionBtn.addActionListener(new AddRuleSuppressionBtnAction(eag, tabbedPane, model));
    setNextRow();

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

    if (repository.getAdminhierarchy() == null) {
        repository.setAdminhierarchy(new Adminhierarchy());
    }
    if (repository.getAdminhierarchy().getAdminunit().size() == 0) {
        repository.getAdminhierarchy().getAdminunit().add(new Adminunit());
    }
    unitAdministrativeStructureTfs = new ArrayList<TextAreaWithLanguage>(
            repository.getAdminhierarchy().getAdminunit().size());
    for (Adminunit adminunit : repository.getAdminhierarchy().getAdminunit()) {
        builder.addLabel(labels.getString("eag2012.description.unitOfAdministrativeStructure"),
                cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(adminunit.getContent(),
                adminunit.getLang());
        unitAdministrativeStructureTfs.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 addUnitAdministrativeStructureBtn = new ButtonTab(
            labels.getString("eag2012.description.addAdministrationUnits"));
    builder.add(addUnitAdministrativeStructureBtn, cc.xy(1, rowNb));
    addUnitAdministrativeStructureBtn.addActionListener(
            new EagDescriptionPanel.AddUnitAdministrativeStructureBtnAction(eag, tabbedPane, model));
    setNextRow();

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

    if (repository.getBuildinginfo() == null) {
        repository.setBuildinginfo(new Buildinginfo());
    }
    if (repository.getBuildinginfo().getBuilding() == null) {
        DescriptiveNote descriptiveNote = new DescriptiveNote();
        descriptiveNote.getP().add(new P());
        Building building = new Building();
        building.setDescriptiveNote(descriptiveNote);
        repository.getBuildinginfo().setBuilding(building);
    }
    buildingTfs = new ArrayList<TextAreaWithLanguage>(
            repository.getBuildinginfo().getBuilding().getDescriptiveNote().getP().size());
    for (P p : repository.getBuildinginfo().getBuilding().getDescriptiveNote().getP()) {
        builder.addLabel(labels.getString("eag2012.description.building"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(p.getContent(), p.getLang());
        buildingTfs.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 addBuildingDescriptionBtn = new ButtonTab(labels.getString("eag2012.isil.addBuildingDescription"));
    builder.add(addBuildingDescriptionBtn, cc.xy(1, rowNb));
    addBuildingDescriptionBtn
            .addActionListener(new EagDescriptionPanel.AddBuildingDescriptionBtnAction(eag, tabbedPane, model));
    setNextRow();

    if (repository.getBuildinginfo().getRepositorarea() == null) {
        Repositorarea repositorarea = new Repositorarea();
        Num num = new Num();
        num.setUnit("linearmetre");
        repositorarea.setNum(num);
        repository.getBuildinginfo().setRepositorarea(repositorarea);
    }
    builder.addLabel(labels.getString("eag2012.description.repositoryArea"), cc.xy(1, rowNb));
    repositoryAreaTf = new JTextField(repository.getBuildinginfo().getRepositorarea().getNum().getContent());
    builder.add(repositoryAreaTf, cc.xy(3, rowNb));
    setNextRow();

    if (repository.getBuildinginfo().getLengthshelf() == null) {
        Lengthshelf lengthshelf = new Lengthshelf();
        Num num = new Num();
        num.setUnit("linearmetre");
        lengthshelf.setNum(num);
        repository.getBuildinginfo().setLengthshelf(lengthshelf);
    }
    builder.addLabel(labels.getString("eag2012.description.lengthShelf"), cc.xy(1, rowNb));
    lengthShelfTf = new JTextField(repository.getBuildinginfo().getLengthshelf().getNum().getContent());
    builder.add(lengthShelfTf, cc.xy(3, rowNb));
    setNextRow();

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

    if (repository.getHoldings() == null) {
        Holdings holdings = new Holdings();
        repository.setHoldings(holdings);
    }
    if (repository.getHoldings().getDescriptiveNote() == null) {
        repository.getHoldings().setDescriptiveNote(new DescriptiveNote());
    }
    if (repository.getHoldings().getDescriptiveNote().getP().size() == 0) {
        repository.getHoldings().getDescriptiveNote().getP().add(new P());
    }
    if (repository.getHoldings().getExtent() == null) {
        Extent extent = new Extent();
        Num num = new Num();
        num.setUnit("linearmetre");
        extent.setNum(num);
        repository.getHoldings().setExtent(extent);
    }
    if (repository.getHoldings().getDate() == null) {
        repository.getHoldings().setDate(new Date());
    }
    archivalAndOthersTfs = new ArrayList<TextAreaWithLanguage>(
            repository.getHoldings().getDescriptiveNote().getP().size());
    for (P p : repository.getHoldings().getDescriptiveNote().getP()) {
        builder.addLabel(labels.getString("eag2012.description.archivalAndOtherHoldings"), cc.xy(1, rowNb));
        TextAreaWithLanguage textAreaWithLanguage = new TextAreaWithLanguage(p.getContent(), p.getLang());
        archivalAndOthersTfs.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 addArchivalAndOthersDescriptionBtn = new ButtonTab(
            labels.getString("eag2012.isil.addArchivalAndOtherHoldingsDescription"));
    builder.add(addArchivalAndOthersDescriptionBtn, cc.xy(1, rowNb));
    addArchivalAndOthersDescriptionBtn.addActionListener(
            new EagDescriptionPanel.AddArchivalAndOthersDescriptionBtnAction(eag, tabbedPane, model));
    setNextRow();

    builder.addSeparator(labels.getString("eag2012.description.yearsOfTheHoldings"), cc.xy(1, rowNb));
    setNextRow();

    if (repository.getHoldings().getDateSet() != null) {
        //            if(repository.getHoldings().getDateSet().getDateOrDateRange().size() == 0) {
        //                List<Object> dates = TextChanger.transformDatesToDateOrDateRange(repository.getHoldings().getDateSet());
        //                repository.getHoldings().getDateSet().getDateOrDateRange().addAll(dates);
        //                repository.getHoldings().getDateSet().setDate(null);
        //                repository.getHoldings().getDateSet().setDateRange(null);
        //            }
        holdingsYearsTfs = new ArrayList<TextFieldWithDate>(
                repository.getHoldings().getDateSet().getDateOrDateRange().size());
        for (Object dateObj : repository.getHoldings().getDateSet().getDateOrDateRange()) {
            if (dateObj instanceof Date) {
                TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "", "", "",
                        ((Date) dateObj).getContent());
                holdingsYearsTfs.add(textFieldWithDate);
                builder.addLabel(labels.getString("eag2012.commons.year"), cc.xy(1, rowNb));
                builder.add(textFieldWithDate.getDateField(), cc.xy(3, rowNb));
            }
            if (dateObj instanceof DateRange) {
                TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "",
                        ((DateRange) dateObj).getFromDate().getContent(),
                        ((DateRange) dateObj).getToDate().getContent(), "");
                holdingsYearsTfs.add(textFieldWithDate);
                builder.addLabel(labels.getString("eag2012.commons.year") + " "
                        + labels.getString("eag2012.commons.from"), cc.xy(1, rowNb));
                builder.add(textFieldWithDate.getFromDateField(), cc.xy(3, rowNb));
                builder.addLabel(labels.getString("eag2012.commons.to"), cc.xy(5, rowNb));
                builder.add(textFieldWithDate.getToDateField(), cc.xy(7, rowNb));
            }
            setNextRow();
        }
    } else {
        holdingsYearsTfs = new ArrayList<TextFieldWithDate>();
        if (repository.getHoldings().getDate() != null) {
            TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "", "", "",
                    repository.getHoldings().getDate().getContent());
            holdingsYearsTfs.add(textFieldWithDate);
            builder.addLabel(labels.getString("eag2012.commons.year"), cc.xy(1, rowNb));
            builder.add(textFieldWithDate.getDateField(), cc.xy(3, rowNb));
            setNextRow();
        }
        if (repository.getHoldings().getDateRange() != null) {
            TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "",
                    repository.getHoldings().getDateRange().getFromDate().getContent(),
                    repository.getHoldings().getDateRange().getToDate().getContent(), "");
            holdingsYearsTfs.add(textFieldWithDate);
            builder.addLabel(
                    labels.getString("eag2012.commons.year") + " " + labels.getString("eag2012.commons.from"),
                    cc.xy(1, rowNb));
            builder.add(textFieldWithDate.getFromDateField(), cc.xy(3, rowNb));
            builder.addLabel(labels.getString("eag2012.commons.to"), cc.xy(5, rowNb));
            builder.add(textFieldWithDate.getToDateField(), cc.xy(7, rowNb));
            setNextRow();
        }
    }
    JButton addSingleYearBtn = new ButtonTab(labels.getString("eag2012.commons.addYearButton"));
    addSingleYearBtn.addActionListener(new AddSingleYearAction(eag, tabbedPane, model));
    builder.add(addSingleYearBtn, cc.xy(1, rowNb));
    JButton addYearRangeBtn = new ButtonTab(labels.getString("eag2012.commons.addYearRangeButton"));
    addYearRangeBtn.addActionListener(new AddYearRangeAction(eag, tabbedPane, model));
    builder.add(addYearRangeBtn, cc.xy(3, rowNb));
    setNextRow();
    builder.addLabel(labels.getString("eag2012.description.extent"), cc.xy(1, rowNb));
    extentTf = new JTextField(repository.getHoldings().getExtent().getNum().getContent());
    builder.add(extentTf, cc.xy(3, 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));

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

    if (repositoryNb == 0) {
        JButton nextTabBtn = new ButtonTab(labels.getString("eag2012.commons.nextTab"));
        builder.add(nextTabBtn, cc.xy(5, rowNb));
        nextTabBtn.addActionListener(new EagDescriptionPanel.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 EagDescriptionPanel.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, 4));

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

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

License:EUPL

/**
 * Builds and answer the editor's tab for the given layout.
 * @return the editor's panel/*from w  w w .  j  a v a  2 s . 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.addLabel(labels.getString("eag2012.commons.countryCode") + "*", cc.xy(1, rowNb));
    builder.addLabel(eag.getArchguide().getIdentity().getRepositorid().getCountrycode(), cc.xy(3, rowNb));

    builder.addLabel(labels.getString("eag2012.commons.idUsedInApe"), cc.xy(5, rowNb));
    builder.addLabel(eag.getControl().getRecordId().getValue(), cc.xy(7, rowNb));
    setNextRow();

    for (OtherRecordId otherRecordId : eag.getControl().getOtherRecordId()) {
        builder.addLabel(labels.getString("eag2012.control.identifierInstitution"), cc.xy(1, rowNb));
        builder.addLabel(otherRecordId.getValue(), cc.xy(3, rowNb));
        setNextRow();
    }

    // name of the institution
    nameInstitutionTfs = new ArrayList<TextFieldWithLanguage>(
            eag.getArchguide().getIdentity().getAutform().size());
    int loop = 0;
    for (Autform autform : eag.getArchguide().getIdentity().getAutform()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(autform.getContent(),
                autform.getLang());
        nameInstitutionTfs.add(textFieldWithLanguage);
        if (loop++ == 0) {
            builder.addLabel(labels.getString("eag2012.commons.nameOfInstitution") + "*", cc.xy(1, rowNb));
            textFieldWithLanguage.getTextField().setEnabled(false);
        } else {
            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();
    }
    JButton addNewNameInstitutionBtn = new ButtonTab(labels.getString("eag2012.identity.addAnotherForm"));
    addNewNameInstitutionBtn.addActionListener(new AddNameInstitutionAction(eag, tabbedPane, model));
    builder.add(addNewNameInstitutionBtn, cc.xy(1, rowNb));
    setNextRow();

    parallelNameTfs = new ArrayList<TextFieldWithLanguage>(
            eag.getArchguide().getIdentity().getParform().size());
    loop = 0;
    for (Parform parform : eag.getArchguide().getIdentity().getParform()) {
        TextFieldWithLanguage textFieldWithLanguage = new TextFieldWithLanguage(parform.getContent(),
                parform.getLang());
        parallelNameTfs.add(textFieldWithLanguage);
        if (loop++ == 0 && StringUtils.isNotEmpty(textFieldWithLanguage.getTextValue()))
            textFieldWithLanguage.getTextField().setEnabled(false);
        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();
    }
    JButton addNewParallelNameInstitutionBtn = new ButtonTab(
            labels.getString("eag2012.identity.addAnotherParallelName"));
    addNewParallelNameInstitutionBtn
            .addActionListener(new AddParallelNameInstitutionAction(eag, tabbedPane, model));
    builder.add(addNewParallelNameInstitutionBtn, cc.xy(1, rowNb));
    setNextRow();

    formerlyUsedNameTfs = new ArrayList<FormerlyUsedName>(
            eag.getArchguide().getIdentity().getNonpreform().size());
    for (int formerNameCounter = 0; formerNameCounter < eag.getArchguide().getIdentity().getNonpreform()
            .size(); formerNameCounter++) {
        Nonpreform nonpreform = eag.getArchguide().getIdentity().getNonpreform().get(formerNameCounter);
        String nameStr = "";
        for (int i = 0; i < nonpreform.getContent().size(); i++) {
            Object object = nonpreform.getContent().get(i);
            if (object instanceof String) {
                nameStr += (String) object;
            }
            if (object instanceof UseDates) {
                UseDates useDates = (UseDates) object;
                if (useDates.getDateSet() != null) {
                    datesForFormerlyUsedName = new ArrayList<TextFieldWithDate>(
                            useDates.getDateSet().getDateOrDateRange().size());
                    for (Object object1 : useDates.getDateSet().getDateOrDateRange()) {
                        if (object1 instanceof eu.apenet.dpt.utils.eag2012.Date) {
                            TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "", "", "",
                                    ((eu.apenet.dpt.utils.eag2012.Date) object1).getContent());
                            datesForFormerlyUsedName.add(textFieldWithDate);
                        }
                        if (object1 instanceof DateRange) {
                            TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "",
                                    ((DateRange) object1).getFromDate().getContent(),
                                    ((DateRange) object1).getToDate().getContent(), "");
                            textFieldWithDate.setDateRange(true);
                            datesForFormerlyUsedName.add(textFieldWithDate);
                        }
                    }
                } else {
                    datesForFormerlyUsedName = new ArrayList<TextFieldWithDate>();
                    if (useDates.getDate() != null) {
                        TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "", "", "",
                                useDates.getDate().getContent());
                        datesForFormerlyUsedName.add(textFieldWithDate);
                    }
                    if (useDates.getDateRange() != null) {
                        TextFieldWithDate textFieldWithDate = new TextFieldWithDate("", "",
                                useDates.getDateRange().getFromDate().getContent(),
                                useDates.getDateRange().getToDate().getContent(), "");
                        textFieldWithDate.setDateRange(true);
                        datesForFormerlyUsedName.add(textFieldWithDate);
                    }
                }
            }
        }
        if (datesForFormerlyUsedName.isEmpty())
            datesForFormerlyUsedName.add(new TextFieldWithDate("", "", "", "", ""));

        FormerlyUsedName formerlyUsedName = new FormerlyUsedName(nameStr, nonpreform.getLang(),
                datesForFormerlyUsedName);
        formerlyUsedName.setOrderInXmlFile(formerNameCounter);
        formerlyUsedNameTfs.add(formerlyUsedName);
        builder.addLabel(labels.getString("eag2012.identity.previousNameOfArchive"), cc.xy(1, rowNb));
        builder.add(formerlyUsedName.getNameTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(formerlyUsedName.getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.identity.yearsOfUsedName"), cc.xy(1, rowNb));
        setNextRow();

        for (TextFieldWithDate textFieldWithDate : datesForFormerlyUsedName) {
            if (!textFieldWithDate.isDateRange()) {
                builder.addLabel(labels.getString("eag2012.commons.year"), cc.xy(1, rowNb));
                builder.add(textFieldWithDate.getDateField(), cc.xy(3, rowNb));
                setNextRow();
            } else {
                builder.addLabel(labels.getString("eag2012.commons.year") + " "
                        + labels.getString("eag2012.commons.from"), cc.xy(1, rowNb));
                builder.add(textFieldWithDate.getFromDateField(), cc.xy(3, rowNb));
                builder.addLabel(labels.getString("eag2012.commons.to"), cc.xy(5, rowNb));
                builder.add(textFieldWithDate.getToDateField(), cc.xy(7, rowNb));
                setNextRow();
            }
        }
        if (!formerlyUsedNameTfs.isEmpty()) {
            JButton addSingleYearBtn = new ButtonTab(labels.getString("eag2012.commons.addYearButton"));
            addSingleYearBtn.setName("formerName_addSingleBtn_" + formerNameCounter);
            addSingleYearBtn.addActionListener(new AddSingleYearAction(eag, tabbedPane, model));
            builder.add(addSingleYearBtn, cc.xy(1, rowNb));
            JButton addYearRangeBtn = new ButtonTab(labels.getString("eag2012.commons.addYearRangeButton"));
            addYearRangeBtn.setName("formerName_addYearRangeBtn_" + formerNameCounter);
            addYearRangeBtn.addActionListener(new AddYearRangeAction(eag, tabbedPane, model));
            builder.add(addYearRangeBtn, cc.xy(3, rowNb));
            setNextRow();
        }
    }
    JButton addNewNonpreNameInstitutionBtn = new ButtonTab(
            labels.getString("eag2012.identity.addAnotherFormerlyUsedName"));
    addNewNonpreNameInstitutionBtn
            .addActionListener(new AddNonpreNameInstitutionAction(eag, tabbedPane, model));
    builder.add(addNewNonpreNameInstitutionBtn, cc.xy(1, 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.identity.addAnotherRepositoryType"));
    addNewTypeOfTheInstitution.addActionListener(new AddRepositoryTypeAction(eag, tabbedPane, model));
    builder.add(addNewTypeOfTheInstitution, 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));

    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 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, 1));

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

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

License:EUPL

/**
 * Builds and answer the editor's general tab for the given layout.
 *
 * @return the editor's general panel/*from w  ww.ja va2 s.c o  m*/
 */
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;
}

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

License:EUPL

@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);//  ww  w . j a  va 2 s.c  om
        }
    }

    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;
    if (eag.getRelations() == null)
        eag.setRelations(new Relations());
    Relations relations = eag.getRelations();

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

    resourceRelationTypes = new ArrayList<ResourceRelationType>(relations.getResourceRelation().size());

    if (relations.getResourceRelation().isEmpty())
        relations.getResourceRelation().add(new ResourceRelation());

    for (ResourceRelation resourceRelation : relations.getResourceRelation()) {
        if (resourceRelation.getRelationEntry() == null)
            resourceRelation.setRelationEntry(new RelationEntry());
        if (resourceRelation.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            descriptiveNote.setP(new ArrayList<P>() {
                {
                    add(new P());
                }
            });
            resourceRelation.setDescriptiveNote(descriptiveNote);
        }
        ResourceRelationType resourceRelationType = new ResourceRelationType(
                resourceRelation.getResourceRelationType(), resourceRelation.getHref(),
                resourceRelation.getRelationEntry().getContent(),
                resourceRelation.getDescriptiveNote().getP().get(0).getContent(),
                resourceRelation.getDescriptiveNote().getP().get(0).getLang(), true);
        resourceRelationTypes.add(resourceRelationType);

        builder.addLabel(labels.getString("eag2012.relations.linkToResourceRelation"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getWebsite(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.relations.typeOfRelation"), cc.xy(5, rowNb));
        builder.add(resourceRelationType.getTypeRelations(), cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("resourceRelationTypes")) {
            if (StringUtils.isNotBlank(resourceRelationType.getWebsite().getText())
                    && !StringUtils.startsWithAny(resourceRelationType.getWebsite().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(resourceRelationType.getWebsite().getText())
                && !StringUtils.startsWithAny(resourceRelationType.getWebsite().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }

        builder.addLabel(labels.getString("eag2012.relations.titleOfRelatedMaterial"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getTitleAndId(), cc.xy(3, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.relations.descriptionOfRelation"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getDescription().getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(resourceRelationType.getDescription().getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }

    JButton addResourceRelation = new ButtonTab(labels.getString("eag2012.relations.addNewResourceRelation"));
    builder.add(addResourceRelation, cc.xy(1, rowNb));
    addResourceRelation.addActionListener(new AddResourceRelationAction(eag, tabbedPane, model));
    setNextRow();

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

    institutionRelationTypes = new ArrayList<ResourceRelationType>(relations.getEagRelation().size());

    if (relations.getEagRelation().isEmpty())
        relations.getEagRelation().add(new EagRelation());

    for (EagRelation eagRelation : relations.getEagRelation()) {
        if (eagRelation.getRelationEntry().size() == 0)
            eagRelation.getRelationEntry().add(new RelationEntry());
        if (eagRelation.getDescriptiveNote() == null) {
            DescriptiveNote descriptiveNote = new DescriptiveNote();
            descriptiveNote.setP(new ArrayList<P>() {
                {
                    add(new P());
                }
            });
            eagRelation.setDescriptiveNote(descriptiveNote);
        }
        ResourceRelationType resourceRelationType = new ResourceRelationType(eagRelation.getEagRelationType(),
                eagRelation.getHref(), eagRelation.getRelationEntry().get(0).getContent(),
                eagRelation.getDescriptiveNote().getP().get(0).getContent(),
                eagRelation.getDescriptiveNote().getP().get(0).getLang(), false);
        institutionRelationTypes.add(resourceRelationType);

        builder.addLabel(labels.getString("eag2012.relations.websiteOfDescription"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getWebsite(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.relations.typeOfRelation"), cc.xy(5, rowNb));
        builder.add(resourceRelationType.getTypeRelations(), cc.xy(7, rowNb));
        setNextRow();
        if (errors.contains("institutionRelationTypes")) {
            if (StringUtils.isNotBlank(resourceRelationType.getWebsite().getText())
                    && !StringUtils.startsWithAny(resourceRelationType.getWebsite().getText(), webPrefixes)) {
                builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")),
                        cc.xy(1, rowNb));
                setNextRow();
            }
        } else if (StringUtils.isNotBlank(resourceRelationType.getWebsite().getText())
                && !StringUtils.startsWithAny(resourceRelationType.getWebsite().getText(), webPrefixes)) {
            builder.add(createErrorLabel(labels.getString("eag2012.errors.webpageProtocol")), cc.xy(1, rowNb));
            setNextRow();
        }

        builder.addLabel(labels.getString("eag2012.relations.nameIdRelatedInstitution"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getTitleAndId(), cc.xy(3, rowNb));
        setNextRow();

        builder.addLabel(labels.getString("eag2012.relations.descriptionOfRelation"), cc.xy(1, rowNb));
        builder.add(resourceRelationType.getDescription().getTextField(), cc.xy(3, rowNb));
        builder.addLabel(labels.getString("eag2012.commons.language"), cc.xy(5, rowNb));
        builder.add(resourceRelationType.getDescription().getLanguageBox(), cc.xy(7, rowNb));
        setNextRow();
    }

    JButton addInstitutionRelation = new ButtonTab(
            labels.getString("eag2012.relations.addNewInstitutionRelation"));
    builder.add(addInstitutionRelation, cc.xy(1, rowNb));
    addInstitutionRelation.addActionListener(new AddInstitutionRelationAction(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 PreviousTabBtnAction(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, 6));

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