package com.quiltplayer.view.swing.util;
import java.awt.Dimension;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.quiltplayer.properties.Configuration;
import com.quiltplayer.view.swing.panels.controlpanels.AlbumControlPanel;
import com.quiltplayer.view.swing.panels.controlpanels.ControlPanel;
@Component
public class ScreenUtils {
@Autowired
private ControlPanel controlPanel;
@Autowired
private AlbumControlPanel albumControlPanel;
public static void toggleFullscreen(final JFrame frame) {
if (Configuration.getInstance().isFullScreen())
setHalfScreen(frame);
else
setFullscreen(frame);
frame.setVisible(true);
}
public static void setScreensize(final JFrame frame) {
if (Configuration.getInstance().isFullScreen()) {
setFullscreen(frame);
}
else {
setHalfScreen(frame);
}
frame.setVisible(true);
}
private static void setHalfScreen(final JFrame frame) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.dispose();
frame.setResizable(true);
frame.setUndecorated(false);
Dimension frameDimension = Configuration.getInstance().getSavedDimensionOnFrame();
frame.setSize(frameDimension);
frame.setLocation(screenSize.width / 2 - ((int) frameDimension.getWidth() / 2), screenSize.height / 2
- ((int) frameDimension.getHeight() / 2));
Configuration.getInstance().setFullScreen(false);
Configuration.getInstance().storeConfiguration();
}
private static void setFullscreen(final JFrame frame) {
Configuration.getInstance().setSavedDimensionOnFrame(frame.getSize());
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if (gd.isFullScreenSupported()) {
frame.dispose();
frame.setLocation(0, 0);
frame.setUndecorated(true);
gd.setFullScreenWindow(frame);
}
else {
System.err.println("Full screen not supported");
frame.setSize(100, 100); // just something to let you see the window
frame.setVisible(true);
}
Configuration.getInstance().setFullScreen(true);
Configuration.getInstance().storeConfiguration();
SwingUtilities.updateComponentTreeUI(frame);
}
public int getControlPanelMarginLeft() {
return controlPanel.getWidth();
}
public int getControlPanelMarginRight() {
return albumControlPanel.getWidth();
}
}