Package aurelienribon.utils.swing

Source Code of aurelienribon.utils.swing.SwingHelper

package aurelienribon.utils.swing;

import java.awt.Component;
import java.awt.Desktop;
import java.awt.Desktop.Action;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Window;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import java.awt.event.WindowListener;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

/**
* @author Aurelien Ribon | http://www.aurelienribon.com
*/
public class SwingHelper {
  /**
   * Adds a listener to the window parent of the given component. Can be
   * before the component is really added to its hierachy.
   * @param source The source component
   * @param listener The listener to add to the window
   */
  public static void addWindowListener(final Component source, final WindowListener listener) {
    if (source instanceof Window) {
      ((Window)source).addWindowListener(listener);
    } else {
      source.addHierarchyListener(new HierarchyListener() {
        @Override public void hierarchyChanged(HierarchyEvent e) {
          if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) == HierarchyEvent.SHOWING_CHANGED) {
            SwingUtilities.getWindowAncestor(source).addWindowListener(listener);
          }
        }
      });
    }
  }

  /**
   * Centers a component according to the window location.
   * @param wnd The parent window
   * @param cmp A component, usually a dialog
   */
  public static void centerInWindow(Window wnd, Component cmp) {
    Dimension size = wnd.getSize();
    Point loc = wnd.getLocationOnScreen();
    Dimension cmpSize = cmp.getSize();
    loc.x += (size.width  - cmpSize.width)/2;
    loc.y += (size.height - cmpSize.height)/2;
    cmp.setBounds(loc.x, loc.y, cmpSize.width, cmpSize.height);
  }

  /**
   * Opens the given website in the default browser, or show a message saying
   * that no default browser could be accessed.
   * @param parent The parent of the error message, if raised
   * @param uri The website uri
   */
  public static void browse(Component parent, String uri) {
    boolean cannotBrowse = false;
    if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Action.BROWSE)) {
      try {
        Desktop.getDesktop().browse(new URI(uri));
      } catch (URISyntaxException ex) {
      } catch (IOException ex) {
        cannotBrowse = true;
      }
    } else {
      cannotBrowse = true;
    }

    if (cannotBrowse) {
      JOptionPane.showMessageDialog(parent,
        "It seems that I can't open a website using your"
        + "default browser, sorry.");
    }
  }
}
TOP

Related Classes of aurelienribon.utils.swing.SwingHelper

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.