/*
* WindowManager.java
*
* Created on September 11, 2003, 1:49 AM
*/
package kiyut.ekspos;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.io.File;
import java.util.List;
import javax.swing.JFrame;
/**
*
* @author tonny
*/
public class WindowManager {
private static WindowManager instance; // The single instance
private JFrame applicationFrame;
private ViewerWindow viewer;
/**
* Returns the single instance, creating one if it's the
* first time this method is called.
*
* @return WindowManager The single instance.
*/
public static synchronized WindowManager getInstance() {
return instance;
}
public static synchronized void createInstance(JFrame applicationFrame) {
if (instance == null) {
instance = new WindowManager(applicationFrame);
}
}
/** Creates a new instance of WindowManager */
private WindowManager(JFrame applicationFrame) {
this.applicationFrame = applicationFrame;
}
public JFrame getBrowserWindow() {
return this.applicationFrame;
}
/**
* Open Preferences Window
*/
public void openPreferencesWindow() {
PreferencesWindow preferencesWindow = new PreferencesWindow(applicationFrame, true);
preferencesWindow.pack();
preferencesWindow.setLocationRelativeTo(applicationFrame);
preferencesWindow.setVisible(true);
}
/**
* Open TOTD Window
*/
public void openTOTDWindow() {
TOTDWindow totd = new TOTDWindow();
totd.pack();
// center frame
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = totd.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
totd.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
totd.setVisible(true);
}
/** Open About Window
*/
public void openAboutWindow() {
AboutWindow window = new AboutWindow(applicationFrame, true);
window.pack();
// center frame
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = window.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
window.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
window.setVisible(true);
}
/** Open ViewerWindow
* @param files List of files
* @param index The index of first image to display
*/
public void openViewerWindow(List<File> files, int index) {
final List<File> finalFiles = files;
final int finalIndex = index;
EventQueue.invokeLater(new Runnable() {
public void run() {
if (viewer == null) {
viewer = new ViewerWindow();
}
viewer.setVisible(true);
viewer.setFiles(finalFiles);
viewer.setIndex(finalIndex);
viewer.refresh();
}
});
}
}