Package com.tagtraum.perf.gcviewer

Source Code of com.tagtraum.perf.gcviewer.ScreenCenteredDialog

package com.tagtraum.perf.gcviewer;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Insets;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JRootPane;
import javax.swing.KeyStroke;

import com.tagtraum.perf.gcviewer.util.LocalisationHelper;

/**
* Base class for modal dialogs that are centered on screen.
*
* @author <a href="mailto:gcviewer@gmx.ch">Joerg Wuethrich</a>
* <p>created on: 25.04.2013</p>
*/
public class ScreenCenteredDialog extends JDialog implements ActionListener {

    protected static final String ACTION_OK = "ok";
   
    private Frame frame;

    public ScreenCenteredDialog(Frame f, String title) {
        super(f, title, true);
       
        frame = f;
    }

    protected JRootPane createRootPane() {
        KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
        KeyStroke enterStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
       
        JRootPane rootPane = new JRootPane();
        rootPane.registerKeyboardAction(this, escapeStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
        rootPane.registerKeyboardAction(this, enterStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
       
        return rootPane;
    }
   
    public Dimension getPreferredSize() {
        Dimension size = super.getPreferredSize();
       
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Insets scnMax = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());
        int taskBarSize = scnMax.bottom;
       
        int usableScreenHeight = screenSize.height - taskBarSize - 50;
       
        if (size.height > (usableScreenHeight)) {
            size.height = usableScreenHeight;
        }
       
        return size;
    }

    protected void initComponents() {
        Panel buttonPanel = new Panel();
        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        JButton okButton = new JButton(LocalisationHelper.getString("button_ok"));
        okButton.setActionCommand(ACTION_OK);
        okButton.addActionListener(this);
        buttonPanel.add(okButton);
       
        getContentPane().add("South", buttonPanel);
    }
   
    public void setVisible(boolean visible) {
        if (visible) {
            setLocation((int) frame.getLocation().getX() + (frame.getWidth() / 2) - (getWidth() / 2),
                    (int) frame.getLocation().getY() + (frame.getHeight() / 2) - (getHeight() / 2));
        }
       
        super.setVisible(visible);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        setVisible(false);
    }

}
TOP

Related Classes of com.tagtraum.perf.gcviewer.ScreenCenteredDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.