/*
* 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();
}
}