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

de.invation.code.toval.graphic.dialog.AbstractEditCreateDialog Maven / Gradle / Ivy

package de.invation.code.toval.graphic.dialog;

import java.awt.Window;

import de.invation.code.toval.validate.Validate;

public abstract class AbstractEditCreateDialog extends AbstractDialog {

    private static final long serialVersionUID = 5737860895484822620L;

    private boolean editMode;
    private DialogObject originalObject;

    protected AbstractEditCreateDialog(Window owner, DialogObject originalObject) {
        super(owner);
        this.editMode = true;
        Validate.notNull(originalObject);
        this.originalObject = originalObject;
        setDialogObject(originalObject.clone());
    }

    protected AbstractEditCreateDialog(Window owner, String title, DialogObject originalObject) {
        this(owner, originalObject);
        Validate.notNull(title);
        setTitle(title);
    }
    
    protected AbstractEditCreateDialog(Window owner, Object... parameters) {
        super(owner);
        this.editMode = false;
        setDialogObject(newDialogObject(parameters));
    }

    protected AbstractEditCreateDialog(Window owner, String title, Object... parameters) {
        super(owner, title);
        this.editMode = false;
        setDialogObject(newDialogObject(parameters));
    }

    protected AbstractEditCreateDialog(Window owner, ButtonPanelLayout buttonLayout, Object... parameters) {
        super(owner, buttonLayout);
        this.editMode = false;
        setDialogObject(newDialogObject(parameters));
    }

    protected boolean editMode() {
        return editMode;
    }

    protected abstract O newDialogObject(Object... parameters);

    /**
     * Validates field values and sets properties of the dialog object according
     * to them.
* Note: Properties of the original object are not changed.
* They are set on basis of the dialog object using the method * {@link DialogObject#takeoverValues(Object)} afterwards. */ protected abstract boolean validateAndSetFieldValues() throws Exception; @Override protected void initializeContent() throws Exception { if (editMode) { prepareEditing(); } } @Override protected void okProcedure() { try { if(!validateAndSetFieldValues()) return; } catch (Exception e) { invalidFieldContentException(e); return; } if (editMode) { try { originalObject.takeoverValues(getDialogObject()); } catch (Exception e) { exception("Cannot save changes.", e); } } super.okProcedure(); } protected abstract void prepareEditing() throws Exception; @Override protected void cancelProcedure() { if (!editMode) { setDialogObject(null); } super.cancelProcedure(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy