package com.niklim.clicktrace.dialog; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import com.niklim.clicktrace.view.MainFrameHolder; public class AbstractDialogView { protected JDialog dialog; protected JButton okButton; protected JButton cancelButton; public AbstractDialogView() { // TODO fixme: MainFrameHolder.get() == null dialog = new JDialog(MainFrameHolder.get(), true); } public JDialog dialog() { return dialog; } public JButton okButton() { return okButton; } public JButton cancelButton() { return cancelButton; } protected void center() { Rectangle mainFrameRect = MainFrameHolder.get().getBounds(); int x = mainFrameRect.x + (int) (mainFrameRect.getWidth() - dialog.getWidth()) / 2; int y = mainFrameRect.y + (int) (mainFrameRect.getHeight() - dialog.getHeight()) / 2; dialog.setBounds(x, y, dialog.getWidth(), dialog.getHeight()); } protected JPanel createControlPanel(String okText, JComponent... components) { okButton = new JButton(okText); cancelButton = new JButton("Cancel"); cancelButton.setToolTipText("[Esc]"); JPanel buttonPanel = new JPanel(new MigLayout("align r, insets 10 0 0 0")); buttonPanel.add(cancelButton, "tag cancel"); buttonPanel.add(okButton, "tag ok"); JPanel controlPanel = null; if (components.length == 0) { controlPanel = buttonPanel; } else { controlPanel = embedExtraComponents(buttonPanel, components); } return controlPanel; } private JPanel embedExtraComponents(JPanel buttonPanel, JComponent... components) { JPanel controlPanel = new JPanel(new MigLayout("insets 0", "[]push[]")); JPanel extraPanel = new JPanel(); for (JComponent c : components) { extraPanel.add(c); } controlPanel.add(extraPanel); controlPanel.add(buttonPanel); return controlPanel; } }