package org.limewire.ui.swing.components;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.Window;
import javax.swing.JDialog;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.util.OSUtils;
import org.limewire.util.SystemUtils;
/**
* A JDialog that uses LimeWire's icon.
*/
public class LimeJDialog extends JDialog {
private final LimeIconInfo iconInfo = new LimeIconInfo();
public LimeJDialog() {
super();
initialize();
}
public LimeJDialog(Dialog owner, boolean modal) {
super(owner, modal);
initialize();
}
public LimeJDialog(Dialog owner, String title, boolean modal, GraphicsConfiguration gc) {
super(owner, title, modal, gc);
initialize();
}
public LimeJDialog(Dialog owner, String title, boolean modal) {
super(owner, title, modal);
initialize();
}
public LimeJDialog(Dialog owner, String title) {
super(owner, title);
initialize();
}
public LimeJDialog(Dialog owner) {
super(owner);
initialize();
}
public LimeJDialog(Frame owner, boolean modal) {
super(owner, modal);
initialize();
}
public LimeJDialog(Frame owner, String title, boolean modal, GraphicsConfiguration gc) {
super(owner, title, modal, gc);
initialize();
}
public LimeJDialog(Frame owner, String title, boolean modal) {
super(owner, title, modal);
initialize();
}
public LimeJDialog(Frame owner, String title) {
super(owner, title);
initialize();
}
public LimeJDialog(Frame owner) {
super(owner);
initialize();
}
public LimeJDialog(Window owner, ModalityType modalityType) {
super(owner, modalityType);
initialize();
}
public LimeJDialog(Window owner, String title, ModalityType modalityType,
GraphicsConfiguration gc) {
super(owner, title, modalityType, gc);
initialize();
}
public LimeJDialog(Window owner, String title, ModalityType modalityType) {
super(owner, title, modalityType);
initialize();
}
public LimeJDialog(Window owner, String title) {
super(owner, title);
initialize();
}
public LimeJDialog(Window owner) {
super(owner);
initialize();
}
private void initialize() {
// We set the icon image on every OS except Mac OS X, because on Mac setting this doesn't actually place an icon
// in a corner of the frame; it's used instead as an icon for the minimized application. (LWC-4726)
if(!OSUtils.isMacOSX())
setIconImage(iconInfo.getImage());
GuiUtils.addHideAction(this);
}
// Overrides addNotify() to change to a platform specific icon right afterwards.
@Override
public void addNotify() {
super.addNotify();
SystemUtils.setWindowIcon(this, iconInfo.getIconFile());
// The native call to setWindowIcon is causing issues on Windows 7. It appears
// the OS is grabbing the wrong image from the ico or can't find the correct image
// at times and uses the JDialog icon on occasions instead. Calling setIconImages
// is similar to the native call in that we give the window a set of different size
// icons and the OS can choose which is most appropriate to use.
if(OSUtils.isWindows7())
setIconImages(iconInfo.getIconImages());
}
}