📄 printerdialog.java
字号:
left.setEnabled(true); right.setEnabled(true); top.setEnabled(true); bottom.setEnabled(true); left_tf.setEnabled(true); right_tf.setEnabled(true); top_tf.setEnabled(true); bottom_tf.setEnabled(true); } else { left.setEnabled(false); right.setEnabled(false); top.setEnabled(false); bottom.setEnabled(false); left_tf.setEnabled(false); right_tf.setEnabled(false); top_tf.setEnabled(false); bottom_tf.setEnabled(false); } } } private MediaTypes media_panel; private Orientation orientation_panel; private Margins margins_panel; /** * Constructs the page setup user interface. */ public PageSetupPanel() { setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); media_panel = new MediaTypes(); orientation_panel = new Orientation(); margins_panel = new Margins(); JPanel layout_panel = new JPanel(); layout_panel.setLayout(new BoxLayout(layout_panel, BoxLayout.LINE_AXIS)); layout_panel.add(orientation_panel); layout_panel.add(Box.createRigidArea(new Dimension(10, 0))); layout_panel.add(margins_panel); setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); add(media_panel); add(Box.createRigidArea(new Dimension(0, 12))); add(layout_panel); } /** * Calls update on all internal panels to adjust * for a new selected print service. */ void update() { media_panel.updateForSelectedService(); orientation_panel.updateForSelectedService(); margins_panel.updateForSelectedService(); } } /** * The Appearance panel for quality, color etc. * @author Wolfgang Baer (WBaer@gmx.de) */ final class AppearancePanel extends JPanel { /** * Handles the print quality attribute. * @author Wolfgang Baer (WBaer@gmx.de) */ final class Quality extends JPanel implements ActionListener { private JRadioButton low, normal, high; private ButtonGroup group; Quality() { low = new JRadioButton(getLocalizedString("rbt.low")); low.addActionListener(this); normal = new JRadioButton(getLocalizedString("rbt.normal")); normal.addActionListener(this); high = new JRadioButton(getLocalizedString("rbt.high")); high.addActionListener(this); group = new ButtonGroup(); group.add(low); group.add(normal); group.add(high); GridBagLayout layout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(layout); setBorder(new TitledBorder(getLocalizedString("title.quality"))); c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(5, 5, 5, 5); c.gridx = 0; c.gridy = 0; add(low, c); c.gridx = 0; c.gridy = 1; add(normal, c); c.gridx = 0; c.gridy = 2; add(high, c); } public void actionPerformed(ActionEvent e) { if (e.getSource() == low) atts.add(PrintQuality.DRAFT); else if (e.getSource() == normal) atts.add(PrintQuality.NORMAL); else atts.add(PrintQuality.HIGH); } /** * Called to update for new selected * print service. Tests if currently * selected attributes are supported. */ void updateForSelectedService() { if (categorySupported(PrintQuality.class)) { low.setEnabled(true); normal.setEnabled(true); high.setEnabled(true); Object defaultValue = defaultValue(PrintQuality.class); Attribute quality = attribute(PrintQuality.class); if (quality != null) { if (quality.equals(PrintQuality.DRAFT)) low.setSelected(true); else if (quality.equals(PrintQuality.NORMAL)) normal.setSelected(true); else high.setSelected(true); } else { if (defaultValue.equals(PrintQuality.DRAFT)) low.setSelected(true); else if (defaultValue.equals(PrintQuality.NORMAL)) normal.setSelected(true); else high.setSelected(true); } } else { low.setEnabled(false); normal.setEnabled(false); high.setEnabled(false); } } } /** * Handles the job attributes as requesting username, jobname etc. * @author Wolfgang Baer (WBaer@gmx.de) */ final class JobAttributes extends JPanel implements ActionListener, ChangeListener, FocusListener { private JLabel jobname, username, priority_lb; private JTextField jobname_tf, username_tf; private JCheckBox cover; private JSpinner priority; private SpinnerNumberModel model; JobAttributes() { jobname = new JLabel(getLocalizedString("lb.jobname")); username = new JLabel(getLocalizedString("lb.username")); priority_lb = new JLabel(getLocalizedString("lb.priority")); cover = new JCheckBox(getLocalizedString("cb.cover")); cover.addActionListener(this); model = new SpinnerNumberModel(1, 1, 100, 1); priority = new JSpinner(model); priority.addChangeListener(this); jobname_tf = new JTextField(); jobname_tf.addFocusListener(this); username_tf = new JTextField(); username_tf.addFocusListener(this); GridBagLayout layout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(layout); setBorder(new TitledBorder(getLocalizedString("title.jobattributes"))); c.insets = new Insets(10, 5, 10, 5); c.gridx = 0; c.gridy = 0; add(cover, c); c.anchor = GridBagConstraints.LINE_END; c.gridx = 1; c.gridy = 0; c.weightx = 2; add(priority_lb, c); c.gridx = 2; c.gridy = 0; c.weightx = 0.5; add(priority, c); c.anchor = GridBagConstraints.LINE_END; c.gridx = 0; c.gridy = 1; add(jobname, c); c.gridx = 0; c.gridy = 2; add(username, c); c.anchor = GridBagConstraints.CENTER; c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 1; c.gridy = 1; c.gridwidth = 2; c.weightx = 1.5; add(jobname_tf, c); c.insets = new Insets(10, 5, 15, 5); c.gridx = 1; c.gridy = 2; add(username_tf, c); } public void actionPerformed(ActionEvent event) { if (cover.isSelected()) atts.add(JobSheets.STANDARD); else atts.add(JobSheets.NONE); } public void stateChanged(ChangeEvent event) { int value = ((Integer) priority.getValue()).intValue(); atts.add(new JobPriority(value)); } public void focusGained(FocusEvent event) { updateTextfields(event); } public void focusLost(FocusEvent event) { updateTextfields(event); } private void updateTextfields(FocusEvent event) { if (event.getSource() == jobname_tf) atts.add(new JobName(jobname_tf.getText(), null)); else atts.add(new RequestingUserName(username_tf.getText(), null)); } /** * Called to update for new selected * print service. Tests if currently * selected attributes are supported. */ void updateForSelectedService() { // JobPriority if (categorySupported(JobPriority.class)) { JobPriority prio = (JobPriority) attribute(JobPriority.class); JobPriority value = (JobPriority) defaultValue(JobPriority.class); priority.setEnabled(true); if (prio != null) model.setValue(new Integer(prio.getValue())); else model.setValue(new Integer(value.getValue())); } else priority.setEnabled(false); // Requesting username if (categorySupported(RequestingUserName.class)) { Attribute user = attribute(RequestingUserName.class); Object value = defaultValue(RequestingUserName.class); username.setEnabled(true); if (user != null) username_tf.setText(user.toString()); else username_tf.setText(value.toString()); } else username.setEnabled(false); // Job Name if (categorySupported(JobName.class)) { Attribute job = attribute(JobName.class); Object value = defaultValue(JobName.class); jobname.setEnabled(true); if (job != null) jobname_tf.setText(job.toString()); else jobname_tf.setText(value.toString()); } else jobname.setEnabled(false); // Job sheets if (categorySupported(JobSheets.class)) { Attribute sheet = attribute(JobSheets.class); Object value = defaultValue(JobSheets.class); cover.setEnabled(true); if (sheet != null) { if (sheet.equals(JobSheets.NONE)) cover.setSelected(false); else cover.setSelected(true); } else { if (value.equals(JobSheets.NONE)) cover.setSelected(false); else cover.setSelected(true); } } else cover.setEnabled(false); } } /** * Handles the sides attributes. * @author Wolfgang Baer (WBaer@gmx.de) */ final class SidesPanel extends JPanel implements ActionListener { private JRadioButton oneside, calendar, duplex; SidesPanel() { oneside = new JRadioButton(getLocalizedString("rbt.onesided")); oneside.addActionListener(this); calendar = new JRadioButton(getLocalizedString("rbt.calendar")); calendar.addActionListener(this); duplex = new JRadioButton(getLocalizedString("rbt.duplex")); duplex.addActionListener(this); ButtonGroup group = new ButtonGroup(); group.add(oneside); group.add(calendar); group.add(duplex); GridBagLayout layout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; setLayout(layout); setBorder(new TitledBorder(getLocalizedString("title.sides"))); c.insets = new Insets(5, 5, 5, 5); c.gridx = 0; c.gridy = 0; add(oneside, c); c.gridx = 0; c.gridy = 1; add(calendar, c); c.gridx = 0; c.gridy = 2; add(duplex, c); } public void actionPerformed(ActionEvent e) { if (e.getSource() == calendar) atts.add(Sides.TWO_SIDED_SHORT_EDGE); else if (e.getSource() == oneside) atts.add(Sides.ONE_SIDED); else atts.add(Sides.TWO_SIDED_LONG_EDGE); } /** * Called to update for new selected * print service. Tests if currently * selected attributes are supported. */ void updateForSelectedService() { if (categorySupported(Sides.class)) { oneside.setEnabled(true); calendar.setEnabled(true); duplex.setEnabled(true); Object defaultValue = defaultValue(Sides.class); Attribute sides = attribute(Sides.class); if (sides != null) { if (sides.equals(Sides.TWO_SIDED_SHORT_EDGE)) calendar.setSelected(true); else if (sides.equals(Sides.ONE_SIDED)) oneside.setSelected(true); else duplex.setSelected(true); } else { if (defaultValue.equals(Sides.TWO_SIDED_SHORT_EDGE)) calendar.setSelected(true); else if (defaultValue.equals(Sides.ONE_SIDED))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -