| /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */ |
| |
| /* |
| Part of the Processing project - http://processing.org |
| |
| Copyright (c) 2005-09 Ben Fry and Casey Reas |
| |
| 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 2 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, write to the Free Software Foundation, |
| Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| package processing.app; |
| |
| import java.awt.*; |
| import java.awt.event.*; |
| import java.util.Vector; |
| import javax.swing.*; |
| |
| |
| /** |
| * Helper class for full-screen presentation mode. |
| */ |
| public class PresentMode { |
| |
| static GraphicsDevice devices[]; |
| |
| /** |
| * Index of the default display device, probably the one that p5 was |
| * started from. |
| */ |
| static int defaultIndex; |
| |
| /** |
| * Menu object for preferences window |
| */ |
| //JMenu preferencesMenu; |
| static JComboBox selector; |
| |
| /** |
| * Index of the currently selected display to be used for present mode. |
| */ |
| static GraphicsDevice device; |
| |
| |
| static { |
| GraphicsEnvironment environment = |
| GraphicsEnvironment.getLocalGraphicsEnvironment(); |
| devices = environment.getScreenDevices(); |
| GraphicsDevice defaultDevice = environment.getDefaultScreenDevice(); |
| |
| Vector<String> names = new Vector<String>(); |
| for (int i = 0; i < devices.length; i++) { |
| String name = String.valueOf(i + 1); |
| if (devices[i] == defaultDevice) { |
| defaultIndex = i; |
| name += " (default)"; |
| } |
| names.add(name); |
| } |
| |
| selector = new JComboBox(names); |
| selector.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| int index = selector.getSelectedIndex(); |
| //device = devices[index]; |
| Preferences.setInteger("run.present.display", index + 1); |
| } |
| }); |
| } |
| |
| |
| static public JComboBox getSelector() { |
| int deviceIndex = Preferences.getInteger("run.present.display") - 1; |
| selector.setSelectedIndex(deviceIndex); |
| return selector; |
| } |
| |
| |
| /* |
| static public JFrame create() { |
| int deviceIndex = PrePreferences.getInteger("run.present.display") - 1; |
| if ((deviceIndex < 0) || (deviceIndex >= devices.length)) { |
| Base.showWarning("Display doesn't exist", |
| "Present Mode is set to use display " + |
| (deviceIndex+1) + |
| " but that doesn't seem to exist. \n" + |
| "This preference will be reset to " + |
| "use the default display.", null); |
| deviceIndex = defaultIndex; |
| } |
| //GraphicsDevice device = devices[ |
| //JFrame frame = new JFrame(devices[deviceIndex]); |
| PresentFrame frame = new PresentFrame(devices[deviceIndex]); |
| } |
| |
| |
| public void show() { |
| setUndecorated(true); |
| setResizable(false); |
| device.setFullScreenWindow(this); |
| } |
| |
| |
| public Window getWindow() { |
| return device.getFullScreenWindow(); // isn't this just me? |
| } |
| |
| |
| public void dispose() { |
| Window window = device.getFullScreenWindow(); |
| if (window != null) { |
| window.dispose(); |
| } |
| device.setFullScreenWindow(null); |
| } |
| */ |
| } |