dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #23405
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11392: PDF Form formatting and minor changes
------------------------------------------------------------
revno: 11392
committer: James Chang <jamesbchang@xxxxxxxxx>
branch nick: dhis2
timestamp: Sat 2013-07-13 11:26:58 +0700
message:
PDF Form formatting and minor changes
modified:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java 2013-06-26 08:56:44 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java 2013-07-13 04:26:58 +0000
@@ -47,6 +47,7 @@
import org.hisp.dhis.period.MonthlyPeriodType;
import org.hisp.dhis.period.Period;
import org.hisp.dhis.period.PeriodType;
+import org.hisp.dhis.period.WeeklyPeriodType;
import org.hisp.dhis.program.ProgramStage;
import org.hisp.dhis.program.ProgramStageDataElement;
import org.hisp.dhis.program.ProgramStageSection;
@@ -79,13 +80,13 @@
public class DefaultPdfDataEntryFormService
implements PdfDataEntryFormService
{
- private static final Color COLOR_BACKGROUDTEXTBOX = Color.LIGHT_GRAY;
+ private static final Color COLOR_BACKGROUDTEXTBOX = Color.getHSBColor( 0.0f, 0.0f, 0.961f);
private static final String TEXT_BLANK = " ";
- private static final int TEXTBOXWIDTH_NUMBERTYPE = 20;
+ private static final int TEXTBOXWIDTH_NUMBERTYPE = 35;
- private static final int TEXTBOXWIDTH = 200;
+ private static final int TEXTBOXWIDTH = 160;
private static final int PERIODRANGE_PREVYEARS = 1;
@@ -120,6 +121,7 @@
public void generatePDFDataEntryForm( Document document, PdfWriter writer, String inputUid, int typeId,
Rectangle pageSize, PdfFormFontSettings pdfFormFontSettings, I18nFormat format )
{
+
try
{
this.pdfFormFontSettings = pdfFormFontSettings;
@@ -173,16 +175,18 @@
insertTable_OrgAndPeriod( mainTable, writer, periods );
+ insertTable_TextRow( writer, mainTable, TEXT_BLANK );
+
insertTable_DataSet( mainTable, writer, dataSet );
document.add( mainTable );
- // Hide the 'Save As' button for now.
- // document.add( Chunk.NEWLINE );
- // document.add( Chunk.NEWLINE );
- // insertSaveAsButton( document, writer,
- // PdfDataEntryFormUtil.LABELCODE_BUTTON_SAVEAS );
+ document.add( Chunk.NEWLINE );
+ document.add( Chunk.NEWLINE );
+
+ insertSaveAsButton( document, writer, PdfDataEntryFormUtil.LABELCODE_BUTTON_SAVEAS, dataSet.getDisplayName() );
+
}
}
@@ -206,7 +210,7 @@
private void setMainTable( PdfPTable mainTable )
{
- mainTable.setWidthPercentage( 90.0f );
+ mainTable.setWidthPercentage( 100.0f );
mainTable.setHorizontalAlignment( Element.ALIGN_LEFT );
}
@@ -233,18 +237,25 @@
Collection<DataElement> dataElements, String sectionName )
throws IOException, DocumentException
{
+ boolean hasBorder = true;
+
// Add Section Name and Section Spacing
- insertTable_TextRow( writer, mainTable, rectangle, TEXT_BLANK );
+ insertTable_TextRow( writer, mainTable, TEXT_BLANK );
if ( sectionName != "" )
{
- insertTable_TextRow( writer, mainTable, rectangle, sectionName,
+ insertTable_TextRow( writer, mainTable, sectionName,
pdfFormFontSettings.getFont( PdfFormFontSettings.FONTTYPE_SECTIONHEADER ) );
}
// Create A Table To Add For Each Section
PdfPTable table = new PdfPTable( 2 );
-
+
+ table.setWidths(new int[] { 2, 1 });
+ table.setWidthPercentage( 100.0f );
+ table.setHorizontalAlignment( Element.ALIGN_LEFT );
+
+
// For each DataElement and Category Combo of the dataElement, create
// row.
for ( DataElement dataElement : dataElements )
@@ -259,7 +270,7 @@
if ( !categoryOptionCombo.isDefault() )
categoryOptionComboDisplayName = categoryOptionCombo.getDisplayName();
- addCell_Text( table, dataElement.getDisplayName() + " " + categoryOptionComboDisplayName,
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), dataElement.getDisplayName() + " " + categoryOptionComboDisplayName,
Element.ALIGN_RIGHT );
String strFieldLabel = PdfDataEntryFormUtil.LABELCODE_DATAENTRYTEXTFIELD + dataElement.getUid() + "_"
@@ -270,7 +281,7 @@
// Yes Only case - render as check-box
if ( dataElementTextType.equals( DataElement.VALUE_TYPE_TRUE_ONLY ) )
{
- addCell_WithCheckBox( table, writer, strFieldLabel );
+ addCell_WithCheckBox( table, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel );
}
else if ( dataElementTextType.equals( DataElement.VALUE_TYPE_BOOL ) )
{
@@ -279,21 +290,17 @@
String[] valueList = new String[] { "", "true", "false" };
// addCell_WithRadioButton(table, writer, strFieldLabel);
- addCell_WithDropDownListField( table, strFieldLabel, optionList, valueList, rectangle, writer );
+ addCell_WithDropDownListField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel, optionList, valueList );
}
- else if ( dataElementTextType.equals( DataElement.VALUE_TYPE_NUMBER ) )
- {
+ else if ( dataElementTextType.equals( DataElement.VALUE_TYPE_INT ) )
+ {
rectangle = new Rectangle( TEXTBOXWIDTH_NUMBERTYPE, PdfDataEntryFormUtil.CONTENT_HEIGHT_DEFAULT );
- addCell_WithTextField( table, rectangle, writer, strFieldLabel, PdfFieldCell.TYPE_TEXT_NUMBER );
+ addCell_WithTextField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel, PdfFieldCell.TYPE_TEXT_NUMBER );
}
else
- // DataElement.VALUE_TYPE_DATE
{
- // NOTE: When Rendering for DataSet, DataElement's OptionSet
- // does not get rendered.
- // Only for events, it gets rendered as drop-down list.
- addCell_WithTextField( table, rectangle, writer, strFieldLabel );
+ addCell_WithTextField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel );
}
}
}
@@ -327,7 +334,7 @@
// 4. Add Org Unit, Period, Hidden ProgramStageID Field
insertTable_OrgAndPeriod( mainTable, writer, periods );
- insertTable_TextRow( writer, mainTable, rectangle, TEXT_BLANK );
+ insertTable_TextRow( writer, mainTable, TEXT_BLANK );
// Add ProgramStage Field - programStage.getId();
insertTable_HiddenValue( mainTable, rectangle, writer,
@@ -366,6 +373,8 @@
Collection<ProgramStageDataElement> programStageDataElements )
throws IOException, DocumentException
{
+ boolean hasBorder = false;
+
// Add one to column count due to date entry + one hidden height set
// field.
int colCount = programStageDataElements.size() + 1 + 1;
@@ -401,17 +410,17 @@
table.setWidths( cellWidths );
// Create Header
- addCell_Text( table, "Date", Element.ALIGN_CENTER );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), "Date", Element.ALIGN_CENTER );
// Add Program Data Elements Columns
for ( ProgramStageDataElement programStageDataElement : programStageDataElements )
{
DataElement dataElement = programStageDataElement.getDataElement();
- addCell_Text( table, dataElement.getDisplayFormName(), Element.ALIGN_CENTER );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), dataElement.getDisplayFormName(), Element.ALIGN_CENTER );
}
- addCell_Text( table, TEXT_BLANK, Element.ALIGN_CENTER );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), TEXT_BLANK, Element.ALIGN_CENTER );
// ADD A HIDDEN INFO FOR ProgramStageID
// Print rows, having the data elements repeating on each column.
@@ -421,7 +430,7 @@
// Add Date Column
String strFieldDateLabel = PdfDataEntryFormUtil.LABELCODE_DATADATETEXTFIELD + Integer.toString( rowNo );
- addCell_WithTextField( table, rectangleDate, writer, strFieldDateLabel );
+ addCell_WithTextField( table, rectangleDate, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldDateLabel );
// Add Program Data Elements Columns
for ( ProgramStageDataElement programStageDataElement : programStageDataElements )
@@ -446,19 +455,19 @@
// options. and apply only once.
List<String> options = optionService.getOptions( optionSet.getId(), query, MAX_OPTIONS_DISPLAYED );
- addCell_WithDropDownListField( table, strFieldLabel, options.toArray( new String[0] ),
- options.toArray( new String[0] ), rectangleDataElement, writer );
+ addCell_WithDropDownListField( table, rectangleDataElement, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel, options.toArray( new String[0] ),
+ options.toArray( new String[0] ) );
}
else
{
// NOTE: When Rendering for DataSet, DataElement's OptionSet
// does not get rendered.
// Only for events, it gets rendered as dropdown list.
- addCell_WithTextField( table, rectangleDataElement, writer, strFieldLabel );
+ addCell_WithTextField( table, rectangleDataElement, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), strFieldLabel );
}
}
- addCell_Text( table, TEXT_BLANK, Element.ALIGN_LEFT );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), TEXT_BLANK, Element.ALIGN_LEFT );
}
PdfPCell cell_withInnerTable = new PdfPCell( table );
@@ -492,23 +501,28 @@
private void insertTable_OrgAndPeriod( PdfPTable mainTable, PdfWriter writer, List<Period> periods )
throws IOException, DocumentException
{
+ boolean hasBorder = false;
+ float width = 220.0f;
+
// Input TextBox size
- Rectangle rectangle = new Rectangle( TEXTBOXWIDTH, PdfDataEntryFormUtil.CONTENT_HEIGHT_DEFAULT );
+ Rectangle rectangle = new Rectangle( width, PdfDataEntryFormUtil.CONTENT_HEIGHT_DEFAULT );
// Add Organization ID/Period textfield
// Create A table to add for each group AT HERE
PdfPTable table = new PdfPTable( 2 ); // Code 1
-
- addCell_Text( table, "Organization unit identifier", Element.ALIGN_LEFT );
- addCell_WithTextField( table, rectangle, writer, PdfDataEntryFormUtil.LABELCODE_ORGID,
+ table.setWidths(new int[] { 1, 3 });
+ table.setHorizontalAlignment( Element.ALIGN_LEFT );
+
+
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), "Organization unit identifier", Element.ALIGN_RIGHT );
+ addCell_WithTextField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), PdfDataEntryFormUtil.LABELCODE_ORGID,
PdfFieldCell.TYPE_TEXT_ORGUNIT );
String[] periodsTitle = getPeriodTitles( periods, format );
String[] periodsValue = getPeriodValues( periods );
- addCell_Text( table, "Period", Element.ALIGN_LEFT );
- addCell_WithDropDownListField( table, PdfDataEntryFormUtil.LABELCODE_PERIODID, periodsTitle, periodsValue,
- rectangle, writer );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), "Period", Element.ALIGN_RIGHT );
+ addCell_WithDropDownListField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), PdfDataEntryFormUtil.LABELCODE_PERIODID, periodsTitle, periodsValue );
// Add to the main table
PdfPCell cell_withInnerTable = new PdfPCell( table );
@@ -524,11 +538,13 @@
String value )
throws IOException, DocumentException
{
+ boolean hasBorder = false;
+
// Add Organization ID/Period textfield
// Create A table to add for each group AT HERE
PdfPTable table = new PdfPTable( 1 ); // Code 1
- addCell_WithTextField( table, rectangle, writer, fieldName, value );
+ addCell_WithTextField( table, rectangle, writer, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), fieldName, value );
// Add to the main table
PdfPCell cell_withInnerTable = new PdfPCell( table );
@@ -537,32 +553,40 @@
mainTable.addCell( cell_withInnerTable );
}
- private void insertTable_TextRow( PdfWriter writer, PdfPTable mainTable, Rectangle rectangle, String text )
+ private void insertTable_TextRow( PdfWriter writer, PdfPTable mainTable, String text )
{
- insertTable_TextRow( writer, mainTable, rectangle, text,
+ insertTable_TextRow( writer, mainTable, text,
pdfFormFontSettings.getFont( PdfFormFontSettings.FONTTYPE_BODY ) );
}
- private void insertTable_TextRow( PdfWriter writer, PdfPTable mainTable, Rectangle rectangle, String text, Font font )
+ private void insertTable_TextRow( PdfWriter writer, PdfPTable mainTable, String text, Font font )
{
+ boolean hasBorder = false;
+
// Add Organization ID/Period textfield
// Create A table to add for each group AT HERE
PdfPTable table = new PdfPTable( 1 );
table.setHorizontalAlignment( Element.ALIGN_LEFT );
- addCell_Text( table, text, Element.ALIGN_LEFT, font );
+ addCell_Text( table, PdfDataEntryFormUtil.getPdfPCell( hasBorder ), text, Element.ALIGN_LEFT, font );
// Add to the main table
PdfPCell cell_withInnerTable = new PdfPCell( table );
+
cell_withInnerTable.setBorder( Rectangle.NO_BORDER );
+
mainTable.addCell( cell_withInnerTable );
}
+
+
// Insert 'Save As' button to document.
- @SuppressWarnings( "unused" )
- private void insertSaveAsButton( Document document, PdfWriter writer, String name )
+ //@SuppressWarnings( "unused" )
+ private void insertSaveAsButton( Document document, PdfWriter writer, String name, String dataSetName )
throws DocumentException
{
+ boolean hasBorder = false;
+
// Button Table
PdfPTable tableButton = new PdfPTable( 1 );
@@ -571,23 +595,34 @@
tableButton.setHorizontalAlignment( Element.ALIGN_CENTER );
- String jsAction = "app.execMenuItem('SaveAs');";
-
- addCell_WithPushButtonField( tableButton, name, buttonHeight, jsAction, writer );
+
+ //String jsAction = "app.execMenuItem('SaveAs');";
+ String jsAction ="var newFileName = this.getField(\"" + PdfDataEntryFormUtil.LABELCODE_PERIODID + "\").value + ' ' + "
+ + " this.getField(\"" + PdfDataEntryFormUtil.LABELCODE_ORGID + "\").value + ' ' + "
+ + " \"" + dataSetName + ".pdf\";"
+ + "var returnVal = app.alert('This will save this PDF file as ' + newFileName + '. Do you want to Continue?', 1, 2);"
+ + "if(returnVal == 4) { "
+ + " var aMyPath = this.path.split(\"/\");"
+ + " aMyPath.pop();"
+ + " aMyPath.push(newFileName);"
+ + " this.saveAs(aMyPath.join(\"/\"));"
+ + " this.saveAs({cPath:cMyPath, bPromptToOverwrite:true});"
+ + " app.alert('File Saved.', 1);"
+ + "} "
+ ;
+
+ addCell_WithPushButtonField( tableButton, writer, PdfDataEntryFormUtil.getPdfPCell(buttonHeight, PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD, hasBorder ), name, jsAction );
document.add( tableButton );
}
- private void addCell_Text( PdfPTable table, String text, int horizontalAlignment )
+ private void addCell_Text( PdfPTable table, PdfPCell cell, String text, int horizontalAlignment )
{
- addCell_Text( table, text, horizontalAlignment, pdfFormFontSettings.getFont( PdfFormFontSettings.FONTTYPE_BODY ) );
+ addCell_Text( table, cell, text, horizontalAlignment, pdfFormFontSettings.getFont( PdfFormFontSettings.FONTTYPE_BODY ) );
}
- private void addCell_Text( PdfPTable table, String text, int horizontalAlignment, Font font )
+ private void addCell_Text( PdfPTable table, PdfPCell cell, String text, int horizontalAlignment, Font font )
{
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( PdfDataEntryFormUtil.CELL_MIN_HEIGHT_DEFAULT,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_LABEL );
-
cell.setHorizontalAlignment( horizontalAlignment );
cell.setPhrase( new Phrase( text, font ) );
@@ -595,27 +630,27 @@
table.addCell( cell ); // TODO: change this with cellEvent?
}
- private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, String strfldName )
+ private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, PdfPCell cell, String strfldName )
throws IOException, DocumentException
{
- addCell_WithTextField( table, rect, writer, strfldName, PdfFieldCell.TYPE_DEFAULT, "" );
+ addCell_WithTextField( table, rect, writer, cell, strfldName, PdfFieldCell.TYPE_DEFAULT, "" );
}
- private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, String strfldName,
+ private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, PdfPCell cell, String strfldName,
int fieldCellType )
throws IOException, DocumentException
{
- addCell_WithTextField( table, rect, writer, strfldName, fieldCellType, "" );
+ addCell_WithTextField( table, rect, writer, cell, strfldName, fieldCellType, "" );
}
- private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, String strfldName,
+ private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, PdfPCell cell, String strfldName,
String value )
throws IOException, DocumentException
{
- addCell_WithTextField( table, rect, writer, strfldName, PdfFieldCell.TYPE_DEFAULT, value );
+ addCell_WithTextField( table, rect, writer, cell, strfldName, PdfFieldCell.TYPE_DEFAULT, value );
}
- private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, String strfldName,
+ private void addCell_WithTextField( PdfPTable table, Rectangle rect, PdfWriter writer, PdfPCell cell, String strfldName,
int fieldCellType, String value )
throws IOException, DocumentException
{
@@ -631,15 +666,13 @@
nameField.setAlignment( Element.ALIGN_RIGHT );
nameField.setFont( pdfFormFontSettings.getFont( PdfFormFontSettings.FONTTYPE_BODY ).getBaseFont() );
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( PdfDataEntryFormUtil.CELL_MIN_HEIGHT_DEFAULT,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD );
- cell.setCellEvent( new PdfFieldCell( nameField.getTextField(), (int) (rect.getWidth()), fieldCellType, writer ) );
+ cell.setCellEvent( new PdfFieldCell( nameField.getTextField(), rect.getWidth(), rect.getHeight(), fieldCellType, writer ) );
table.addCell( cell );
}
- private void addCell_WithDropDownListField( PdfPTable table, String strfldName, String[] optionList,
- String[] valueList, Rectangle rect, PdfWriter writer )
+ private void addCell_WithDropDownListField( PdfPTable table, Rectangle rect, PdfWriter writer, PdfPCell cell, String strfldName, String[] optionList,
+ String[] valueList)
{
// If there is option, then create name-value set in 2 dimension array
// and set it as dropdown option name-value list.
@@ -654,72 +687,45 @@
// Code 2 create DROP-DOWN LIST
PdfFormField dropDown = PdfFormField.createCombo( writer, true, optionValueList, 0 );
- dropDown.setWidget( rect, PdfAnnotation.HIGHLIGHT_INVERT );
+ dropDown.setWidget( new Rectangle(0, 0), PdfAnnotation.HIGHLIGHT_INVERT );
dropDown.setFieldName( strfldName );
dropDown.setMKBorderColor( Color.BLACK );
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( PdfDataEntryFormUtil.CELL_MIN_HEIGHT_DEFAULT,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD );
- cell.setCellEvent( new PdfFieldCell( dropDown, (int) (rect.getWidth()), writer ) );
+ cell.setCellEvent( new PdfFieldCell( dropDown, rect.getWidth(), rect.getHeight(), writer ) );
table.addCell( cell );
}
- private void addCell_WithCheckBox( PdfPTable table, PdfWriter writer, String strfldName )
+ private void addCell_WithCheckBox( PdfPTable table, PdfWriter writer, PdfPCell cell, String strfldName )
throws IOException, DocumentException
{
float sizeDefault = PdfDataEntryFormUtil.UNITSIZE_DEFAULT;
-
- PdfContentByte canvas = writer.getDirectContent();
-
- PdfAppearance[] onOff = new PdfAppearance[2];
- onOff[0] = canvas.createAppearance( sizeDefault + 2, sizeDefault + 2 );
- onOff[0].rectangle( 1, 1, sizeDefault, sizeDefault );
- onOff[0].stroke();
- onOff[1] = canvas.createAppearance( sizeDefault + 2, sizeDefault + 2 );
- onOff[1].setRGBColorFill( 255, 128, 128 );
- onOff[1].rectangle( 1, 1, sizeDefault, sizeDefault );
- onOff[1].fillStroke();
- onOff[1].moveTo( 1, 1 );
- onOff[1].lineTo( sizeDefault + 1, sizeDefault + 1 );
- onOff[1].moveTo( 1, sizeDefault + 1 );
- onOff[1].lineTo( sizeDefault + 1, 1 );
- onOff[1].stroke();
-
- Rectangle rect = new Rectangle( sizeDefault, sizeDefault );
-
- RadioCheckField checkbox = new RadioCheckField( writer, rect, "Yes", "on" );
+
+ RadioCheckField checkbox = new RadioCheckField( writer, new Rectangle( sizeDefault, sizeDefault ), "Yes", "On" );
+
checkbox.setBorderWidth( 1 );
checkbox.setBorderColor( Color.BLACK );
PdfFormField checkboxfield = checkbox.getCheckField();
checkboxfield.setFieldName( strfldName );
- checkboxfield.setAppearance( PdfAnnotation.APPEARANCE_NORMAL, "", onOff[0] );
- checkboxfield.setAppearance( PdfAnnotation.APPEARANCE_NORMAL, "true", onOff[1] );
-
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( PdfDataEntryFormUtil.CELL_MIN_HEIGHT_DEFAULT,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD );
-
- cell.setCellEvent( new PdfFieldCell( checkboxfield, (int) (rect.getWidth()), writer ) );
+ setCheckboxAppearance(checkboxfield, writer.getDirectContent(), sizeDefault);
+
+ cell.setCellEvent( new PdfFieldCell( checkboxfield, sizeDefault, sizeDefault, PdfFieldCell.TYPE_CHECKBOX, writer ) );
table.addCell( cell );
}
@SuppressWarnings( "unused" )
- private void addCell_WithRadioButton( PdfPTable table, PdfWriter writer, String strfldName )
+ private void addCell_WithRadioButton( PdfPTable table, PdfWriter writer, PdfPCell cell, String strfldName )
{
- // Add to the main table
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( PdfDataEntryFormUtil.CELL_MIN_HEIGHT_DEFAULT,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD );
-
// RADIO BUTTON FIELD
PdfFormField radiogroupField = PdfFormField.createRadioButton( writer, true );
radiogroupField.setFieldName( strfldName );
cell.setCellEvent( new PdfFieldCell( radiogroupField, new String[] { "Yes", "No", "null" }, new String[] {
- "true", "false", "" }, "", 30.0f, PdfFieldCell.TYPE_RADIOBUTTON, writer ) );
+ "true", "false", "" }, "", 30.0f, PdfDataEntryFormUtil.UNITSIZE_DEFAULT, PdfFieldCell.TYPE_RADIOBUTTON, writer ) );
table.addCell( cell );
@@ -727,11 +733,8 @@
writer.addAnnotation( radiogroupField );
}
- private void addCell_WithPushButtonField( PdfPTable table, String strfldName, float buttonHeight, String jsAction,
- PdfWriter writer )
- {
- PdfPCell cell = PdfDataEntryFormUtil.getPdfPCell( buttonHeight,
- PdfDataEntryFormUtil.CELL_COLUMN_TYPE_ENTRYFIELD );
+ private void addCell_WithPushButtonField( PdfPTable table, PdfWriter writer, PdfPCell cell, String strfldName, String jsAction )
+ {
cell.setCellEvent( new PdfFieldCell( null, jsAction, "BTN_SAVEPDF", "Save PDF", PdfFieldCell.TYPE_BUTTON,
writer ) );
@@ -753,10 +756,26 @@
public String[] getPeriodTitles( List<Period> periods, I18nFormat format )
{
String[] periodTitles = new String[periods.size()];
-
+
+ // For Weekly, since formatPeriod has logic to only get ISO date
+ // add weekly date range info here.
+ SimpleDateFormat simpleDateFormat_Weekly = null;
+
+ if( periods.size() > 1 && periods.get( 0 ).getPeriodType().getName() == WeeklyPeriodType.NAME )
+ {
+ simpleDateFormat_Weekly = new SimpleDateFormat( Period.DEFAULT_DATE_FORMAT );
+ }
+
for ( int i = 0; i < periods.size(); i++ )
{
- periodTitles[i] = format.formatPeriod( periods.get( i ) );
+ Period period = periods.get( i );
+ periodTitles[i] = format.formatPeriod( period );
+
+ if(simpleDateFormat_Weekly != null)
+ {
+ periodTitles[i] += " - " + simpleDateFormat_Weekly.format( period.getStartDate() )
+ + " - " + simpleDateFormat_Weekly.format( period.getEndDate() );
+ }
}
return periodTitles;
@@ -780,4 +799,25 @@
return period;
}
+
+ private void setCheckboxAppearance(PdfFormField checkboxfield, PdfContentByte canvas, float width)
+ {
+ PdfAppearance[] onOff = new PdfAppearance[2];
+ onOff[0] = canvas.createAppearance(width + 2, width + 2);
+ onOff[0].rectangle(1, 1, width, width);
+ onOff[0].stroke();
+ onOff[1] = canvas.createAppearance(width + 2, width + 2);
+ onOff[1].setRGBColorFill(255, 128, 128);
+ onOff[1].rectangle(1, 1, width, width);
+ onOff[1].fillStroke();
+ onOff[1].moveTo(1, 1);
+ onOff[1].lineTo(width + 1, width + 1);
+ onOff[1].moveTo(1, width + 1);
+ onOff[1].lineTo(width + 1, 1);
+ onOff[1].stroke();
+
+ checkboxfield.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", onOff[0]);
+ checkboxfield.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", onOff[1]);
+ }
+
}
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java 2013-06-26 08:56:44 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java 2013-07-13 04:26:58 +0000
@@ -27,6 +27,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.awt.Color;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -81,9 +82,11 @@
// Cell Related
+ private static final Color COLOR_CELLBORDER = Color.getHSBColor( 0.0f, 0.0f, 0.863f);
+
public final static float CELL_MIN_HEIGHT_DEFAULT = 14;
- public final static float CONTENT_HEIGHT_DEFAULT = 11;
+ public final static float CONTENT_HEIGHT_DEFAULT = 12;
public final static int CELL_COLUMN_TYPE_LABEL = 0;
@@ -142,17 +145,32 @@
}
}
- public static PdfPCell getPdfPCell( float minHeight )
+// public static PdfPCell getPdfPCell( float minHeight )
+// {
+// return getPdfPCell( minHeight, CELL_COLUMN_TYPE_LABEL );
+// }
+
+ public static PdfPCell getPdfPCell( boolean hasBorder )
{
- return getPdfPCell( minHeight, CELL_COLUMN_TYPE_LABEL );
+ return getPdfPCell( CELL_MIN_HEIGHT_DEFAULT, CELL_COLUMN_TYPE_ENTRYFIELD, hasBorder );
}
- public static PdfPCell getPdfPCell( float minHeight, int cellContentType )
+ public static PdfPCell getPdfPCell( float minHeight, int cellContentType, boolean hasBorder )
{
PdfPCell cell = new PdfPCell();
cell.setMinimumHeight( minHeight );
- cell.setBorder( Rectangle.NO_BORDER );
- cell.setPadding( 1f );
+
+ if( hasBorder )
+ {
+ cell.setBorderWidth( 0.1f );
+ cell.setBorderColor( COLOR_CELLBORDER );
+ }
+ else
+ {
+ cell.setBorder( Rectangle.NO_BORDER );
+ }
+
+ cell.setPadding( 2.0f );
switch ( cellContentType )
{
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java 2013-06-26 08:56:44 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java 2013-07-13 04:26:58 +0000
@@ -27,6 +27,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.util.Locale;
+
import com.lowagie.text.Element;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
@@ -70,6 +72,10 @@
private final static float RADIOBUTTON_TEXTOFFSET = 3.0f;
+ private final static float offSetTop = 0.5f;
+
+ private final static float offSetLeft = 3.0f;
+
private PdfFormField parent;
private PdfFormField formField;
@@ -77,6 +83,8 @@
private PdfWriter writer;
private float width;
+
+ private float height;
private int type;
@@ -91,19 +99,23 @@
private String text;
private String name;
-
- public PdfFieldCell( PdfFormField formField, int width, PdfWriter writer )
+
+
+ // Constructors
+ public PdfFieldCell( PdfFormField formField, float width, float height, PdfWriter writer )
{
this.formField = formField;
this.width = width;
+ this.height = height;
this.writer = writer;
this.type = TYPE_DEFAULT;
}
- public PdfFieldCell( PdfFormField formField, int width, int type, PdfWriter writer )
+ public PdfFieldCell( PdfFormField formField, float width, float height, int type, PdfWriter writer )
{
this.formField = formField;
this.width = width;
+ this.height = height;
this.writer = writer;
this.type = type;
}
@@ -118,7 +130,7 @@
this.jsAction = jsAction;
}
- public PdfFieldCell( PdfFormField parent, String[] texts, String[] values, String checkValue, float width,
+ public PdfFieldCell( PdfFormField parent, String[] texts, String[] values, String checkValue, float width, float height,
int type, PdfWriter writer )
{
this.writer = writer;
@@ -128,6 +140,7 @@
this.values = values;
this.checkValue = checkValue;
this.width = width;
+ this.height = height;
}
public void cellLayout( PdfPCell cell, Rectangle rect, PdfContentByte[] canvases )
@@ -137,18 +150,6 @@
PdfContentByte canvasText = canvases[PdfPTable.TEXTCANVAS];
- // PENDING LOGIC
- // PdfContentByte canvasLine = canvases[PdfPTable.LINECANVAS];
- //
- // float margin = 2;
- //
- // float x1 = rect.getLeft() + margin;
- // float x2 = rect.getRight() - margin;
- // float y1 = rect.getTop() - margin;
- // float y2 = rect.getBottom() + margin;
- //
- // canvasLine.rectangle( x1, y1, x2 - x1, y2 - y1 );
-
if ( type == TYPE_RADIOBUTTON )
{
if ( parent != null )
@@ -160,14 +161,14 @@
{
String text;
String value;
-
+
for ( int i = 0; i < texts.length; i++ )
{
text = texts[i];
value = values[i];
- Rectangle radioRec = new Rectangle( leftLoc, rect.getBottom(), rightLoc, rect.getTop() );
+ Rectangle radioRec = new Rectangle( leftLoc, rect.getTop() - height, rightLoc, rect.getTop() );
RadioCheckField rf = new RadioCheckField( writer, radioRec, "RDBtn_" + text, value );
@@ -184,7 +185,7 @@
rightLoc += width;
ColumnText.showTextAligned( canvasText, Element.ALIGN_LEFT, new Phrase( text ), leftLoc
- + RADIOBUTTON_TEXTOFFSET, (radioRec.getBottom() + radioRec.getTop()) / 2, 0 );
+ + RADIOBUTTON_TEXTOFFSET, height, 0 );
leftLoc = rightLoc;
rightLoc += RADIOBUTTON_WIDTH;
@@ -219,13 +220,16 @@
}
else if ( type == TYPE_CHECKBOX )
{
- // Start from the middle of the cell width.
- float startingPoint = rect.getLeft() + ((rect.getWidth() + width) / 2.0f);
-
+ float extraCheckBoxOffset_Left = 2.0f;
+ float extraCheckBoxOffset_Top = 1.5f;
+
formField.setWidget(
- new Rectangle( startingPoint, rect.getBottom(), startingPoint + width, rect.getTop() ),
+ new Rectangle( rect.getLeft() + offSetLeft + extraCheckBoxOffset_Left
+ , rect.getTop() - height - offSetTop - extraCheckBoxOffset_Top
+ , rect.getLeft() + width + offSetLeft + extraCheckBoxOffset_Left
+ , rect.getTop() - offSetTop - extraCheckBoxOffset_Top ),
PdfAnnotation.HIGHLIGHT_NONE );
- }
+ }
else
{
@@ -235,18 +239,10 @@
"if(event.value == '') app.alert('Warning! Please Enter The Org ID.');", writer ) );
}
- // TYPE_TEXT_NUMBER case included as well here.
-
- // PENDING LOGIC
- // Add -1, +1 to create cellpadding effect - spacing between
- // rows/cells
- // formField.setWidget(
- // new Rectangle( rect.getLeft() + 1, rect.getBottom() + 1,
- // rect.getLeft() + width - 1, rect.getTop() - 1 ),
- // PdfAnnotation.HIGHLIGHT_NONE );
+ // TYPE_TEXT_NUMBER and TYPE_CHECKBOX cases included as well here.
formField.setWidget(
- new Rectangle( rect.getLeft(), rect.getBottom(), rect.getLeft() + width, rect.getTop() ),
+ new Rectangle( rect.getLeft() + offSetLeft, rect.getTop() - height - offSetTop, rect.getLeft() + width + offSetLeft, rect.getTop() - offSetTop ),
PdfAnnotation.HIGHLIGHT_NONE );
}
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java 2013-06-26 08:56:44 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java 2013-07-13 04:26:58 +0000
@@ -90,6 +90,7 @@
{
case FONTTYPE_BODY:
font.setSize( FONTSIZE_BODY );
+ font.setColor( Color.BLACK );
break;
case FONTTYPE_TITLE:
font.setSize( FONTSIZE_TITLE );