org.icepdf.ri.common.utility.annotation.NameTreeDialog 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-2017 ICEsoft Technologies Canada Corp.
*
* 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.utility.annotation;
import org.icepdf.core.pobjects.NameTree;
import org.icepdf.ri.common.EscapeJDialog;
import org.icepdf.ri.common.SwingController;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultTreeModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ResourceBundle;
/**
* Create a dialog containg a name tree for the open document. If no name
* tree exists then no tree is shown.
*
* @since 4.0
*/
@SuppressWarnings("serial")
public class NameTreeDialog extends EscapeJDialog
implements ActionListener, TreeSelectionListener {
private SwingController controller;
private ResourceBundle messageBundle;
private JTree nameJTree;
private NameTreeNode selectedName;
private JLabel destinationName;
private JButton okButton;
private JButton cancelButton;
private GridBagConstraints constraints;
public NameTreeDialog(SwingController controller, boolean modal, NameTree nameTree)
throws HeadlessException {
super(controller.getViewerFrame(), modal);
this.controller = controller;
this.messageBundle = this.controller.getMessageBundle();
setGui(nameTree);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
// assign the selected name.
if (selectedName != null) {
destinationName.setText(selectedName.getName().toString());
}
setVisible(false);
dispose();
} else if (e.getSource() == cancelButton) {
setVisible(false);
dispose();
}
}
// Listen for selected tree items
public void valueChanged(TreeSelectionEvent e) {
// jump to the page stored in the JTree
if (nameJTree.getLastSelectedPathComponent() != null) {
NameTreeNode selectedNode = ((NameTreeNode)
nameJTree.getLastSelectedPathComponent());
// make sure we have name leaf and not a intermediate node.
if (selectedNode.getReference() != null) {
selectedName = selectedNode;
} else {
// null the selection.
nameJTree.setSelectionPath(null);
selectedName = null;
}
}
}
private void setGui(NameTree nameTree) {
// dialog title
setTitle(messageBundle.getString(
"viewer.utilityPane.action.dialog.goto.nameTree.title"));
// build the name tree.
nameJTree = new NameJTree();
nameJTree.setModel(new DefaultTreeModel(
new NameTreeNode(nameTree.getRoot(), messageBundle)));
nameJTree.setRootVisible(!nameTree.getRoot().isEmpty());
nameJTree.addTreeSelectionListener(this);
JScrollPane nameTreeScroller = new JScrollPane(nameJTree);
nameTreeScroller.setPreferredSize(new Dimension(325, 225));
// ok / cancel layout.
okButton = new JButton(messageBundle.getString("viewer.button.ok.label"));
okButton.setMnemonic(messageBundle.getString("viewer.button.ok.mnemonic").charAt(0));
okButton.addActionListener(this);
cancelButton = new JButton(messageBundle.getString("viewer.button.cancel.label"));
cancelButton.setMnemonic(messageBundle.getString("viewer.button.cancel.mnemonic").charAt(0));
cancelButton.addActionListener(this);
// panel for OK and cancel
JPanel okCancelPanel = new JPanel(new FlowLayout());
okCancelPanel.add(okButton);
okCancelPanel.add(cancelButton);
JPanel nameTreePanel = new JPanel();
nameTreePanel.setAlignmentY(JPanel.TOP_ALIGNMENT);
GridBagLayout layout = new GridBagLayout();
nameTreePanel.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);
constraints.anchor = GridBagConstraints.CENTER;
addGB(nameTreePanel, nameTreeScroller, 0, 0, 1, 1);
addGB(nameTreePanel, okCancelPanel, 0, 1, 1, 1);
this.getContentPane().add(nameTreePanel);
// pack();
setSize(new Dimension(375, 350));
validate();
setLocationRelativeTo(controller.getViewerFrame());
}
public void setDestinationName(JLabel destinationName) {
this.destinationName = destinationName;
}
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