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

fr.ird.observe.client.form.open.OpenDataFormUI Maven / Gradle / Ivy

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

/*-
 * #%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.form.action.WithOpenCloseDataActionFormUI;
import fr.ird.observe.dto.data.OpenableDto;
import fr.ird.observe.dto.reference.DataDtoReference;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JButton;
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.swing.Table;

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

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

    public static final String BINDING_CLOSE_DATA_ENABLED = "closeData.enabled";
    public static final String BINDING_CLOSE_DATA_VISIBLE = "closeData.visible";
    public static final String BINDING_CREATE_ENABLED = "create.enabled";
    public static final String BINDING_CREATE_VISIBLE = "create.visible";
    public static final String BINDING_DELETE_VISIBLE = "delete.visible";
    public static final String BINDING_EDIT_ACTIONS_VISIBLE = "editActions.visible";
    public static final String BINDING_EXTRA_ACTIONS_VISIBLE = "extraActions.visible";
    public static final String BINDING_OPEN_ACTIONS_VISIBLE = "openActions.visible";
    public static final String BINDING_OPEN_DATA_ENABLED = "openData.enabled";
    public static final String BINDING_OPEN_DATA_VISIBLE = "openData.visible";
    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";

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

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

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

    protected JButton closeData;
    protected JButton create;
    protected JButton delete;
    protected Table editActions;
    protected Table extraActions;
    protected Table openActions;
    protected JButton openData;
    protected JButton reset;
    protected JButton save;

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

    private OpenDataFormUI $FormUI0;

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

    @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();
    }
    
    @Override
    public final void openData() {
        getHandler().openData();
    }
    
    @Override
    public final void closeData() {
        getHandler().closeData();
    }

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

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

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

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

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

    public OpenDataFormUI() {
        
    }

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

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

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

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

    public JButton getCloseData() {
        return closeData;
    }

    public JButton getCreate() {
        return create;
    }

    public JButton getDelete() {
        return delete;
    }

    public Table getEditActions() {
        return editActions;
    }

    public Table getExtraActions() {
        return extraActions;
    }

    @Override
    public abstract OpenDataFormUIHandler getHandler();

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

    public Table getOpenActions() {
        return openActions;
    }

    public JButton getOpenData() {
        return openData;
    }

    public JButton getReset() {
        return reset;
    }

    public JButton getSave() {
        return save;
    }

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

    protected void addChildrenToActions() {
        actions.add(editActions, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0));
        actions.add(extraActions, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0));
        actions.add(openActions, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0));
    }

    protected void addChildrenToEditActions() {
        editActions.add(reset, new GridBagConstraints(0, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
        editActions.add(save, new GridBagConstraints(1, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
        editActions.add(delete, new GridBagConstraints(2, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
    }

    protected void addChildrenToOpenActions() {
        openActions.add(openData, new GridBagConstraints(0, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
        openActions.add(closeData, new GridBagConstraints(1, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
        openActions.add(create, new GridBagConstraints(2, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(2, 2, 2, 2), 0, 0));
    }

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

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

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

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

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

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

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

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

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

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

    /*-----------------------------------------------------------------------*/
    /*------------------------ 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);
        createEditActions();
        createReset();
        createSave();
        createDelete();
        createExtraActions();
        createOpenActions();
        createOpenData();
        createCloseData();
        createCreate();
        // inline creation of $FormUI0
        setName("$FormUI0");
    }

    @Override
    protected void $initialize_02_registerDataBindings() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_02_registerDataBindings();
        // register 13 data bindings
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_EXTRA_ACTIONS_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    extraActions.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_EDIT_ACTIONS_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    editActions.setVisible(!getModel().isReadingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_RESET_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    reset.setVisible(!getModel().isReadingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_RESET_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("creatingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("modified", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    reset.setEnabled(getModel().isCreatingMode() ? true : getModel().isModified());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("creatingMode", this);
                }
                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_OPEN_ACTIONS_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("canWrite", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    openActions.setVisible(getModel().isCanWrite());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("canWrite", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_OPEN_DATA_VISIBLE, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("canReopen", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    openData.setVisible(getModel().isReadingMode() && getModel().isCanReopen());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("canReopen", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_OPEN_DATA_ENABLED, true, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("readingMode", this);
                }
                if (model != null) {
                    model.addPropertyChangeListener("canReopen", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    openData.setEnabled(getModel().isReadingMode() && getModel().isCanReopen());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("readingMode", this);
                }
                if (model != null) {
                    model.removePropertyChangeListener("canReopen", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_CLOSE_DATA_VISIBLE, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    closeData.setVisible(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        registerDataBinding(new DefaultJAXXBinding(this, BINDING_CLOSE_DATA_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    closeData.setEnabled(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
        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_CREATE_ENABLED, true) {
        
            @Override
            public void applyDataBinding() {
                if (model != null) {
                    model.addPropertyChangeListener("updatingMode", this);
                }
            }
        
            @Override
            public void processDataBinding() {
                if (model != null) {
                    create.setEnabled(getModel().isUpdatingMode());
                }
            }
        
            @Override
            public void removeDataBinding() {
                if (model != null) {
                    model.removePropertyChangeListener("updatingMode", this);
                }
            }
        });
    }

    @Override
    protected void $initialize_03_finalizeCreateComponents() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_03_finalizeCreateComponents();
        addChildrenToActions();
        addChildrenToEditActions();
        addChildrenToOpenActions();
    }

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

    @Override
    protected void $initialize_05_setProperties() {
        if (log.isDebugEnabled()) {
            log.debug(this);
        }
        super.$initialize_05_setProperties();
        
        // apply 1 property setters
        reset.setHorizontalTextPosition(JButton.RIGHT);
    }

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

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy