You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ar...@locus.apache.org on 2000/07/11 04:29:57 UTC

cvs commit: xml-fop/src/org/apache/fop/fo/pagination LayoutMasterSet.java

arved       00/07/10 19:29:57

  Modified:    src/org/apache/fop/fo/pagination LayoutMasterSet.java
  Log:
  Supports March 27 2000 spec
  
  Revision  Changes    Path
  1.6       +64 -8     xml-fop/src/org/apache/fop/fo/pagination/LayoutMasterSet.java
  
  Index: LayoutMasterSet.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/LayoutMasterSet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LayoutMasterSet.java	1999/11/22 02:31:37	1.5
  +++ LayoutMasterSet.java	2000/07/11 02:29:57	1.6
  @@ -1,4 +1,4 @@
  -/*-- $Id: LayoutMasterSet.java,v 1.5 1999/11/22 02:31:37 jtauber Exp $ -- 
  +/*-- $Id: LayoutMasterSet.java,v 1.6 2000/07/11 02:29:57 arved Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -54,6 +54,8 @@
   import org.apache.fop.fo.*;
   import org.apache.fop.fo.properties.*;
   import org.apache.fop.apps.FOPException;				   
  +import org.apache.fop.layout.PageMaster;
  +import org.apache.fop.apps.FOPException;                   
   
   // Java
   import java.util.Hashtable;
  @@ -71,15 +73,18 @@
   	return new LayoutMasterSet.Maker();
       }
   
  -    private Hashtable layoutMasters;
  -    private Root root;
  +    private Hashtable simplePageMasters;
  +	private Hashtable pageSequenceMasters;
  +	private Root root;
   	
       protected LayoutMasterSet(FObj parent, PropertyList propertyList)
   	throws FOPException {
   	super(parent, propertyList);
   	this.name = "fo:layout-master-set";
   
  -	this.layoutMasters = new Hashtable();
  +	this.simplePageMasters = new Hashtable();
  +	this.pageSequenceMasters = new Hashtable();
  +	
   	if (parent.getName().equals("fo:root")) {
   	    this.root = (Root)parent;
   	    root.setLayoutMasterSet(this);
  @@ -89,12 +94,63 @@
   				 + parent.getName());
   	}
       }
  +
  +	public PageMaster getNextPageMaster( String pageSequenceName,
  +		int currentPageNumber, boolean thisIsFirstPage )
  +		throws FOPException
  +	{
  +		PageMaster pm = null;
  +		
  +		PageSequenceMaster psm = getPageSequenceMaster( pageSequenceName );
  +		if (null != psm)
  +		{
  +			pm = psm.getNextPageMaster( currentPageNumber, thisIsFirstPage );
  +		} else {
  +			SimplePageMaster spm = getSimplePageMaster( pageSequenceName );
  +			if (null == spm)
  +			{
  +				throw new FOPException( "'master-name' for 'fo:page-sequence'" +
  +					"matches no 'simple-page-master' or 'page-sequence-master'" );
  +			}
  +			pm = spm.getNextPageMaster();
  +		}
  +		return pm;
  +	}
  +	
  +    protected void addSimplePageMaster(
  +		String masterName, SimplePageMaster simplePageMaster)
  +		throws FOPException {
  +	// check against duplication of master-name
  +	if (existsName(masterName))
  +		throw new FOPException( "'master-name' must be unique" +
  +			"across page-masters and page-sequence-masters" );
  +	this.simplePageMasters.put(masterName, simplePageMaster);
  +    }
   
  -    protected void addLayoutMaster(String masterName, SimplePageMaster layoutMaster) {
  -	this.layoutMasters.put(masterName, layoutMaster);
  +    protected SimplePageMaster getSimplePageMaster(String masterName) {
  +		return (SimplePageMaster)this.simplePageMasters.get(masterName);
       }
   
  -    protected SimplePageMaster getLayoutMaster(String masterName) {
  -	return (SimplePageMaster)this.layoutMasters.get(masterName);
  +    protected void addPageSequenceMaster(
  +		String masterName, PageSequenceMaster pageSequenceMaster)
  +		throws FOPException {
  +	// check against duplication of master-name
  +	if (existsName(masterName))
  +		throw new FOPException( "'master-name' must be unique " +
  +			"across page-masters and page-sequence-masters" );
  +	this.pageSequenceMasters.put(masterName, pageSequenceMaster);
       }
  +
  +    protected PageSequenceMaster getPageSequenceMaster(String masterName) {
  +	return (PageSequenceMaster)this.pageSequenceMasters.get(masterName);
  +    }
  +	
  +	private boolean existsName( String masterName )
  +	{
  +		if (simplePageMasters.containsKey(masterName) ||
  +			pageSequenceMasters.containsKey(masterName))
  +			return true;
  +		else
  +			return false;
  +	}
   }