/*
* 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.core.util.DualEvent;
import de.timefinder.core.springrc.MyAbstractTableMasterForm;
import de.timefinder.core.ui.metadata.DualEventDescriptor;
import de.timefinder.core.ui.metadata.PoolDescriptor;
import de.timefinder.data.util.Helper;
import de.timefinder.data.Event;
import de.timefinder.data.access.Dao;
import de.timefinder.data.meta.UiShow;
import java.awt.BorderLayout;
import java.util.Collection;
import javax.swing.JComponent;
import javax.swing.JPanel;
import org.springframework.binding.form.HierarchicalFormModel;
import org.springframework.binding.value.ValueModel;
import org.springframework.binding.value.support.ObservableList;
import org.springframework.richclient.application.support.AbstractView;
import org.springframework.richclient.command.AbstractCommand;
import org.springframework.richclient.command.CommandGroup;
import org.springframework.richclient.form.AbstractDetailForm;
import org.springframework.richclient.form.Form;
import org.springframework.richclient.form.FormModelHelper;
import org.springframework.richclient.form.binding.Binding;
import org.springframework.richclient.form.binding.swing.SwingBindingFactory;
import org.springframework.richclient.form.builder.TableFormBuilder;
/**
* @author Peter Karich
*/
public class DualEventMasterDetailView extends AbstractView {
public Form createForm(Dao<Event> dao, final String[] columns) {
Object events = new Object() {
public Collection<DualEvent> getAll() {
return ((DualEventDescriptor) getDescriptor()).getDualEvents();
}
};
return new MyAbstractTableMasterForm(FormModelHelper.createFormModel(events), "all",
DualEvent.class.getSimpleName().toLowerCase(), DualEvent.class) {
// @Override
// protected void updateControlsForState() {
// }
@Override
protected CommandGroup getCommandGroup() {
return CommandGroup.createCommandGroup(null, new AbstractCommand[]{});
}
@Override
protected AbstractDetailForm createDetailForm(HierarchicalFormModel parentFormModel,
ValueModel valueHolder, ObservableList masterList) {
return new AbstractDaoForm(parentFormModel,
"dualeventsDetails", valueHolder, masterList) {
@Override
protected JComponent createFormControl() {
SwingBindingFactory factory = (SwingBindingFactory) getBindingFactory();
TableFormBuilder formBuilder = getFormBuilder();
Binding bind = factory.createBoundList("commonPersons");
formBuilder.add(bind);
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(getFormBuilder().getForm(), BorderLayout.CENTER);
updateControlsForState();
return mainPanel;
}
};
}
@Override
protected String[] getColumnPropertyNames() {
return columns;
}
};
}
@Override
protected JComponent createControl() {
@SuppressWarnings("unchecked")
PoolDescriptor<Event> tableDescriptor = (PoolDescriptor<Event>) getDescriptor();
JPanel panel = new JPanel(new BorderLayout());
Form mdForm = createForm(tableDescriptor.getDao(), Helper.convert(String.class,
tableDescriptor.getObjectDescriptor().getUiProperties(UiShow.OVERVIEW)));
panel.add(mdForm.getControl(), BorderLayout.CENTER);
return panel;
}
}