001 /* 002 * Copyright 2002-2007 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.application.mdi.contextmenu; 017 018 import java.beans.PropertyVetoException; 019 020 import javax.swing.JDesktopPane; 021 import javax.swing.JInternalFrame; 022 023 import org.springframework.richclient.command.ActionCommand; 024 025 /** 026 * Tiles all <code>JInternalFrame</code>s in a given <code>JDesktopPane</code>. 027 * 028 * @author Peter De Bruycker 029 */ 030 public class TileCommand extends ActionCommand { 031 private static final String ID = "tileCommand"; 032 private JDesktopPane desktop; 033 034 public TileCommand( JDesktopPane desktopPane ) { 035 super( ID ); 036 desktop = desktopPane; 037 } 038 039 protected void doExecuteCommand() { 040 JInternalFrame allFrames[] = desktop.getAllFrames(); 041 042 int frameHeight = desktop.getBounds().height / allFrames.length; 043 int y = 0; 044 for( int i = 0; i < allFrames.length; i++ ) { 045 JInternalFrame frame = allFrames[i]; 046 if( frame.isIcon() ) { 047 try { 048 frame.setIcon( false ); 049 } catch( PropertyVetoException e ) { 050 // ignore 051 } 052 } 053 054 frame.setSize( desktop.getBounds().width, frameHeight ); 055 frame.setLocation( 0, y ); 056 y = y + frameHeight; 057 } 058 } 059 }