package org.appwork.utils.swing;
import java.awt.Component;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Point;
import java.awt.Window;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.text.JTextComponent;
public class SwingUtils {
/**
* Calculates the position of a frame to be in the center of an other frame.
*
* @param parentFrame
* @param frame
* @return
*/
public static Point getCenter(final Component parentFrame, final Window frame) {
final Point point = new Point();
int x = 0, y = 0;
if (parentFrame == null || frame == null) {
point.setLocation(x, y);
return point;
}
x = parentFrame.getLocation().x + parentFrame.getSize().width / 2 - frame.getSize().width / 2;
y = parentFrame.getLocation().y + parentFrame.getSize().height / 2 - frame.getSize().height / 2;
point.setLocation(x, y);
return point;
}
/**
* @param frame
* @param string
*/
public static JComponent getComponentByName(final JComponent frame, final String name) {
JComponent ret = null;
for (final Component c : frame.getComponents()) {
if (c instanceof JComponent) {
if (c.getName() != null && c.getName().equals(name)) {
return (JComponent) c;
} else {
ret = SwingUtils.getComponentByName((JComponent) c, name);
if (ret != null) { return ret; }
}
}
}
return null;
}
public static Window getWindowForComponent(final Component parentComponent) {
if (parentComponent == null) { return JOptionPane.getRootFrame(); }
if (parentComponent instanceof Frame || parentComponent instanceof java.awt.Dialog) { return (Window) parentComponent; }
return SwingUtils.getWindowForComponent(parentComponent.getParent());
}
/**
* @param btnDetails
*/
public static <T extends AbstractButton> T toBold(final T button) {
final Font f = button.getFont();
button.setFont(f.deriveFont(f.getStyle() ^ Font.BOLD));
return button;
}
/**
* @param ret
* @return
* @return
*/
public static <T extends JLabel> T toBold(final T label) {
final Font f = label.getFont();
label.setFont(f.deriveFont(f.getStyle() ^ Font.BOLD));
return label;
}
/**
* @param label
*/
public static <T extends JTextComponent> T toBold(final T label) {
final Font f = label.getFont();
label.setFont(f.deriveFont(f.getStyle() ^ Font.BOLD));
return label;
}
}