r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/gui/commands/NewPdfCommand.java

Summary

Maintainability
A
1 hr
Test Coverage
F
13%
package org.pdf.forms.gui.commands;

import java.util.Set;

import org.pdf.forms.document.FormsDocument;
import org.pdf.forms.document.Page;
import org.pdf.forms.gui.IMainFrame;
import org.pdf.forms.model.des.Version;

class NewPdfCommand implements Command {

    private final IMainFrame mainFrame;
    private final Version version;

    NewPdfCommand(
            final IMainFrame mainFrame,
            final Version version) {
        this.mainFrame = mainFrame;
        this.version = version;
    }

    @Override
    public void execute() {
        closePDF();

        mainFrame.setCurrentDesignerFileName("Untitled");
        mainFrame.setTitle("Untitled - PDF Forms Designer Version " + version.getVersion());
        mainFrame.setPanelsState(true);
        mainFrame.setFormsDocument(new FormsDocument(version));

        insertPage();
    }

    private void closePDF() {
        mainFrame.setFormsDocument(null);
        mainFrame.getDesigner().close();
        mainFrame.setCurrentDesignerFileName("");
        mainFrame.setTitle("PDF Forms Designer Version " + version.getVersion());
        mainFrame.setPropertiesCompound(Set.of());
        mainFrame.setPropertiesToolBar(Set.of());
        mainFrame.setPanelsState(false);
        mainFrame.setCurrentPage(0);
    }

    private void insertPage() {
        mainFrame.setCurrentPage(mainFrame.getCurrentPage() + 1);

        final Page newPage = new Page("(page " + (mainFrame.getTotalNoOfPages() + 1) + ")", 595, 842);
        addPage(mainFrame.getCurrentPage(), newPage);

        mainFrame.displayPage(mainFrame.getCurrentPage());
        mainFrame.setTotalNoOfDisplayedPages(mainFrame.getTotalNoOfPages());
    }

    private void addPage(
            final int pdfPage,
            final Page newPage) {
        mainFrame.getFormsDocument().addPage(pdfPage, newPage);
        mainFrame.addPageToHierarchyPanel(pdfPage, newPage);
    }

}