Package com.lowagie.text.pdf.collection

Source Code of com.lowagie.text.pdf.collection.PdfCollectionField

package com.lowagie.text.pdf.collection;

import com.lowagie.text.pdf.PdfBoolean;
import com.lowagie.text.pdf.PdfDate;
import com.lowagie.text.pdf.PdfDictionary;
import com.lowagie.text.pdf.PdfName;
import com.lowagie.text.pdf.PdfNumber;
import com.lowagie.text.pdf.PdfObject;
import com.lowagie.text.pdf.PdfString;

/**
* @author blowagie
*
*/
public class PdfCollectionField extends PdfDictionary {
  /** A possible type of collection field. */
  public static final int TEXT = 0;
  /** A possible type of collection field. */
  public static final int DATE = 1;
  /** A possible type of collection field. */
  public static final int NUMBER = 2;
  /** A possible type of collection field. */
  public static final int FILENAME = 3;
  /** A possible type of collection field. */
  public static final int DESC = 4;
  /** A possible type of collection field. */
  public static final int MODDATE = 5;
  /** A possible type of collection field. */
  public static final int CREATIONDATE = 6;
  /** A possible type of collection field. */
  public static final int SIZE = 7;
 
  /** The type of the PDF collection field. */
  protected int type;

  /**
   * Creates a PdfCollectionField.
   * @param name    the field name
   * @param type    the field type
   */
  public PdfCollectionField(String name, int type) {
    super(PdfName.COLLECTIONFIELD);
    put(PdfName.N, new PdfString(name, PdfObject.TEXT_UNICODE));
    this.type = type;
    switch(type) {
    default:
      put(PdfName.SUBTYPE, PdfName.S);
      break;
    case DATE:
      put(PdfName.SUBTYPE, PdfName.D);
      break;
    case NUMBER:
      put(PdfName.SUBTYPE, PdfName.N);
      break;
    case FILENAME:
      put(PdfName.SUBTYPE, PdfName.F);
      break;
    case DESC:
      put(PdfName.SUBTYPE, PdfName.DESC);
      break;
    case MODDATE:
      put(PdfName.SUBTYPE, PdfName.MODDATE);
      break;
    case CREATIONDATE:
      put(PdfName.SUBTYPE, PdfName.CREATIONDATE);
      break;
    case SIZE:
      put(PdfName.SUBTYPE, PdfName.SIZE);
      break;
    }
  }
 
  /**
   * The relative order of the field name. Fields are sorted in ascending order.
   * @param i  a number indicating the order of the field
   */
  public void setOrder(int i) {
    put(PdfName.O, new PdfNumber(i));
  }
 
  /**
   * Sets the initial visibility of the field.
   * @param visible  the default is true (visible)
   */
  public void setVisible(boolean visible) {
    put(PdfName.V, new PdfBoolean(visible));
  }
 
  /**
   * Indication if the field value should be editable in the viewer.
   * @param editable  the default is false (not editable)
   */
  public void setEditable(boolean editable) {
    put(PdfName.E, new PdfBoolean(editable));
  }

  /**
   * Checks if the type of the field is suitable for a Collection Item.
   */
  public boolean isCollectionItem() {
    switch(type) {
    case TEXT:
    case DATE:
    case NUMBER:
      return true;
    default:
      return false;
    }
  }
 
  /**
   * Returns a PdfObject that can be used as the value of a Collection Item.
   * @param v  value  the value that has to be changed into a PdfObject (PdfString, PdfDate or PdfNumber) 
   */
  public PdfObject getValue(String v) {
    switch(type) {
    case TEXT:
      return new PdfString(v, PdfObject.TEXT_UNICODE);
    case DATE:
      return new PdfDate(PdfDate.decode(v));
    case NUMBER:
      return new PdfNumber(v);
    }
    throw new IllegalArgumentException(v + " is not an acceptable value for the field " + get(PdfName.N).toString());
  }
}
TOP

Related Classes of com.lowagie.text.pdf.collection.PdfCollectionField

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.