it.tidalwave.swing.layout.CenterLayout Maven / Gradle / Ivy
/***********************************************************************************************************************
*
* OpenBlueSky - NetBeans Platform Enhancements
* Copyright (C) 2006-2012 by Tidalwave s.a.s. (http://www.tidalwave.it)
*
***********************************************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
***********************************************************************************************************************
*
* WWW: http://openbluesky.java.net
* SCM: https://bitbucket.org/tidalwave/openbluesky-src
*
**********************************************************************************************************************/
package it.tidalwave.swing.layout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
/*******************************************************************************
*
* @author Fabrizio Giudici
* @version $Id$
*
******************************************************************************/
public class CenterLayout implements LayoutManager
{
public void addLayoutComponent (final String name, final Component component)
{
}
public void removeLayoutComponent (Component component)
{
}
public Dimension preferredLayoutSize (final Container container)
{
final Insets insets = container.getInsets();
final Dimension result = new Dimension(0, 0);
for (int i = 0; i < container.getComponentCount(); i++)
{
final Component m = container.getComponent(i);
if (m.isVisible())
{
final Dimension componentPreferredSize = container.getComponent(i).getPreferredSize();
result.width = Math.max(result.width, componentPreferredSize.width);
result.height = Math.max(result.height, componentPreferredSize.height);
}
}
result.width += insets.left + insets.right;
result.height += insets.top + insets.bottom;
return result;
}
public Dimension minimumLayoutSize (final Container container)
{
return preferredLayoutSize(container);
}
public void layoutContainer (final Container container)
{
final int width = container.getWidth();
final int height = container.getHeight();
for (int i = 0; i < container.getComponentCount(); i++)
{
final Component component = container.getComponent(i);
final int x = (width - component.getWidth()) / 2;
final int y = (height - component.getHeight()) / 2;
component.setBounds(x, y, component.getPreferredSize().width, component.getPreferredSize().height);
}
}
}