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

org.javabuilders.layout.LayoutCell Maven / Gradle / Ivy

The newest version!
/**
 * 
 */
package org.javabuilders.layout;

import java.util.ArrayList;
import java.util.List;



/**
 * Describes a particular cell within a layout and the controls in it
 * @author Jacek Furmankiewicz
 */
public class LayoutCell {

	/**
	 * Standard character used for spanning information
	 */
	public static final char SPAN_INDICATOR='+';
	
	/**
	 * Standard character used to indicate spanning across an entire row or column
	 */
	public static final char MAX_SPAN_VALUE = '*';
	
	private int columnIndex = 0;
	private int rowIndex = 0;
	private Flow flow = Flow.HORIZONTAL;
	
	private List controls = new ArrayList();
	
	/**
	 * Constructor
	 * @param rowIndex Initial row index
	 * @param cellIndex Initial cell index
	 */
	public LayoutCell(int rowIndex, int cellIndex) {
		this.rowIndex = rowIndex;
		this.columnIndex = cellIndex;
	}

	/**
	 * @return the controls
	 */
	public List getControls() {
		return controls;
	}

	/**
	 * @return the cellIndex
	 */
	public int getColumnIndex() {
		return columnIndex;
	}

	/**
	 * @return the rowIndex
	 */
	public int getRowIndex() {
		return rowIndex;
	}

	/**
	 * @param cellIndex the cellIndex to set
	 */
	public void setColumnIndex(int columnIndex) {
		this.columnIndex = columnIndex;
	}

	/**
	 * @param rowIndex the rowIndex to set
	 */
	public void setRowIndex(int rowIndex) {
		this.rowIndex = rowIndex;
	}

	/**
	 * Horizontal span of the cell is the same as the one defined on the first control
	 * @return Horizontal span
	 */
	public int getHSpan() {
		if (getControls().size() == 0) {
			return 1;
		} else {
			return getControls().get(0).getHSpan();
		}
	}
	
	/**
	 * @return Vertical span
	 */
	public int getVSpan() {
		if (getControls().size() == 0) {
			return 1;
		} else {
			return getControls().get(0).getVSpan();
		}
	}

	/**
	 * @return Returns the flow direction
	 */
	public Flow getFlow() {
		return flow;
	}

	/**
	 * @param flow Flow direction
	 */
	public void setFlow(Flow flow) {
		this.flow = flow;
	}

	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return String.format("Row: %s / Cell: %s / Controls: %s", rowIndex, columnIndex, controls);
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return (rowIndex*1000)+columnIndex;
	}

	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy