/*
* Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org
* Use is subject to license terms. See license.txt.
*/
package org.beanfabrics.swing.customizer;
import java.awt.BorderLayout;
import java.beans.Customizer;
import javax.swing.JPanel;
import org.beanfabrics.ModelProvider;
import org.beanfabrics.ModelSubscriber;
import org.beanfabrics.Path;
/**
* The <code>ModelSubscriberCustomizer</code> is a Java Beans {@link Customizer} for a {@link ModelSubscriber}.
*
* @author Michael Karneim
*/
@SuppressWarnings("serial")
public class ModelSubscriberCustomizer<PM extends ModelSubscriberCustomizerPM> extends CustomizerBasePanel<PM> {
private ModelProvider localProvider;
private ModelSubscriberCustomizerPanel modelSubscriberCustomizerPanel;
private JPanel centerPanel;
protected ModelSubscriberCustomizer(PM pm) {
super(pm);
getLocalProvider().setPresentationModel(pm);
setLayout(new BorderLayout());
add(getCenterPanel(), BorderLayout.CENTER);
}
public ModelSubscriberCustomizer() {
this((PM) new ModelSubscriberCustomizerPM());
}
private JPanel getCenterPanel() {
if (centerPanel == null) {
centerPanel = new JPanel();
centerPanel.setBorder(null);
centerPanel.setOpaque(false);
centerPanel.setLayout(new BorderLayout(0, 0));
centerPanel.add(getModelSubscriberCustomizerPanel(), BorderLayout.CENTER);
}
return centerPanel;
}
/**
* Returns the local {@link ModelProvider} for this class.
*
* @wbp.nonvisual location=10,430
* @return the local <code>ModelProvider</code>
*/
protected ModelProvider getLocalProvider() {
if (localProvider == null) {
localProvider = new ModelProvider(); // @wb:location=16,477
localProvider.setPresentationModelType(ModelSubscriberCustomizerPM.class);
}
return localProvider;
}
public ModelSubscriberCustomizerPanel getModelSubscriberCustomizerPanel() {
if (modelSubscriberCustomizerPanel == null) {
modelSubscriberCustomizerPanel = new ModelSubscriberCustomizerPanel();
modelSubscriberCustomizerPanel.setPath(new Path("this"));
modelSubscriberCustomizerPanel.setModelProvider(getLocalProvider());
}
return modelSubscriberCustomizerPanel;
}
}