package pckInterface;

//  Arquivo:
//  InterfaceLayout.java
//
//  Objetivo:
//  Implementacao de um controlador de posicionamento de componenetes
//  para permitir colocar os componenetes do Applet em qualquer lugar
//  da tela dando maior flexibilidade na interface com o usuario
//  
//  Compilador: javac 1.3
//  Autor: Fábio Dalla Vecchia - RA:981091
//  Última Atualização: 15-Jun-2001  
// 

import java.awt.*;

// Classe: InterfaceLayout
// Autor: Fábio Dalla Vecchia - RA:981091
// OBS: Todos os métodos padrão da estrutura Layout serão sobreescritos 
public class InterfaceLayout implements LayoutManager {

    // Construtor
    public InterfaceLayout() {
        }

    // Método para adicionar os componentes 
    public void addLayoutComponent( String name,Component comp ) {
        // apenas sobreescreve método (não precisa fazer nada)
        }

    // Método para remover componentes
    public void removeLayoutComponent( Component comp ) {
        // apenas sobreescreve método (não precisa fazer nada)
        }

    // Método para acertar a dimensão do controlador em função da 
    // dimensão dos componentes (e suas posições) para que seja 
    // possível visualizar todos eles no espaço destinado ao 
    // controlador de layout
    public Dimension preferredLayoutSize( Container parent ) {
        Insets insets = parent.insets();
        int numero = parent.countComponents();
        int largura = 0;
        int altura = 0;

        for( int i=0; i < numero; i++ ) 
            {
            Component comp = parent.getComponent( i );
            Dimension d = comp.preferredSize();
            Point p = comp.location();

            if( ( p.x + d.width ) > largura )
                largura = p.x + d.width;
            if( ( p.y + d.height ) > altura )
                altura = p.y + d.height;
            }

        return( new Dimension( insets.left + insets.right + largura,
            insets.top + insets.bottom + altura ) );
        }

    
    // Método para controlar a dimensão mínima que deve ter o 
    // controlador de Layout
    public Dimension minimumLayoutSize( Container parent ) {
        Insets insets = parent.insets();
        int numero = parent.countComponents();
        int largura = 0;
        int altura = 0;

        for( int i=0; i < numero; i++ ) 
            {
            Component comp = parent.getComponent( i );
            Dimension d = comp.preferredSize();
            Point p = comp.location();

            if( ( p.x + d.width ) > largura )
                largura = p.x + d.width;
            if( ( p.y + d.height ) > altura )
                altura = p.y + d.height;
            }

        return( new Dimension( insets.left + insets.right + largura,
            insets.top + insets.bottom + altura ) );
        }


    // Método para Reescalar os componentes a seus tamanhos 
    // preferidos (caso isso seja possível)
    public void layoutContainer( Container parent ) {
        int numero = parent.countComponents();

        for( int i=0; i < numero; i++ ) 
            {
            Component comp = parent.getComponent( i );
            Dimension d = comp.preferredSize();

            comp.resize( d.width,d.height );
            }
        }
    }
