EOS 2  1.1.0
Einfache Objektbasierte Sprache
PrintFrame.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.common.gui;
2 
3 import static de.lathanda.eos.gui.icons.Icons.*;
4 
5 import java.awt.BorderLayout;
6 import java.awt.HeadlessException;
7 import java.awt.event.ActionEvent;
8 import java.awt.print.PrinterException;
9 import java.awt.print.PrinterJob;
10 import java.util.ResourceBundle;
11 
12 import javax.swing.GroupLayout;
13 import javax.swing.JButton;
14 import javax.swing.JCheckBox;
15 import javax.swing.JFrame;
16 import javax.swing.JOptionPane;
17 import javax.swing.JPanel;
18 import javax.swing.JScrollPane;
19 import javax.swing.JTextField;
20 import javax.swing.JToolBar;
21 import javax.swing.WindowConstants;
22 import javax.swing.event.ChangeEvent;
23 
24 import de.lathanda.eos.base.util.GuiToolkit;
25 import de.lathanda.eos.baseparser.AbstractProgram;
26 
32 public class PrintFrame extends JFrame {
33 
34  private static final long serialVersionUID = -2002251247920181865L;
35 
39  public PrintFrame(String title) {
40  initComponents(title);
41  }
42 
43  public void init(AbstractProgram abstractProgram) {
44  printview.init(abstractProgram, txtTitle.getText());
45  }
46 
47  private void initComponents(String title) {
48 
49  controlToolbar = new JToolBar();
50  left = new JPanel();
51  right = new JPanel();
52  center = new JPanel();
53  controlToolbar.setLayout(new BorderLayout());
54  controlToolbar.add(left, BorderLayout.WEST);
55  controlToolbar.add(right, BorderLayout.EAST);
56  controlToolbar.add(center, BorderLayout.CENTER);
57  chkLinenumbers = GuiToolkit.createCheckBox(Messages.getString("Print.Linenumbers"));
58  txtTitle = GuiToolkit.createTextField();
59 
60  printScroll = new JScrollPane();
61  printview = new PrintPanel();
62 
63  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
64  ResourceBundle bundle = ResourceBundle.getBundle("text.gui");
65  setTitle(bundle.getString("Print.Title"));
66 
67  controlToolbar.setFloatable(false);
68  controlToolbar.setRollover(true);
69 
70  btnLeft = GuiToolkit.createButton(LEFT, null, evt -> btnLeftActionPerformed(evt));
71 
72  left.add(btnLeft);
73 
74  btnRight = GuiToolkit.createButton(RIGHT, null, evt -> btnRightActionPerformed(evt));
75 
76  left.add(btnRight);
77 
78  chkLinenumbers.setFocusable(false);
79  chkLinenumbers.addChangeListener(evt -> chkLinenumbersChanged(evt));
80 
81  left.add(chkLinenumbers);
82 
83  txtTitle.addActionListener(ae -> printview.setHeader(txtTitle.getText()));
84  txtTitle.setText(title);
85  left.add(txtTitle);
86 
87  btnPrint = GuiToolkit.createButton(PRINTER, null, evt -> btnPrintActionPerformed(evt));
88 
89  right.add(btnPrint);
90 
91  GroupLayout printviewLayout = new GroupLayout(printview);
92  printview.setLayout(printviewLayout);
93 
94  printScroll.setViewportView(printview);
95  printScroll.setPreferredSize(GuiToolkit.scaledDimension(400, 500));
96 
97  getContentPane().add(controlToolbar, BorderLayout.NORTH);
98  getContentPane().add(printScroll, BorderLayout.CENTER);
99  pack();
100  }
101 
102  private void btnPrintActionPerformed(ActionEvent evt) {
103  try {
104  printview.setHeader(txtTitle.getText());
105  PrinterJob job = PrinterJob.getPrinterJob();
106  job.setPageable(printview);
107  if (!job.printDialog()) {
108  return;
109  }
110  job.print();
111  } catch (HeadlessException | PrinterException t) {
112  JOptionPane.showMessageDialog(this, Messages.getString("Print.Error.Title"), t.getLocalizedMessage(),
113  JOptionPane.ERROR_MESSAGE);
114  }
115  }
116 
117  private void btnLeftActionPerformed(ActionEvent evt) {
118  printview.previousPage();
119  }
120 
121  private void btnRightActionPerformed(ActionEvent evt) {
122  printview.nextPage();
123  }
124 
125  public void chkLinenumbersChanged(ChangeEvent e) {
126  printview.setLinenumberVisible(chkLinenumbers.isSelected());
127 
128  }
129 
130  private JButton btnLeft;
131  private JButton btnPrint;
132  private JButton btnRight;
133  private JCheckBox chkLinenumbers;
134  private JTextField txtTitle;
135  private JToolBar controlToolbar;
136  private JScrollPane printScroll;
137  private PrintPanel printview;
138  private JPanel left;
139  private JPanel right;
140  private JPanel center;
141 }
static Dimension scaledDimension(int width, int height)
static JButton createButton(Image image, String tooltip, ActionListener action)
static JCheckBox createCheckBox(String label)
static String getString(String id)
Definition: Messages.java:29
void chkLinenumbersChanged(ChangeEvent e)
void init(AbstractProgram abstractProgram)
Definition: PrintFrame.java:43
void setLinenumberVisible(boolean visible)
Impressum