All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.tidalwave.swing.layout.CenterLayout Maven / Gradle / Ivy

There is a newer version: 2.13.61
Show newest version
/***********************************************************************************************************************
 *
 * 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);
          }
      }      
  }        




© 2015 - 2024 Weber Informatics LLC | Privacy Policy