/* * Copyright 2010-2015 Institut Pasteur. * * This file is part of Icy. * * Icy 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. * * Icy 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 Icy. If not, see <http://www.gnu.org/licenses/>. */ package icy.action; import icy.gui.main.MainFrame; import icy.main.Icy; import icy.preferences.GeneralPreferences; import icy.resource.ResourceUtil; import icy.resource.icon.IcyIcon; import icy.swimmingPool.SwimmingPoolViewer; import icy.util.ClassUtil; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author Stephane */ public class WindowActions { public static IcyAbstractAction stayOnTopAction = new IcyAbstractAction("Stay on top", new IcyIcon( ResourceUtil.ICON_PIN), "Keep window on top", "Icy window always stays above other windows.") { /** * */ private static final long serialVersionUID = 389778521530821291L; @Override public boolean doAction(ActionEvent e) { final boolean value = !Icy.getMainInterface().isAlwaysOnTop(); // set "always on top" state Icy.getMainInterface().setAlwaysOnTop(value); // and save state GeneralPreferences.setAlwaysOnTop(value); return true; } }; public static IcyAbstractAction swimmingPoolAction = new IcyAbstractAction("Swimming Pool Viewer", new IcyIcon( ResourceUtil.ICON_DATABASE), "Show the swimming pool objects") { /** * */ private static final long serialVersionUID = -2243906270795266643L; @Override public boolean doAction(ActionEvent e) { new SwimmingPoolViewer(); return true; } }; public static IcyAbstractAction gridTileAction = new IcyAbstractAction("Grid (Shift+G)", new IcyIcon("2x2_grid"), "Grid tile arrangement", "Reorganise all opened windows in grid tile.", KeyEvent.VK_G, InputEvent.SHIFT_MASK) { /** * */ private static final long serialVersionUID = 5529845883985655784L; @Override public boolean doAction(ActionEvent e) { final MainFrame mainFrame = Icy.getMainInterface().getMainFrame(); if (mainFrame != null) { mainFrame.organizeTile(MainFrame.TILE_GRID); return true; } return false; } }; public static IcyAbstractAction horizontalTileAction = new IcyAbstractAction("Horizontal (Shift+H)", new IcyIcon( "tile_horizontal"), "Horizontal tile arrangement", "Reorganise all opened windows in horizontal tile.", KeyEvent.VK_H, InputEvent.SHIFT_MASK) { /** * */ private static final long serialVersionUID = 5752682613042198566L; @Override public boolean doAction(ActionEvent e) { final MainFrame mainFrame = Icy.getMainInterface().getMainFrame(); if (mainFrame != null) { mainFrame.organizeTile(MainFrame.TILE_HORIZONTAL); return true; } return false; } }; public static IcyAbstractAction verticalTileAction = new IcyAbstractAction("Vertical (Shift+V)", new IcyIcon( "tile_vertical"), "Vertical tile arrangement", "Reorganise all opened windows in vertical tile.", KeyEvent.VK_V, InputEvent.SHIFT_MASK) { /** * */ private static final long serialVersionUID = -3978957277869827951L; @Override public boolean doAction(ActionEvent e) { final MainFrame mainFrame = Icy.getMainInterface().getMainFrame(); if (mainFrame != null) { mainFrame.organizeTile(MainFrame.TILE_VERTICAL); return true; } return false; } }; public static IcyAbstractAction cascadeAction = new IcyAbstractAction("Cascade", new IcyIcon("cascade"), "Cascade arrangement", "Reorganise all opened windows in cascade.") { /** * */ private static final long serialVersionUID = 5074922972421168033L; @Override public boolean doAction(ActionEvent e) { final MainFrame mainFrame = Icy.getMainInterface().getMainFrame(); if (mainFrame != null) { mainFrame.organizeCascade(); return true; } return false; } }; /** * Return all actions of this class */ public static List<IcyAbstractAction> getAllActions() { final List<IcyAbstractAction> result = new ArrayList<IcyAbstractAction>(); for (Field field : WindowActions.class.getFields()) { final Class<?> type = field.getType(); try { if (ClassUtil.isSubClass(type, IcyAbstractAction[].class)) result.addAll(Arrays.asList(((IcyAbstractAction[]) field.get(null)))); else if (ClassUtil.isSubClass(type, IcyAbstractAction.class)) result.add((IcyAbstractAction) field.get(null)); } catch (Exception e) { // ignore } } return result; } }