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

net.java.dev.designgridlayout.AbstractRow Maven / Gradle / Ivy

Go to download

DesignGridLayout is a Swing LayoutManager that helps developers build always good looking dialogs through a very easy-to-use API, without any need for a graphical GUI designer.

The newest version!
//  Copyright 2005-2013 Jason Aaron Osgood, Jean-Francois Poilpret
//
// 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.

package net.java.dev.designgridlayout;

import java.awt.Container;
import java.util.List;

import javax.swing.JComponent;

abstract class AbstractRow implements IHideable
{
	@Override final public void show()
	{
		if (_hidden > 0)
		{
			_hidden--;
			if (_hidden == 0)
			{
				// Restore visibility of all items
				for (IRowItem item: allItems())
				{
					item.show();
				}
			}
		}
	}
	
	@Override final public void hide()
	{
		if (_hidden == 0)
		{
			// Hide all items
			for (IRowItem item: allItems())
			{
				item.hide();
			}
		}
		_hidden++;
	}
	
	public final void forceShow()
	{
		if (_hidden > 0)
		{
			_hidden = 0;
			// Restore visibility of all items
			for (IRowItem item: allItems())
			{
				item.show();
			}
		}
	}
	
	// Called by DesignGridLayout immediately after instantiation
	final void init(ParentWrapper wrapper, 
		HeightGrowPolicy heightTester, OrientationPolicy orientation)
	{
		_wrapper = wrapper;
		_heightTester = heightTester;
		_orientation = orientation;
	}
	
	// Used by children
	final protected ParentWrapper parent()
	{
		return _wrapper;
	}

	// Used by children
	final protected void checkAddedComponent(JComponent component)
	{
		_wrapper.checkAddedComponent(component);
	}
	
	// Used by children
	final protected HeightGrowPolicy growPolicy()
	{
		return _heightTester;
	}

	// Used by children
	final protected OrientationPolicy orientation()
	{
		return _orientation;
	}
	
	final void setUnrelatedGap()
	{
		_unrelatedGap = true;
	}
	
	final boolean hasUnrelatedGap()
	{
		return _unrelatedGap;
	}

	final void vgap(int vgap)
	{
		_vgap = vgap;
	}

	final int vgap()
	{
		return (_hidden == 0 ? _vgap : 0);
	}

	final void init()
	{
		_height = ComponentHelper.maxValues(allItems(), PrefHeightExtractor.INSTANCE);
		_baseline = ComponentHelper.maxValues(allItems(), BaselineExtractor.INSTANCE);
		boolean fixedHeight = ComponentHelper.isFixedHeight(_heightTester, items());
		if (fixedHeight || _growWeight == -1.0)
		{
			_growWeight = (fixedHeight ? 0.0 : 1.0);
		}
	}
	
	void setLabelAlignment(LabelAlignment align)
	{
	}

	final protected int baseline()
	{
		return (_hidden == 0 ? _baseline : 0);
	}

	final int height()
	{
		return (_hidden == 0 ? _height : 0);
	}
	
	final void actualHeight(int height)
	{
		_actualHeight = height;
	}

	final int actualHeight()
	{
		return (_hidden == 0 ? _actualHeight : 0);
	}

	final void growWeight(double weight)
	{
		if (weight >= 0.0)
		{
			_growWeight = weight;
		}
	}

	final double growWeight()
	{
		return (_hidden == 0 ? _growWeight : 0.0);
	}

	int numGrids()
	{
		return 0;
	}
	
	void totalGrids(int totalGrids)
	{
	}
	
	int gridspan(int grid)
	{
		return 1;
	}
		
	int gridColumns(int grid)
	{
		return 0;
	}

	int labelWidth(int grid)
	{
		return 0;
	}

	int maxColumnWidth(int grid, int maxColumns, IExtractor extractor)
	{
		return 0;
	}

	int totalNonGridWidth(int hgap, int unrelhgap)
	{
		return 0;
	}

	int componentNonGridWidth()
	{
		return 0;
	}

	void forceComponentNonGridWidth(int width)
	{
	}

	int hgap()
	{
		return ComponentHelper.hgap(allItems(), _wrapper.parent());
	}

	int unrelhgap()
	{
		return ComponentHelper.unrelhgap(allItems(), _wrapper.parent());
	}

	int gridgap()
	{
		return 0;
	}
	
	boolean isEmpty()
	{
		return allItems().isEmpty();
	}

	JComponent leftComponent()
	{
		return (allItems().isEmpty() ? null : allItems().get(0).component());
	}
	
	JComponent rightComponent()
	{
		return (allItems().isEmpty() ? null 
			: allItems().get(allItems().size() - 1).component());
	}
	
	void checkSpanRows()
	{
	}

	abstract List items();

	// Returns all items including potential labels
	List allItems()
	{
		return items();
	}
	
	// Returns the actual extra height allocated to the row
	//CSOFF: ParameterNumber
	final int layout(LayoutHelper helper, int left, int hgap, int gridgap, 
		int unrelhgap, int rowWidth, int gridsWidth, List labelsWidth)
	{
		if (_hidden == 0)
		{
			return layoutRow(
				helper, left, hgap, gridgap, unrelhgap, rowWidth, gridsWidth, labelsWidth);
		}
		else
		{
			return 0;
		}
	}
	
	abstract int layoutRow(LayoutHelper helper, int left, int hgap, int gridgap, 
		int unrelhgap, int rowWidth, int gridsWidth, List labelsWidth);
	//CSON: ParameterNumber

	private ParentWrapper _wrapper;
	private HeightGrowPolicy _heightTester;
	private OrientationPolicy _orientation;
	private boolean _unrelatedGap = false;
	private int _vgap = 0;
	private int _baseline;
	private int _height;
	private double _growWeight = -1.0;
	private int _actualHeight;
	private int _hidden = 0;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy