package skt.swing; /** * MySwing: Advanced Swing Utilites * Copyright (C) 2005 Santhosh Kumar T * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. */ import javax.swing.*; import java.awt.*; public class SwingUtil{ /*-------------------------------------------------[ Actions ]---------------------------------------------------*/ public static void installActions(JComponent comp, Action actions[], int condition){ ActionMap actionMap = comp.getActionMap(); InputMap inputMap = comp.getInputMap(condition); for(int i = 0; i<actions.length; i++){ String name = (String)actions[i].getValue(Action.NAME); actionMap.put(name, actions[i]); inputMap.put((KeyStroke)actions[i].getValue(Action.ACCELERATOR_KEY), name); } } public static void installActions(JComponent comp, Action actions[]){ installActions(comp, actions, JComponent.WHEN_FOCUSED); } /*-------------------------------------------------[ Scrolling ]---------------------------------------------------*/ public static boolean canHScroll(JViewport viewport){ JScrollPane scrollPane = (JScrollPane)viewport.getParent(); Rectangle availR = scrollPane.getBounds(); Component view = viewport.getView(); Dimension viewPrefSize = view!=null ? view.getPreferredSize() : new Dimension(0, 0); Dimension extentSize = viewport.toViewCoordinates(availR.getSize()); boolean canHScroll = true; if(view instanceof Scrollable) canHScroll = !((Scrollable)view).getScrollableTracksViewportWidth(); if(canHScroll && (viewPrefSize.width <= extentSize.width)) canHScroll = false; return canHScroll; } public static boolean canVScroll(JViewport viewport){ JScrollPane scrollPane = (JScrollPane)viewport.getParent(); Rectangle availR = scrollPane.getBounds(); Component view = viewport.getView(); Dimension viewPrefSize = view!=null ? view.getPreferredSize() : new Dimension(0, 0); Dimension extentSize = viewport.toViewCoordinates(availR.getSize()); boolean canVScroll = true; if(view instanceof Scrollable) canVScroll = !((Scrollable)view).getScrollableTracksViewportHeight(); if(canVScroll && (viewPrefSize.height <= extentSize.height)) canVScroll = false; return canVScroll; } public static boolean canScroll(JViewport viewport){ return canHScroll(viewport) || canVScroll(viewport); } }