/*
Copyright 2008 Stefano Chizzolini. http://clown.stefanochizzolini.it
Contributors:
* Stefano Chizzolini (original code developer, http://www.stefanochizzolini.it)
This file should be part of the source code distribution of "PDF Clown library"
(the Program): see the accompanying README files for more info.
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later version.
This Program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY, either expressed or implied; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more details.
You should have received a copy of the GNU General Public License along with this
Program (see README files); if not, go to the GNU website (http://www.gnu.org/).
Redistribution and use, with or without modification, are permitted provided that such
redistributions retain the above copyright notice, license and disclaimer, along with
this list of conditions.
*/
using it.stefanochizzolini.clown.documents.interaction.actions;
using it.stefanochizzolini.clown.documents.interaction.navigation.document;
using it.stefanochizzolini.clown.files;
using it.stefanochizzolini.clown.objects;
using System;
using System.Collections.Generic;
namespace it.stefanochizzolini.clown.documents{
/**
<summary>Document actions [PDF:1.6:8.5.2].</summary>
*/
public class DocumentActions
: PdfObjectWrapper<PdfDictionary>
{
#region dynamic
#region constructors
public DocumentActions(
Document context
) : base(
context.File,
new PdfDictionary()
)
{}
internal DocumentActions(
PdfDirectObject baseObject,
PdfIndirectObject container
) : base(baseObject,container)
{}
#endregion
#region interface
#region public
public override object Clone(
Document context
)
{throw new NotImplementedException();}
/**
<summary>Gets/Sets the action to be performed after printing the document.</summary>
*/
public Action AfterPrint
{
get
{
/*
NOTE: 'DP' entry may be undefined.
*/
PdfDirectObject afterPrintObject = BaseDataObject[PdfName.DP];
if(afterPrintObject == null)
return null;
return Action.Wrap(afterPrintObject,Container);
}
set
{BaseDataObject[PdfName.DP] = value.BaseObject;}
}
/**
<summary>Gets/Sets the action to be performed after saving the document.</summary>
*/
public Action AfterSave
{
get
{
/*
NOTE: 'DS' entry may be undefined.
*/
PdfDirectObject afterSaveObject = BaseDataObject[PdfName.DS];
if(afterSaveObject == null)
return null;
return Action.Wrap(afterSaveObject,Container);
}
set
{BaseDataObject[PdfName.DS] = value.BaseObject;}
}
/**
<summary>Gets/Sets the action to be performed before printing the document.</summary>
*/
public Action BeforePrint
{
get
{
/*
NOTE: 'WP' entry may be undefined.
*/
PdfDirectObject beforePrintObject = BaseDataObject[PdfName.WP];
if(beforePrintObject == null)
return null;
return Action.Wrap(beforePrintObject,Container);
}
set
{BaseDataObject[PdfName.WP] = value.BaseObject;}
}
/**
<summary>Gets/Sets the action to be performed before saving the document.</summary>
*/
public Action BeforeSave
{
get
{
/*
NOTE: 'WS' entry may be undefined.
*/
PdfDirectObject beforeSaveObject = BaseDataObject[PdfName.WS];
if(beforeSaveObject == null)
return null;
return Action.Wrap(beforeSaveObject,Container);
}
set
{BaseDataObject[PdfName.WS] = value.BaseObject;}
}
/**
<summary>Gets/Sets the action to be performed before closing the document.</summary>
*/
public Action OnClose
{
get
{
/*
NOTE: 'DC' entry may be undefined.
*/
PdfDirectObject onCloseObject = BaseDataObject[PdfName.DC];
if(onCloseObject == null)
return null;
return Action.Wrap(onCloseObject,Container);
}
set
{BaseDataObject[PdfName.DC] = value.BaseObject;}
}
/**
<summary>Gets/Sets the destination to be displayed or the action to be performed
after opening the document.</summary>
*/
public PdfObjectWrapper OnOpen
{
get
{
/*
NOTE: 'OpenAction' entry may be undefined.
*/
PdfDirectObject onOpenObject = Document.BaseDataObject[PdfName.OpenAction];
if(onOpenObject == null)
return null;
if(onOpenObject is PdfDictionary) // Action (dictionary).
return Action.Wrap(onOpenObject,Container);
else // Destination (array).
return new LocalDestination(onOpenObject,Container);
}
set
{
if(!(value is Action
|| value is LocalDestination))
throw new ArgumentException("Value MUST be either an Action or a LocalDestination.");
Document document = Document;
document.BaseDataObject[PdfName.OpenAction] = value.BaseObject;
document.Update(); // Ensures that the document's object modification is preserved.
}
}
#endregion
#endregion
#endregion
}
}
|