package de.jos.labelgenerator.dialog.address; import java.awt.Container; import java.awt.Frame; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; import javax.swing.JDialog; import org.jdesktop.application.Application; import org.jdesktop.application.ApplicationContext; import de.jos.labelgenerator.LabelGeneratorApp; import de.jos.labelgenerator.components.button.ButtonLabel; import de.jos.labelgenerator.configuration.Address; import de.jos.labelgenerator.configuration.Template; import de.jos.labelgenerator.configuration.UndefinedAddress; import de.jos.labelgenerator.configuration.addressProvider.AddressProvider; import de.jos.labelgenerator.configuration.addressProvider.MockAddressProvider; public class AddressDialogController { private final List<Address> addresses = new ArrayList<Address>(); private final List<Template> templates = new ArrayList<Template>(); private JDialog dialog = null; private final ApplicationContext applicationContext = Application.getInstance(LabelGeneratorApp.class).getContext(); public AddressDialogController(Frame parentFrame, ButtonLabel selectedButton) { // read the available addresses // final AddressProvider addressProvider = new // FilesystemVCardAddressProvider(); final AddressProvider addressProvider = new MockAddressProvider(); addresses.add(new UndefinedAddress()); addresses.addAll(addressProvider.getAddresses()); // TODO templates.add(new Template("Template 1", "template_default.ftl")); templates.add(new Template("Template 2", "template_default.ftl")); // ceate the dialog dialog = new JDialog(parentFrame, "test"); // create the dialog logic final AddressPanelLogic addressPanelLogic = new AddressPanelLogic(dialog, selectedButton); // create the dialog main panel final AddressDialogPanel addressPanel = new AddressDialogPanel(applicationContext .getActionMap(addressPanelLogic), addresses, templates); // add panel to the logic addressPanelLogic.setAddressPanel(addressPanel); // set the previously configured values as default addressPanelLogic.initializeComponentsWithConfiguration(); // define modal dialog dialog.setModal(true); dialog.setName("BlockingDialog"); dialog.add(addressPanel); dialog.setBounds(getDialogRectangleRelativeToParent(dialog, 500, 300)); } public void showDialog() { dialog.setVisible(true); } private Rectangle getDialogRectangleRelativeToParent(final JDialog dialog, int width, int height) { final Container parent = dialog.getParent(); final Rectangle parentBounds = parent.getBounds(); int x = parentBounds.x + ((parentBounds.width - width) / 2); int y = parentBounds.y + ((parentBounds.height - height) / 2); return new Rectangle(x, y, width, height); } }