package de.jos.labelgenerator.dialog.preferences;
import java.awt.Container;
import java.awt.Frame;
import java.awt.Rectangle;
import javax.swing.JDialog;
import org.jdesktop.application.Application;
import org.jdesktop.application.ApplicationContext;
import de.jos.labelgenerator.LabelGeneratorApp;
import de.jos.labelgenerator.components.dialog.EscapeDialog;
public class PreferencesDialogController {
private JDialog dialog = null;
private final ApplicationContext applicationContext = Application.getInstance(LabelGeneratorApp.class).getContext();
public PreferencesDialogController(final Frame parentFrame) {
// ceate the dialog
dialog = new EscapeDialog(parentFrame, "preferences");
// application configuration
final PreferencesDialogLogic logic = new PreferencesDialogLogic(dialog);
final PreferencesDialogPanel preferencesDialogPanel = new PreferencesDialogPanel(applicationContext
.getActionMap(logic));
logic.setPreferencesDialogPanel(preferencesDialogPanel);
// define modal dialog
dialog.setModal(true);
// dialog.setName("");
dialog.add(preferencesDialogPanel);
dialog.setBounds(getDialogRectangleRelativeToParent(dialog, 500, 300));
}
public void showDialog() {
dialog.setVisible(true);
}
/**
* TODO move to base class
*
* @param dialog
* @param width
* @param height
* @return
*/
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);
}
}