org.icepdf.ri.common.DocumentInformationDialog Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icepdf-viewer Show documentation
Show all versions of icepdf-viewer Show documentation
ICEpdf PDF Viewer Reference Implementation (RI)
/*
* Copyright 2006-2016 ICEsoft Technologies Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS
* IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.icepdf.ri.common;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.PInfo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ResourceBundle;
/**
* This class is a reference implementation for displaying a PDF file's
* document information
*
* @since 1.1
*/
@SuppressWarnings("serial")
public class DocumentInformationDialog extends EscapeJDialog {
// layouts constraint
private GridBagConstraints constraints;
/**
* Creates the document information dialog.
*/
public DocumentInformationDialog(JFrame frame, Document document,
ResourceBundle messageBundle) {
super(frame, true);
setTitle(messageBundle.getString("viewer.dialog.documentInformation.title"));
// Do some work on information to get display values
String title = "";
String author = "";
String subject = "";
String keyWords = "";
String creator = "";
String producer = "";
String creationDate = "";
String modDate = "";
// get duplicate names from message bundle
String notAvailable =
messageBundle.getString("viewer.dialog.documentInformation.notAvailable");
// get information values if available
PInfo documentInfo = document.getInfo();
if (documentInfo != null) {
title = documentInfo.getTitle();
author = documentInfo.getAuthor();
subject = documentInfo.getSubject();
keyWords = documentInfo.getKeywords();
creator = documentInfo.getCreator() != null ?
documentInfo.getCreator() : notAvailable;
producer = documentInfo.getProducer() != null ?
documentInfo.getProducer() : notAvailable;
creationDate = documentInfo.getCreationDate() != null ?
documentInfo.getCreationDate().toString() : notAvailable;
modDate = documentInfo.getModDate() != null ?
documentInfo.getModDate().toString() : notAvailable;
}
// Create GUI elements
final JButton okButton = new JButton(messageBundle.getString("viewer.button.ok.label"));
okButton.setMnemonic(messageBundle.getString("viewer.button.ok.mnemonic").charAt(0));
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
setVisible(false);
dispose();
}
}
});
/**
* Place GUI elements on dialog
*/
JPanel permissionsPanel = new JPanel();
permissionsPanel.setAlignmentY(JPanel.TOP_ALIGNMENT);
GridBagLayout layout = new GridBagLayout();
permissionsPanel.setLayout(layout);
constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.NONE;
constraints.weightx = 1.0;
constraints.anchor = GridBagConstraints.NORTH;
constraints.anchor = GridBagConstraints.EAST;
constraints.insets = new Insets(5, 5, 5, 5);
// add labels
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.title.label")),
0, 0, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.subject.label")),
0, 1, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.author.label")),
0, 2, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.keywords.label")),
0, 3, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.creator.label")),
0, 4, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.producer.label")),
0, 5, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.created.label")),
0, 6, 1, 1);
addGB(permissionsPanel, new JLabel(
messageBundle.getString("viewer.dialog.documentInformation.modified.label")),
0, 7, 1, 1);
constraints.insets = new Insets(15, 5, 5, 5);
constraints.anchor = GridBagConstraints.CENTER;
addGB(permissionsPanel, okButton, 0, 8, 2, 1);
// add values
constraints.insets = new Insets(5, 5, 5, 5);
constraints.anchor = GridBagConstraints.WEST;
addGB(permissionsPanel, new JLabel(title), 1, 0, 1, 1);
addGB(permissionsPanel, new JLabel(subject), 1, 1, 1, 1);
addGB(permissionsPanel, new JLabel(author), 1, 2, 1, 1);
addGB(permissionsPanel, new JLabel(keyWords), 1, 3, 1, 1);
addGB(permissionsPanel, new JLabel(creator), 1, 4, 1, 1);
addGB(permissionsPanel, new JLabel(producer), 1, 5, 1, 1);
addGB(permissionsPanel, new JLabel(creationDate), 1, 6, 1, 1);
addGB(permissionsPanel, new JLabel(modDate), 1, 7, 1, 1);
this.getContentPane().add(permissionsPanel);
pack();
setLocationRelativeTo(frame);
}
/**
* Gridbag constructor helper
*
* @param component component to add to grid
* @param x row
* @param y col
* @param rowSpan
* @param colSpan
*/
private void addGB(JPanel layout, Component component,
int x, int y,
int rowSpan, int colSpan) {
constraints.gridx = x;
constraints.gridy = y;
constraints.gridwidth = rowSpan;
constraints.gridheight = colSpan;
layout.add(component, constraints);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy