All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.ird.observe.client.form.referential.ReferentialFormUI Maven / Gradle / Ivy

package fr.ird.observe.client.form.referential;

/*-
 * #%L
 * ObServe Toolkit :: Common Client
 * %%
 * Copyright (C) 2008 - 2017 IRD, Ultreia.io
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * .
 * #L%
 */

import fr.ird.observe.client.form.FormUI;
import fr.ird.observe.client.form.action.WithBeanFormUI;
import fr.ird.observe.client.form.action.WithCreateActionFormUI;
import fr.ird.observe.client.form.action.WithDeleteActionFormUI;
import fr.ird.observe.client.form.action.WithEditActionFormUI;
import fr.ird.observe.client.util.ObserveBlockingLayerUI;
import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.dto.referential.ReferentialDto;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.Box.Filler;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableCellRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.jaxx.runtime.JAXXContext;
import org.nuiton.jaxx.runtime.JAXXObjectDescriptor;
import org.nuiton.jaxx.runtime.JAXXUtil;
import org.nuiton.jaxx.runtime.binding.DefaultJAXXBinding;
import org.nuiton.jaxx.runtime.binding.SimpleJAXXObjectBinding;
import org.nuiton.jaxx.runtime.swing.CardLayout2Ext;
import org.nuiton.jaxx.runtime.swing.SwingUtil;
import org.nuiton.jaxx.runtime.swing.Table;
import org.nuiton.jaxx.validator.swing.SwingValidator;
import org.nuiton.jaxx.widgets.select.BeanListHeader;
import static org.nuiton.i18n.I18n.t;

public abstract class ReferentialFormUI> extends FormUI implements WithBeanFormUI, WithEditActionFormUI, WithCreateActionFormUI, WithDeleteActionFormUI {

    /*-----------------------------------------------------------------------*/
    /*------------------ Constants for all public bindings ------------------*/
    /*-----------------------------------------------------------------------*/

    public static final String BINDING_CREATE_VISIBLE = "create.visible";
    public static final String BINDING_DELETE_ENABLED = "delete.enabled";
    public static final String BINDING_DELETE_FROM_LIST_ENABLED = "deleteFromList.enabled";
    public static final String BINDING_DELETE_FROM_LIST_VISIBLE = "deleteFromList.visible";
    public static final String BINDING_DELETE_VISIBLE = "delete.visible";
    public static final String BINDING_DETAIL_ACTIONS_VISIBLE = "detailActions.visible";
    public static final String BINDING_DETAIL_ENABLED = "detail.enabled";
    public static final String BINDING_DETAIL_VISIBLE = "detail.visible";
    public static final String BINDING_EDIT_KEY_TABLE_LAYER_UI_BLOCK = "editKeyTableLayerUI.block";
    public static final String BINDING_LIST_ACTIONS_VISIBLE = "listActions.visible";
    public static final String BINDING_MODEL_ENABLED = "model.enabled";
    public static final String BINDING_MODEL_MODIFIED = "model.modified";
    public static final String BINDING_MODEL_VALID = "model.valid";
    public static final String BINDING_MODIFY_ENABLED = "modify.enabled";
    public static final String BINDING_MODIFY_VISIBLE = "modify.visible";
    public static final String BINDING_REFERENTIAL_LIST_HEADER_BEAN_TYPE = "referentialListHeader.beanType";
    public static final String BINDING_REFERENTIAL_LIST_HEADER_LABEL_TEXT = "referentialListHeader.labelText";
    public static final String BINDING_RESET_ENABLED = "reset.enabled";
    public static final String BINDING_RESET_VISIBLE = "reset.visible";
    public static final String BINDING_SAVE_ENABLED = "save.enabled";
    public static final String BINDING_SHOW_TECHNICAL_INFORMATIONS_ENABLED = "showTechnicalInformations.enabled";
    public static final String BINDING_SHOW_UNIQUE_KEYS_ENABLED = "showUniqueKeys.enabled";
    public static final String BINDING_SHOW_USAGES_ENABLED = "showUsages.enabled";

    /*-----------------------------------------------------------------------*/
    /*--------------- Constants for all none public bindings  ---------------*/
    /*-----------------------------------------------------------------------*/

    private static final String BINDING_$TABLE0_VISIBLE = "$Table0.visible";

    /*-----------------------------------------------------------------------*/
    /*------------------------- Other static fields -------------------------*/
    /*-----------------------------------------------------------------------*/

