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

org.apache.pivot.wtk.FillPane Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to you 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.
 */
package org.apache.pivot.wtk;

import org.apache.pivot.util.ListenerList;

/**
 * Container that fills the space it has been given inside its parent
 * and then arranges its child components in a line, either vertically
 * or horizontally.
 *
 * 

This is useful, for instance, as a shortcut to making a one * row and one column {@link TablePane} or {@link GridPane}. Adding * just one child to a FillPane, such as a {@link ScrollPane}, will allow * that child to fill the containing area (as opposed to using a {@link BoxPane} * which will only size itself to the size of its children, which doesn't always * work well with a ScrollPane). * *

The n children of a FillPane will be given 1/n of the total space available, * depending on the orientation. For vertical, each child's height will be 1/n * of the total height, and for horizontal each child's width will be 1/n of the * total width. The children will always stretch to the full width / height of * the orthogonal direction. * *

Here is an example: for a horizontal FillPane with three buttons as * children: *

+--------------------------------------------------+
|+---------------++--------------++---------------+|
||               ||              ||               ||
||               ||              ||               ||
||               ||              ||               ||
||   Button 1    ||   Button 2   ||   Button 3    ||
||               ||              ||               ||
||               ||              ||               ||
||               ||              ||               ||
|+---------------++--------------++---------------+|
+--------------------------------------------------+
*

And here is a vertical FillPane with three Button children: *

+--------------------------------------------------+
|+------------------------------------------------+|
||                                                ||
||                    Button 1                    ||
||                                                ||
|+------------------------------------------------+|
|+------------------------------------------------+|
||                                                ||
||                    Button 2                    ||
||                                                ||
|+------------------------------------------------+|
|+------------------------------------------------+|
||                                                ||
||                    Button 3                    ||
||                                                ||
|+------------------------------------------------+|
+--------------------------------------------------+
* */ public class FillPane extends Container { private static class FillPaneListenerList extends WTKListenerList implements FillPaneListener { @Override public void orientationChanged(FillPane fillPane) { for (FillPaneListener listener : this) { listener.orientationChanged(fillPane); } } } private Orientation orientation = null; private FillPaneListenerList fillPaneListeners = new FillPaneListenerList(); public FillPane() { this(Orientation.HORIZONTAL); } public FillPane(Orientation orientation) { setOrientation(orientation); installSkin(FillPane.class); } public Orientation getOrientation() { return orientation; } public void setOrientation(Orientation orientation) { if (orientation == null) { throw new IllegalArgumentException(); } if (this.orientation != orientation) { this.orientation = orientation; fillPaneListeners.orientationChanged(this); } } public ListenerList getFillPaneListeners() { return fillPaneListeners; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy