Package de.timefinder.core.ui.form

Source Code of de.timefinder.core.ui.form.AbstractDaoForm

/*
*  Copyright 2009 Peter Karich, peat_hal ‘at’ users ‘dot’ sourceforge ‘dot’ net.
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*       http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*  under the License.
*/
package de.timefinder.core.ui.form;

import de.timefinder.data.access.Dao;
import java.awt.BorderLayout;
import javolution.util.FastMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.swing.JComponent;
import javax.swing.JPanel;
import org.springframework.binding.form.FormModel;
import org.springframework.binding.form.HierarchicalFormModel;
import org.springframework.binding.value.ValueModel;
import org.springframework.binding.value.support.ObservableList;
import org.springframework.richclient.dialog.control.ExtTabbedPane;
import org.springframework.richclient.dialog.control.Tab;
import org.springframework.richclient.form.AbstractDetailForm;
import org.springframework.richclient.form.builder.TableFormBuilder;
import org.springframework.richclient.util.Assert;

/**
* Will be used to add/delete an object from the collection dao.getAll
* with the help of the provided form.
*
* @author Peter Karich, peat_hal ‘at’ users ‘dot’ sourceforge ‘dot’ net
* @see CollectionMasterDetailForm
*/
public abstract class AbstractDaoForm extends AbstractDetailForm {

    private Dao dao;
    private TableFormBuilder propertiesFB;
    private ExtTabbedPane pane;
    private Map<String, TableFormBuilder> allTabs = new FastMap<String, TableFormBuilder>();
    private ObservableList masterList;

    public AbstractDaoForm(HierarchicalFormModel parentFormModel,
            String formId, ValueModel childFormObjectHolder, ObservableList masterList) {
        super(parentFormModel, formId, childFormObjectHolder, masterList);
        this.masterList = masterList;
    }

    public AbstractDaoForm(FormModel formModel, String formId, ObservableList editableItemList) {
        super(formModel, formId, editableItemList);
    }

//    @Override
//    public ValidationResultsReporter newSingleLineResultsReporter(Messagable messageReceiver) {
//        ValidationResultsReporter l = super.newSingleLineResultsReporter(messageReceiver );
//        subForm.newSimpleValidationResultsReporter(getFormModel().getValidationResults(), messageReceiver );
//        return l;
//    }   
    public TableFormBuilder getFormBuilder() {
        if (propertiesFB == null) {
            propertiesFB = new TableFormBuilder(getBindingFactory());
            propertiesFB.setLabelAttributes("colGrId=label colSpec=right:pref");
        }
        return propertiesFB;
    }

    @Override
    protected JComponent createFormControl() {       
        Assert.notNull(dao);
        addTabs();

        JPanel mainPanel = new JPanel(new BorderLayout());
        if (allTabs.isEmpty()) {
            mainPanel.add(getFormBuilder().getForm(), BorderLayout.CENTER);
        } else {
            pane = new ExtTabbedPane();
            pane.addTab(new Tab("Properties", getFormBuilder().getForm()));
            for (Entry<String, TableFormBuilder> entry : allTabs.entrySet()) {
                pane.addTab(new Tab(entry.getKey(), entry.getValue().getForm()));
            }

            mainPanel.add(pane.getControl(), BorderLayout.CENTER);
        }
        mainPanel.add(createButtonBar(), BorderLayout.SOUTH);
        updateControlsForState();

        return mainPanel;
    }

    protected TableFormBuilder createTab(String str) {
        TableFormBuilder formBuilder = new TableFormBuilder(getBindingFactory());
        formBuilder.setLabelAttributes("colGrId=label colSpec=right:pref");
        allTabs.put(str, formBuilder);

        return formBuilder;
    }

    protected void addTabs() {
    }

    public void setDao(Dao dao) {
        this.dao = dao;
    }

    public Dao getDao() {
        return dao;
    }

    /**
     * Overwrites because we need to avoid masterEvent.add
     * @see org.springframework.richclient.form.AbstractForm
     * @see org.springframework.richclient.form.AbstractDetailForm
     */
    @Override
    @SuppressWarnings("unchecked")
    public void postCommit(FormModel formModel) {
        if (isEditingNewFormObject()) {
            if (dao != null)
                dao.attach(formModel.getFormObject());

            // ATTENTION: now suppress adding to list!
            // masterList.add(formModel.getFormObject());           
            setEditingFormObjectIndexSilently(masterList.size() - 1);

        } else {           
            int index = getEditingFormObjectIndex();
            // Avoid updating unless we have actually selected an object for edit
            if (index >= 0) {
                // if we add these lines like in the original class
                // the object will be duplicated sometimes! (Threading problem?)

//                IndexAdapter adapter = masterList.getIndexAdapter(index);
//                adapter.setValue(formModel.getFormObject());               
//                adapter.fireIndexedObjectChanged();
            }
        }       
        setEditingNewFormObject(false);
        setSelectedIndex(-1);
    }

    @Override
    protected Object createNewObject() {
        requestFocusInWindow();
        return dao.create();
    }

    public boolean requestFocusInWindow() {
        return false;
    }
}
TOP

Related Classes of de.timefinder.core.ui.form.AbstractDaoForm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.