    private static final String $jaxxObjectDescriptor = "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";
    private static final Log log = LogFactory.getLog(ReferentialFormUI.class);
    private static final long serialVersionUID = 1L;

    /*-----------------------------------------------------------------------*/
    /*------------------------ Protected components  ------------------------*/
    /*-----------------------------------------------------------------------*/

    protected JButton backToList;
    protected JButton create;
    protected String createToolTip;
    protected JButton delete;
    protected JButton deleteFromList;
    protected String deleteToolTip;
    protected JButton detail;
    protected Table detailActions;
    protected String detailToolTip;
    protected Table editExtraTable;
    protected Table editI18nTable;
    protected ObserveBlockingLayerUI editKeyTableLayerUI;
    protected Table editMoreExtraTable;
    protected Table editTable;
    protected Table editView;
    protected Filler filler;
    protected JList list;
    protected Table listActions;
    protected JScrollPane listPane;
    protected String listText;
    protected JPanel listView;
    protected JButton modify;
    protected String modifyToolTip;
    protected String pluralTypeI18nKey;
    protected BeanListHeader referentialListHeader;
    protected JButton reset;
    protected JButton save;
    protected String saveToolTip;
    protected JButton showUniqueKeys;
    protected JButton showUsages;
    protected String typeI18nKey;
    protected CardLayout2Ext viewLayout;

    /*-----------------------------------------------------------------------*/
    /*------------------------- Private components  -------------------------*/
    /*-----------------------------------------------------------------------*/

    private ReferentialFormUI $FormUI0;
    private Table $Table0;

    /*-----------------------------------------------------------------------*/
    /*---------------------- Raw body code from script ----------------------*/
    /*-----------------------------------------------------------------------*/

    public static final String LIST_VIEW = "listView";
    public static final String DETAIL_VIEW = "detailView";
    
    
    public abstract SwingValidator getValidator();
    
    public abstract JTextField getUri();
    
    public void decorateUniqueKeyTable(JTable table, TableCellRenderer renderer, JScrollPane pane) {
        table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
        SwingUtil.fixTableColumnWidth(table, 1, 70);
    }
    
    @Override
    public final void startEdit() {
        getHandler().startEdit();
    }
    
    @Override
    public final void stopEdit() {
        getHandler().stopEdit();
    }
    
    @Override
    public final void resetEdit() {
        getHandler().resetEdit();
    }
    
    @Override
    public final void saveEdit() {
        getHandler().saveEdit();
    }
    
    @Override
    public final void createData() {
        getHandler().createData();
    }
    
    @Override
    public final void deleteData() {
        getHandler().deleteData();
    }

    /*-----------------------------------------------------------------------*/
    /*---------------------------- Constructors  ----------------------------*/
    /*-----------------------------------------------------------------------*/

    public ReferentialFormUI(String param0) {
        super(param0);
    }

    public ReferentialFormUI(JAXXContext param0, String param1) {
        super(param0 ,param1);
    }

    public ReferentialFormUI(String param0, Container param1) {
        super(param0 ,param1);
    }

    public ReferentialFormUI(JAXXContext param0, String param1, Container param2) {
        super(param0 ,param1 ,param2);
    }

    public ReferentialFormUI() {
        
    }

    public ReferentialFormUI(JAXXContext param0) {
        super(param0);
    }

    /*-----------------------------------------------------------------------*/
    /*--------------------------- Statics methods ---------------------------*/
    /*-----------------------------------------------------------------------*/

