Layout.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:3k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit.layouts;
  26. import com.sun.lwuit.geom.Dimension;
  27. import com.sun.lwuit.*;
  28. /**
  29.  * Abstract class that can be used to arrange components in a container using
  30.  * a predefined algorithm. This class may be implemented externally and is similar
  31.  * in spirit to the AWT/Swing layout managers.
  32.  *
  33.  * @author Chen Fishbein
  34.  */
  35. public abstract class Layout {
  36.     
  37.     /**
  38.      * Layout the given parent container children
  39.      * 
  40.      * @param parent the given parent container
  41.      */
  42.     public abstract void layoutContainer(Container parent);
  43.     
  44.     
  45.     /**
  46.      * Returns the container preferred size
  47.      * 
  48.      * @param parent the parent container
  49.      * @return the container preferred size
  50.      */
  51.     public abstract Dimension getPreferredSize(Container parent);
  52.     /**
  53.      * Some layouts can optionally track the addition of elements with meta-data 
  54.      * that allows the user to "hint" on object positioning.
  55.      * 
  56.      * @param value optional meta data information, like alignment orientation
  57.      * @param comp the added component to the layout
  58.      * @param c the parent container
  59.      */
  60.     public void addLayoutComponent(Object value, Component comp, Container c) {
  61.         if(value != null) {
  62.             throw new IllegalStateException("Layout doesn't support adding with arguments: " + getClass().getName());
  63.         }
  64.     }
  65.     /**
  66.      * Removes the component from the layout this operation is only useful if the 
  67.      * layout maintains references to components within it
  68.      * 
  69.      * @param comp the removed component from layout
  70.      */
  71.     public void removeLayoutComponent(Component comp) {}
  72.     
  73.     /**
  74.      * Returns the optional component constraint
  75.      * 
  76.      * @param comp the component whose constraint should be returned
  77.      * @return the optional component constraint
  78.      */
  79.     public Object getComponentConstraint(Component comp) {
  80.         return null;
  81.     }
  82.     
  83.     /**
  84.      * This method returns true if the Layout allows Components to
  85.      * Overlap.
  86.      * 
  87.      * @return true if Components may intersect in this layout
  88.      */
  89.     public boolean isOverlapSupported(){
  90.         return false;
  91.     }
  92. }