Package de.timefinder.core.ui.form

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

/*
*  Copyright 2009 Peter Karich.
*
*  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.DataPool;
import de.timefinder.data.Feature;
import de.timefinder.data.Location;
import de.timefinder.data.access.Dao;
import de.timefinder.core.ui.metadata.PoolDescriptor;
import de.timefinder.core.ui.planner.HtmlPlannerComponent;
import de.timefinder.core.ui.planner.TimeFinderPlannerBindingFactory;
import de.timefinder.planner.TimeFinderPlanner;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Iterator;
import org.springframework.binding.form.HierarchicalFormModel;
import org.springframework.binding.value.ValueModel;
import org.springframework.binding.value.support.ObservableList;
import org.springframework.binding.value.support.ValueHolder;
import org.springframework.richclient.command.AbstractCommand;
import org.springframework.richclient.command.CommandGroup;
import org.springframework.richclient.components.ShuttleList;
import org.springframework.richclient.form.AbstractDetailForm;
import org.springframework.richclient.form.builder.TableFormBuilder;

/**
* @author Peter Karich
*/
public class LocationMasterDetailView extends TimeFinderMasterDetailView<Location> {

    private TimeFinderPlanner planner;

    @Override
    public CollectionMasterDetailForm<Location> createForm(Dao<Location> dao, String[] columns) {
        final DataPool pool = ((PoolDescriptor) getDescriptor()).getDataPool();
        return new CollectionMasterDetailForm<Location>(dao, columns) {

            @Override
            protected void printAction(Iterator<Location> iter) {
                HtmlPlannerComponent.printResources(iter, settings);
            }

            @Override
            protected AbstractDetailForm createDetailForm(HierarchicalFormModel parentFormModel,
                    ValueModel valueHolder, ObservableList masterList) {
                AbstractDaoForm objForm = new LocationForm(parentFormModel,
                        "locationDetails", valueHolder, masterList) {

                    @Override
                    protected void addTabs() {
                        TimeFinderPlannerBindingFactory factory = (TimeFinderPlannerBindingFactory) getBindingFactory();
                        TableFormBuilder fBuilder = createTab(getMessage("features.label"));

                        final Dao<Feature> featureDao = pool.getDao(Feature.class);
                        final ValueHolder featureHolder = new ValueHolder(new ArrayList<Feature>(featureDao.getAll()));
                        ShuttleList sl = (ShuttleList) fBuilder.add(
                                factory.createBoundShuttleList("features", featureHolder, null))[1];
                        sl.setVisibleRowCount(10);

                        featureDao.addListener(new PropertyChangeListener() {

                            @Override
                            public void propertyChange(PropertyChangeEvent evt) {
                                if (Dao.ATTACH.equals(evt.getPropertyName())
                                        || Dao.ATTACH_ALL.equals(evt.getPropertyName())
                                        || Dao.DETACH.equals(evt.getPropertyName())
                                        || Dao.DETACH_ALL.equals(evt.getPropertyName())) {
                                    featureHolder.setValue(new ArrayList<Feature>(featureDao.getAll()));
                                }
                            }
                        });

                        TableFormBuilder builder = createTab(getMessage("planner"));
                        planner = (TimeFinderPlanner) builder.add(
                                factory.createBoundPlanner("events", settings))[1];
                    }
                };
                objForm.setDao(dao);

                return objForm;
            }
        };
    }

    @Override
    public void close() {
        super.close();
        planner.close();
    }
}
TOP

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

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.