/*
* #%L
* gitools-ui-app
* %%
* Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
package org.gitools.ui.core.components;
import com.alee.extended.statusbar.WebMemoryBar;
import com.alee.extended.statusbar.WebStatusBar;
import com.alee.laf.button.WebButton;
import com.alee.laf.label.WebLabel;
import org.gitools.ui.core.Application;
import org.gitools.ui.platform.IconUtils;
import org.gitools.ui.platform.icons.IconNames;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class StatusBar extends WebStatusBar {
private static final long serialVersionUID = -8072022883069269170L;
private WebLabel statusLabel;
private WebMemoryBar memoryBar;
private boolean fullscreen = false;
public StatusBar() {
createComponents();
}
private void createComponents() {
WebButton fullScreenBtn = WebButton.createIconWebButton(IconUtils.getImageIconResource(IconNames.fullscreen));
fullScreenBtn.setUndecorated(true);
fullScreenBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Application app = Application.get();
// Toggle state
fullscreen = !fullscreen;
// Update state
if (fullscreen) {
app.getJMenuBar().setVisible(false);
app.getToolBar().setVisible(false);
updateFullscreen();
} else {
app.getJMenuBar().setVisible(true);
app.getToolBar().setVisible(true);
updateFullscreen();
}
}
});
add(fullScreenBtn);
statusLabel = new WebLabel();
add(statusLabel);
// Memory bar
memoryBar = new WebMemoryBar();
memoryBar.setShowMaximumMemory(true);
memoryBar.setPreferredWidth(memoryBar.getPreferredSize().width + 20);
addToEnd(memoryBar);
}
public void setText(final String text) {
statusLabel.setText(text);
}
private DisplayMode dispModeOld = null;
private void updateFullscreen() {
Application frame = Application.get();
//get a reference to the device.
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode dispMode = device.getDisplayMode();
//save the old display mode before changing it.
dispModeOld = device.getDisplayMode();
if (!fullscreen) {
//change to windowed mode.
//set the display mode back to the what it was when
//the program was launched.
device.setDisplayMode(dispModeOld);
//hide the frame so we can change it.
//frame.setVisible(false);
//remove the frame from being displayable.
frame.dispose();
//put the borders back on the frame.
frame.setUndecorated(false);
//needed to unset this window as the fullscreen window.
device.setFullScreenWindow(null);
//recenter window
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setAlwaysOnTop(false);
//reset the display mode to what it was before
//we changed it.
frame.setVisible(false);
frame.setVisible(true);
} else { //change to fullscreen.
//hide everything
frame.setVisible(false);
//remove the frame from being displayable.
frame.dispose();
//remove borders around the frame
frame.setUndecorated(true);
//make the window fullscreen.
device.setFullScreenWindow(frame);
//attempt to change the screen resolution.
device.setDisplayMode(dispMode);
frame.setResizable(false);
frame.setAlwaysOnTop(true);
//show the frame
frame.setVisible(false);
frame.setVisible(true);
}
//make sure that the screen is refreshed.
repaint();
}
}