    public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
        return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
    }

    /*-----------------------------------------------------------------------*/
    /*---------------------------- Event methods ----------------------------*/
    /*-----------------------------------------------------------------------*/

    public void doActionPerformed__on__backToList(ActionEvent event) {
        if (log.isDebugEnabled()) {
            log.debug(event);
        }
        getHandler().backToList();
    }

    public void doActionPerformed__on__showUniqueKeys(ActionEvent event) {
        if (log.isDebugEnabled()) {
            log.debug(event);
        }
        getHandler().showUniqueKeys((JButton) event.getSource());
    }

    public void doActionPerformed__on__showUsages(ActionEvent event) {
        if (log.isDebugEnabled()) {
            log.debug(event);
        }
        getHandler().showUsages();
    }

    public void doMouseClicked__on__list(MouseEvent event) {
        if (log.isDebugEnabled()) {
            log.debug(event);
        }
        if (event.getClickCount() == 2) { getHandler().modifyDataUI(); }
    }

    public void doValueChanged__on__list(ListSelectionEvent event) {
        if (log.isDebugEnabled()) {
            log.debug(event);
        }
        if (!event.getValueIsAdjusting()) { getHandler().selectBean((R)getSelectedBean(list)); }
    }

    /*-----------------------------------------------------------------------*/
    /*----------------------- Public acessor methods  -----------------------*/
    /*-----------------------------------------------------------------------*/

    public JButton getBackToList() {
        return backToList;
    }

    public JButton getCreate() {
        return create;
    }

    public String getCreateToolTip() {
        return createToolTip;
    }

    public JButton getDelete() {
        return delete;
    }

    public JButton getDeleteFromList() {
        return deleteFromList;
    }

    public String getDeleteToolTip() {
        return deleteToolTip;
    }

    public JButton getDetail() {
        return detail;
    }

    public Table getDetailActions() {
        return detailActions;
    }

    public String getDetailToolTip() {
        return detailToolTip;
    }

    public Table getEditExtraTable() {
        return editExtraTable;
    }

    public Table getEditI18nTable() {
        return editI18nTable;
    }

    public ObserveBlockingLayerUI getEditKeyTableLayerUI() {
        return editKeyTableLayerUI;
    }

    public Table getEditMoreExtraTable() {
        return editMoreExtraTable;
    }

    public Table getEditTable() {
        return editTable;
    }

    public Table getEditView() {
        return editView;
    }

    public Filler getFiller() {
        return filler;
    }

    @Override
    public abstract ReferentialFormUIHandler getHandler();

    public JList getList() {
        return list;
    }

    public Table getListActions() {
        return listActions;
    }

    public JScrollPane getListPane() {
        return listPane;
    }

    public String getListText() {
        return listText;
    }

    public JPanel getListView() {
        return listView;
    }

    @Override
    public ReferentialFormUIModel getModel() {
        return (ReferentialFormUIModel) super.getModel();
    }

    public JButton getModify() {
        return modify;
    }

    public String getModifyToolTip() {
        return modifyToolTip;
    }

    public String getPluralTypeI18nKey() {
        return pluralTypeI18nKey;
    }

    public BeanListHeader getReferentialListHeader() {
        return referentialListHeader;
    }

    public JButton getReset() {
        return reset;
    }

    public JButton getSave() {
        return save;
    }

    public String getSaveToolTip() {
        return saveToolTip;
    }

    public JButton getShowUniqueKeys() {
        return showUniqueKeys;
    }

    public JButton getShowUsages() {
        return showUsages;
    }

    public String getTypeI18nKey() {
        return typeI18nKey;
    }

    public CardLayout2Ext getViewLayout() {
        return viewLayout;
    }

    /*-----------------------------------------------------------------------*/
    /*--------------------- Protected acessors methods  ---------------------*/
    /*-----------------------------------------------------------------------*/

    protected Table get$Table0() {
        return $Table0;
    }

    /*-----------------------------------------------------------------------*/
    /*--------------------- Components creation methods ---------------------*/
    /*-----------------------------------------------------------------------*/

    protected void addChildrenToActions() {
        actions.add(listActions, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0));
        actions.add(detailActions, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0));
    }

    protected void addChildrenToBody() {
        body.add(listView, LIST_VIEW);
        body.add(editView, DETAIL_VIEW);
    }

    protected void addChildrenToDetailActions() {
        detailActions.add($Table0, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 4, 1, 1), 0, 0));
        detailActions.add(backToList, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 4, 1, 1), 0, 0));
    }

    protected void addChildrenToEditMoreExtraTable() {
        editMoreExtraTable.add(filler, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
    }

    protected void addChildrenToEditView() {
        editView.add(editTable, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 11, 1, new Insets(0, 0, 0, 0), 0, 0));
        editView.add(editExtraTable, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, 11, 1, new Insets(0, 0, 0, 0), 0, 0));
        editView.add(editI18nTable, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, 11, 1, new Insets(0, 0, 0, 0), 0, 0));
        editView.add(editMoreExtraTable, new GridBagConstraints(0, 3, 1, 1, 1.0, 1.0, 11, 1, new Insets(0, 0, 0, 0), 0, 0));
    }

    protected void addChildrenToInvisible() {
        invisible.add(showUsages);
        invisible.add(showUniqueKeys);
    }

    protected void addChildrenToListActions() {
        listActions.add(create, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        listActions.add(modify, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        listActions.add(detail, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        listActions.add(deleteFromList, new GridBagConstraints(3, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
    }

    protected void addChildrenToListPane() {
        listPane.getViewport().add(list);
    }

    protected void addChildrenToListView() {
        listView.add(listPane, BorderLayout.CENTER);
    }

    @Override
    protected void createActions() {
        super.createActions();
        actions.setName("actions");
    }

    protected void createBackToList() {
        $objectMap.put("backToList", backToList = new JButton());
        
        backToList.setName("backToList");
        backToList.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__backToList"));
    }

    @Override
    protected void createBody() {
        super.createBody();
        body.setName("body");
        body.setLayout(viewLayout);
    }

    protected void createCreate() {
        $objectMap.put("create", create = new JButton());
        
        create.setName("create");
        create.putClientProperty("toolTipText", createToolTip);
    }

    protected void createCreateToolTip() {
        $objectMap.put("createToolTip", createToolTip = t("observe.type.action.create", typeI18nKey));
    }

    protected void createDelete() {
        $objectMap.put("delete", delete = new JButton());
        
        delete.setName("delete");
    }

    protected void createDeleteFromList() {
        $objectMap.put("deleteFromList", deleteFromList = new JButton());
        
        deleteFromList.setName("deleteFromList");
    }

    protected void createDeleteToolTip() {
        $objectMap.put("deleteToolTip", deleteToolTip = t("observe.type.action.delete", typeI18nKey));
    }

    protected void createDetail() {
        $objectMap.put("detail", detail = new JButton());
        
        detail.setName("detail");
    }

    protected void createDetailActions() {
        $objectMap.put("detailActions", detailActions = new Table());
        
        detailActions.setName("detailActions");
    }

    protected void createDetailToolTip() {
        $objectMap.put("detailToolTip", detailToolTip = t("observe.type.action.view", typeI18nKey));
    }

    protected void createEditExtraTable() {
        $objectMap.put("editExtraTable", editExtraTable = new Table());
        
        editExtraTable.setName("editExtraTable");
        editExtraTable.setVisible(false);
    }

    protected void createEditI18nTable() {
        $objectMap.put("editI18nTable", editI18nTable = new Table());
        
        editI18nTable.setName("editI18nTable");
        editI18nTable.setVisible(false);
    }

    protected void createEditKeyTableLayerUI() {
        $objectMap.put("editKeyTableLayerUI", editKeyTableLayerUI = new ObserveBlockingLayerUI());
        
        editKeyTableLayerUI.setUseIcon(false);
    }

    protected void createEditMoreExtraTable() {
        $objectMap.put("editMoreExtraTable", editMoreExtraTable = new Table());
        
        editMoreExtraTable.setName("editMoreExtraTable");
    }

    protected void createEditTable() {
        $objectMap.put("editTable", editTable = new Table());
        
        editTable.setName("editTable");
    }

    protected void createEditView() {
        $objectMap.put("editView", editView = new Table());
        
        editView.setName("editView");
    }

    protected void createFiller() {
        $objectMap.put("filler", filler = new Filler(SwingUtil.newMinDimension(), SwingUtil.newMinDimension(), SwingUtil.newMaxXDimension()));
        
        filler.setName("filler");
    }

    @Override
    protected void createInvisible() {
        super.createInvisible();
        invisible.setName("invisible");
    }

    protected void createList() {
        $objectMap.put("list", list = new JList());
        
        list.setName("list");
        list.addMouseListener(JAXXUtil.getEventListener(MouseListener.class, "mouseClicked", this, "doMouseClicked__on__list"));
        list.addListSelectionListener(JAXXUtil.getEventListener(ListSelectionListener.class, "valueChanged", this, "doValueChanged__on__list"));
    }

    protected void createListActions() {
        $objectMap.put("listActions", listActions = new Table());
        
        listActions.setName("listActions");
    }

    protected void createListPane() {
        $objectMap.put("listPane", listPane = new JScrollPane());
        
        listPane.setName("listPane");
    }

    protected void createListText() {
        $objectMap.put("listText", listText = t("observe.type.list", pluralTypeI18nKey));
    }

    protected void createListView() {
        $objectMap.put("listView", listView = new JPanel());
        
        listView.setName("listView");
        listView.setLayout(new BorderLayout());
    }

    protected void createModify() {
        $objectMap.put("modify", modify = new JButton());
        
        modify.setName("modify");
        modify.putClientProperty("toolTipText", modifyToolTip);
    }

    protected void createModifyToolTip() {
        $objectMap.put("modifyToolTip", modifyToolTip = t("observe.type.action.edit", typeI18nKey));
    }

    protected void createPluralTypeI18nKey() {
        $objectMap.put("pluralTypeI18nKey", pluralTypeI18nKey = t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(getModel().getBeanType())));
    }

    protected void createReferentialListHeader() {
        $objectMap.put("referentialListHeader", referentialListHeader = new BeanListHeader());
        
        referentialListHeader.setName("referentialListHeader");
        referentialListHeader.setShowReset(true);
    }

    protected void createReset() {
        $objectMap.put("reset", reset = new JButton());
        
        reset.setName("reset");
    }

    protected void createSave() {
        $objectMap.put("save", save = new JButton());
        
        save.setName("save");
    }

    protected void createSaveToolTip() {
        $objectMap.put("saveToolTip", saveToolTip = t("observe.type.action.save", typeI18nKey));
    }

    @Override
    protected void createShowTechnicalInformations() {
        super.createShowTechnicalInformations();
        showTechnicalInformations.setName("showTechnicalInformations");
    }

    protected void createShowUniqueKeys() {
        $objectMap.put("showUniqueKeys", showUniqueKeys = new JButton());
        
        showUniqueKeys.setName("showUniqueKeys");
        showUniqueKeys.setBorderPainted(false);
        showUniqueKeys.setToolTipText(t("observe.common.ReferentialDto.action.showUniqueKeys.tip"));
        showUniqueKeys.setFocusPainted(false);
        showUniqueKeys.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__showUniqueKeys"));
    }

    protected void createShowUsages() {
        $objectMap.put("showUsages", showUsages = new JButton());
        
        showUsages.setName("showUsages");
        showUsages.setBorderPainted(false);
        showUsages.setToolTipText(t("observe.action.show.usages.tip"));
        showUsages.setFocusPainted(false);
        showUsages.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__showUsages"));
    }

    protected void createTypeI18nKey() {
        $objectMap.put("typeI18nKey", typeI18nKey = t(ObserveI18nDecoratorHelper.getTypeI18nKey(getModel().getBeanType())));
    }

    protected void createViewLayout() {
        $objectMap.put("viewLayout", viewLayout = new CardLayout2Ext(this, "body"));
    }

    /*-----------------------------------------------------------------------*/
    /*------------------------ Internal jaxx methods ------------------------*/
    /*-----------------------------------------------------------------------*/

    @Override
    protected void $initialize() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        $FormUI0 = this;
        super.$initialize();
    }

    @Override
    protected void $initialize_01_createComponents() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_01_createComponents();
        $objectMap.put("$FormUI0", $FormUI0);
        createPluralTypeI18nKey();
        createTypeI18nKey();
        createListText();
        createCreateToolTip();
        createDetailToolTip();
        createModifyToolTip();
        createDeleteToolTip();
        createSaveToolTip();
        createEditKeyTableLayerUI();
        createViewLayout();
        createListView();
        createListPane();
        createList();
        createReferentialListHeader();
        createEditView();
        createEditTable();
        createEditExtraTable();
        createEditI18nTable();
        createEditMoreExtraTable();
        createFiller();
        createListActions();
        createCreate();
        createModify();
        createDetail();
        createDeleteFromList();
        createDetailActions();
        // inline creation of $Table0
        $objectMap.put("$Table0", $Table0 = new Table());
        
        $Table0.setName("$Table0");
        createReset();
        createSave();
        createDelete();
        createBackToList();
        createShowUsages();
        createShowUniqueKeys();
        // inline creation of $FormUI0
        setName("$FormUI0");
        
        body.setLayout(viewLayout);viewLayout.addLayoutComponent(listView, LIST_VIEW);viewLayout.addLayoutComponent(editView, DETAIL_VIEW);
    }

    @Override
    protected void $initialize_02_registerDataBindings() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_02_registerDataBindings();
        // register 24 data bindings
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_LIST_ACTIONS_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("editing", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    listActions.setVisible(!getModel().isEditing());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("editing", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DETAIL_ACTIONS_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("editing", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    detailActions.setVisible(getModel().isEditing());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("editing", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_$TABLE0_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    $Table0.setVisible(!getModel().isReadingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_MODEL_VALID, true) {
        
            @Override
            public void applyDataBinding() {
                if (getValidator() != null) {
                    getValidator().addPropertyChangeListener("valid", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (getValidator() != null) {
                    ((ReferentialFormUIModel) model).setValid(getValidator().isValid());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (getValidator() != null) {
                    getValidator().removePropertyChangeListener("valid", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_MODEL_MODIFIED, true) {
        
            @Override
            public void applyDataBinding() {
                if (getValidator() != null) {
                    getValidator().addPropertyChangeListener("changed", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (getValidator() != null) {
                    ((ReferentialFormUIModel) model).setModified(getValidator().isChanged());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (getValidator() != null) {
                    getValidator().removePropertyChangeListener("changed", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_MODEL_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    ((ReferentialFormUIModel) model).setEnabled(!getModel().isEditing() || getModel().isCreatingMode() || getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_EDIT_KEY_TABLE_LAYER_UI_BLOCK, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    editKeyTableLayerUI.setBlock(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_REFERENTIAL_LIST_HEADER_LABEL_TEXT, true ,"title") {
        
            @Override
            public void processDataBinding() {
                referentialListHeader.setLabelText(getTitle());
            }
        });
        registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_REFERENTIAL_LIST_HEADER_BEAN_TYPE, true ,"model") {
        
            @Override
            public void processDataBinding() {
                if (getModel() != null) {
                    referentialListHeader.setBeanType(getModel().getReferenceType());
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_CREATE_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    create.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_MODIFY_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    modify.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_MODIFY_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    modify.setEnabled(getModel().getSelectedBean() != null);
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DETAIL_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    detail.setVisible(getModel().isReadingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DETAIL_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    detail.setEnabled(getModel().getSelectedBean() != null);
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DELETE_FROM_LIST_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    deleteFromList.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DELETE_FROM_LIST_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    deleteFromList.setEnabled(getModel().getSelectedBean() != null);
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_RESET_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    reset.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_RESET_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("modified", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    reset.setEnabled(getModel().isModified());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("modified", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("modified", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("valid", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    save.setEnabled(getModel().isModified() && getModel().isValid());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("modified", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("valid", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DELETE_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    delete.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_DELETE_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    delete.setEnabled(getModel().getSelectedBean() != null);
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_SHOW_USAGES_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    showUsages.setEnabled(!getModel().isCreatingMode() && (getModel().isEditing() || getModel().getSelectedBean() != null));
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_SHOW_UNIQUE_KEYS_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    showUniqueKeys.setEnabled(getModel().isCreatingMode() || getModel().getSelectedBean() != null);
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_SHOW_TECHNICAL_INFORMATIONS_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("selectedBean", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    showTechnicalInformations.setEnabled(!getModel().isCreatingMode() && (getModel().isEditing() || getModel().getSelectedBean() != null));
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("editing", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("selectedBean", this);
                }
            }
        });
    }

    @Override
    protected void $initialize_03_finalizeCreateComponents() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_03_finalizeCreateComponents();
        addChildrenToBody();
        addChildrenToListView();
        addChildrenToListPane();
        addChildrenToEditView();
        addChildrenToEditMoreExtraTable();
        addChildrenToActions();
        addChildrenToListActions();
        addChildrenToDetailActions();
        // inline complete setup of $Table0
        $Table0.add(reset, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        $Table0.add(save, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        $Table0.add(delete, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(1, 1, 1, 1), 0, 0));
        addChildrenToInvisible();
    }

    @Override
    protected void $initialize_04_applyDataBindings() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_04_applyDataBindings();
        
        // apply 24 data bindings
        JAXXUtil.applyDataBinding(this, $bindings.keySet());
    }

    @Override
    protected void $initialize_05_setProperties() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_05_setProperties();
        
        // apply 15 property setters
        setTitle(t(pluralTypeI18nKey));
        listPane.setColumnHeaderView(referentialListHeader);
        editKeyTableLayerUI.setAcceptedComponentTypes(javax.swing.JScrollBar.class);
        editKeyTableLayerUI.setBlockingColor(javax.swing.UIManager.getColor("BlockingLayerUI.blockingColor"));
        list.setModel(new DefaultListModel());
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        referentialListHeader.setList(list);
        editTable.setBorder(new TitledBorder(t("observe.common.ReferentialDto.caracteristics")));
        editI18nTable.setBorder(new TitledBorder(t("observe.common.I18nReferentialDto.libelles")));
        deleteFromList.setToolTipText(t(deleteToolTip));
        delete.setToolTipText(t(deleteToolTip));
        showUsages.setIcon(SwingUtil.getUIManagerActionIcon("show-usages"));
        showUniqueKeys.setIcon(SwingUtil.getUIManagerActionIcon("show-keys"));
    }

    @Override
    protected void $initialize_06_finalizeInitialize() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_06_finalizeInitialize();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy