Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hrg: Action45 add ability to create checkboxes #67

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
c88dc1e
Updated itext7 version to fix old version error
hgongloff Apr 16, 2021
c82a6d4
Fixed change in syntax with updated itext7 version
hgongloff Apr 16, 2021
34ea312
Added radiobuttons to drawing tab for drawing radio buttons, text fie…
hgongloff Apr 16, 2021
b5c665c
Created check box class
hgongloff Apr 16, 2021
656181f
Created radio button class
hgongloff Apr 16, 2021
58823c5
Created text field class
hgongloff Apr 16, 2021
f0b1613
Implemented adding check boxes to pdf
hgongloff Apr 16, 2021
7ee1000
Fixed bug with adding multiple checkboxes
hgongloff Apr 16, 2021
aa07a87
Fixed pdfs not being saved after multiple check boxes get addded
hgongloff Apr 22, 2021
b2e3da6
Fixed checkboxes sharing their checked or not value
hgongloff Apr 22, 2021
ad61a7d
added doxygen comments
hgongloff Apr 22, 2021
fb0492b
fixed formatting
hgongloff Apr 22, 2021
37648f9
Merge branch 'main' into hrg_action45
hgongloff Apr 23, 2021
8a0ce15
Fixed changed/deleted files
hgongloff Apr 23, 2021
56fa829
Update MoveStack.java
hgongloff Apr 23, 2021
c65abcd
Update MoveStack.java
hgongloff Apr 23, 2021
11bf8c9
Added tests back in
hgongloff Apr 23, 2021
cdfe523
Fixed Formatting
hgongloff Apr 23, 2021
d0a3c07
Merge branch 'main' into hrg_action45
hgongloff Apr 23, 2021
a169d0f
Removed duplicate method
hgongloff Apr 23, 2021
bc4e05b
Update pom.xml
hgongloff Apr 23, 2021
4e8ab97
Added end bracket
hgongloff Apr 23, 2021
d1513b4
Autogenerated JaCoCo coverage badge
charleswitherspoon Apr 23, 2021
c351296
Fixed formatting
hgongloff Apr 23, 2021
8f17c31
Merge branch 'hrg_action45' of https://github.com/DryCreations/pdfpro…
hgongloff Apr 23, 2021
9bf0549
Fixed checkbox implementation
hgongloff Apr 25, 2021
3242ada
Updated checkbox to always be a square when drawn
hgongloff Apr 25, 2021
cb2e683
Autogenerated JaCoCo coverage badge
charleswitherspoon Apr 25, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/badges/jacoco.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,32 +90,32 @@
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdftest</artifactId>
<version>7.0.4</version>
<version>7.1.15</version>
</dependency>
<dependency>
<groupId>org.swinglabs</groupId>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/groupseven/pdfproject/MoveStack.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.EmptyStackException;

/// \brief stack for storing move data
/// \brief stack for storing move data
///
/// \ref t10_2 "task 10.2"
public class MoveStack<T> {
Expand Down
161 changes: 161 additions & 0 deletions src/main/java/com/groupseven/pdfproject/utilities/DrawCheckBox.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
package com.groupseven.pdfproject.utilities;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Random;

import com.groupseven.pdfproject.MainCanvas;
import com.groupseven.pdfproject.model.Action;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Document;

import javafx.event.Event;
import javafx.geometry.Point2D;
import javafx.scene.input.MouseEvent;

/**
* @author Hunter Gongloff
*
* @{ \brief This is the class to create a checkbox on user click \ref 16_3 "Task 16.3"
*/
public class DrawCheckBox implements Action {

public static final String SRC = "src/main/resources/manipulate_pdf/test_pdf.pdf";
public static final String DES = "src/main/resources/manipulate_pdf/test_pdf_old.pdf";

/// \ref t16_3 "task 16.3"
public DrawCheckBox(MainCanvas _canvas) {
// TODO Auto-generated constructor stub
}

/// \ref t16_3 "task 16.3"
@Override
public void execute() {
// TODO Auto-generated method stub

}

/// \brief on click creates checkboxes at click location
/// \ref t16_3 "task 16.3"
@Override
public Action handle(Event event) {
if (!(event instanceof MouseEvent))
return this;

byte[] array = new byte[7]; // length is bounded by 7
new Random().nextBytes(array);
String generatedString = new String(array, Charset.forName("UTF-8"));

MouseEvent mouseEvent = (MouseEvent) event;
Point2D mousePosition = new Point2D(mouseEvent.getX(), mouseEvent.getY());

Point2D currentPoint = new Point2D(mouseEvent.getX(), mouseEvent.getY());
float x = (float) currentPoint.getX();
float y = (float) (780.0 - currentPoint.getY());

if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {

PdfDocument pdfDoc = null;
try {
pdfDoc = new PdfDocument(new PdfWriter(DES).setSmartMode(true));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
PdfDocument srcDoc = null;
try {
srcDoc = new PdfDocument(new PdfReader(SRC));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
srcDoc.copyPagesTo(1, srcDoc.getNumberOfPages(), pdfDoc);

Document doc = new Document(pdfDoc);
PdfAcroForm form = PdfAcroForm.getAcroForm(doc.getPdfDocument(), true);
PdfButtonFormField checkField = PdfFormField.createCheckBox(doc.getPdfDocument(),
new Rectangle(x, y, 15, 15), generatedString, "Off", PdfFormField.TYPE_CHECK);
form.addField(checkField);

pdfDoc.close();
srcDoc.close();

File file = new File("src/main/resources/manipulate_pdf/test_pdf.pdf");

File rename = new File("src/main/resources/manipulate_pdf/test_pdf_old_old.pdf");

boolean flag = file.renameTo(rename);

if (flag == true) {
System.out.println("File Successfully Rename");
}

else {
System.out.println("Operation Failed");
}

file = new File("src/main/resources/manipulate_pdf/test_pdf_old.pdf");

rename = new File("src/main/resources/manipulate_pdf/test_pdf.pdf");

flag = file.renameTo(rename);

if (flag == true) {
System.out.println("File Successfully Rename");
}

else {
System.out.println("Operation Failed");
}

file = new File("src/main/resources/manipulate_pdf/test_pdf_old_old.pdf");

rename = new File("src/main/resources/manipulate_pdf/test_pdf_old.pdf");

flag = file.renameTo(rename);

if (flag == true) {
System.out.println("File Successfully Rename");
}

else {
System.out.println("Operation Failed");
}

}

return null;
}

/// \ref t16_3 "task 16.3"
@Override
public boolean isComplete() {
// TODO Auto-generated method stub
return false;
}

/// \ref t16_3 "task 16.3"
@Override
public boolean contains(Point2D point) {
// TODO Auto-generated method stub
return false;
}

/// \ref t16_3 "task 16.3"
@Override
public void pdfExecute(PdfCanvas canvas, PdfPage page) {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.groupseven.pdfproject.utilities;

import com.groupseven.pdfproject.MainCanvas;
import com.groupseven.pdfproject.model.Action;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;

import javafx.event.Event;
import javafx.geometry.Point2D;

public class DrawRadioButton implements Action {

public DrawRadioButton(MainCanvas _canvas) {
// TODO Auto-generated constructor stub
}

@Override
public void execute() {
// TODO Auto-generated method stub

}

@Override
public Action handle(Event event) {
// TODO Auto-generated method stub
return null;
}

@Override
public boolean isComplete() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean contains(Point2D point) {
// TODO Auto-generated method stub
return false;
}

@Override
public void pdfExecute(PdfCanvas canvas, PdfPage page) {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.groupseven.pdfproject.utilities;

import com.groupseven.pdfproject.MainCanvas;
import com.groupseven.pdfproject.model.Action;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;

import javafx.event.Event;
import javafx.geometry.Point2D;

public class DrawTextField implements Action {

public DrawTextField(MainCanvas _canvas) {
// TODO Auto-generated constructor stub
}

@Override
public void execute() {
// TODO Auto-generated method stub

}

@Override
public Action handle(Event event) {
// TODO Auto-generated method stub
return null;
}

@Override
public boolean isComplete() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean contains(Point2D point) {
// TODO Auto-generated method stub
return false;
}

@Override
public void pdfExecute(PdfCanvas canvas, PdfPage page) {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
///
/// \ref t9_1 "Task 9.1"
public enum DrawingMode {
PEN, ERASER, RECTANGLE, SELECT;
PEN, ERASER, RECTANGLE, SELECT, TEXTFIELD, RADIOBUTTON, CHECKBOX;

/// \brief get a formatted string representation of the DrawingMode
/// \return a formatted string representation of the DrawingMode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,14 @@ public void handle(MouseEvent event) {
_currentAction = (_drawingMode == DrawingMode.PEN) ? new DrawLine(_canvas, _color)
: (_drawingMode == DrawingMode.ERASER) ? new Erase(_canvas) : (_drawingMode == DrawingMode.SELECT)
? new Select(_canvas)
: (_drawingMode == DrawingMode.RECTANGLE) ? new DrawRectangle(_canvas, _color) : null;
: (_drawingMode == DrawingMode.RECTANGLE) ? new DrawRectangle(_canvas, _color)
: (_drawingMode == DrawingMode.TEXTFIELD) ? new DrawTextField(_canvas)
: (_drawingMode == DrawingMode.RADIOBUTTON) ? new DrawRadioButton(_canvas)
: (_drawingMode == DrawingMode.CHECKBOX) ? new DrawCheckBox(_canvas)
: null;

if (_currentAction != null) {
_currentAction = _currentAction.handle(event);
updateScreen();
}
if (_currentAction != null)
_currentAction.handle(event);

}

Expand All @@ -74,4 +76,5 @@ private void updateScreen() {
_currentAction = null;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package com.groupseven.pdfproject.utilities;

import com.groupseven.pdfproject.TriConsumer;
import com.itextpdf.kernel.color.DeviceRgb;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.extgstate.PdfExtGState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public DrawingToolbar(MainCanvas canvas) {
_drawingTool = new DrawingTool(_canvas);

List<RadioButton> radioButtons = createRadioButtons(_toggleGroup, DrawingMode.PEN, DrawingMode.ERASER,
DrawingMode.RECTANGLE, DrawingMode.SELECT);
DrawingMode.RECTANGLE, DrawingMode.SELECT, DrawingMode.TEXTFIELD, DrawingMode.RADIOBUTTON,
DrawingMode.CHECKBOX);

getItems().addAll(radioButtons);

Expand All @@ -51,6 +52,7 @@ public DrawingToolbar(MainCanvas canvas) {
_colorPicker.setOnAction(__ -> _drawingTool.setColor(_colorPicker.getValue()));
_toggleGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
_drawingTool.setDrawingMode((DrawingMode) newValue.getUserData());

});

_canvas.setHandlerForTypes(_drawingTool, MouseEvent.ANY);
Expand Down
Binary file added src/main/resources/manipulate_pdf/test_pdf.pdf
Binary file not shown.
Binary file not shown.