/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.montsuqi.client; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import javax.swing.BorderFactory; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** * * @author mihara */ public class PrinterConfigPanel extends JPanel { private static final int SIZE = 10; private final ArrayList<JTextField> nameList; private final ArrayList<JComboBox<String>> printerList; public PrinterConfigPanel(final List<String> list) { super(); JPanel panel = new JPanel(new GridBagLayout()); panel.setBorder(BorderFactory.createEtchedBorder()); nameList = new ArrayList<>(); printerList = new ArrayList<>(); for (int i = 0; i < SIZE; i++) { nameList.add(new JTextField()); JComboBox<String> combo = new JComboBox<>(); for (String p : list) { combo.addItem(p); } printerList.add(combo); } int y = 0; panel.add(new JLabel("プリンタ名"), createConstraints(0, y, 1, 1, 1.0, 0.0)); panel.add(new JLabel("割り当てプリンタ"), createConstraints(1, y, 1, 1, 1.0, 0.0)); for (int i = 0; i < SIZE; i++) { y += 1; panel.add(nameList.get(i), createConstraints(0, y, 1, 1, 1.0, 0.0)); panel.add(printerList.get(i), createConstraints(1, y, 1, 1, 1.0, 0.0)); } this.setLayout(new BorderLayout(0, 0)); this.add(panel, BorderLayout.NORTH); } public void setPrinterConfigMap(Map<String, String> map) { int i; for (i = 0; i < SIZE; i++) { JTextField name = nameList.get(i); name.setText(""); JComboBox printer = printerList.get(i); if (printer.getItemCount() > 1) { printer.setSelectedIndex(0); } } i = 0; for (Map.Entry<String, String> e : map.entrySet()) { if (i < SIZE) { JTextField name = nameList.get(i); JComboBox printer = printerList.get(i); name.setText(e.getKey()); printer.setSelectedItem(e.getValue()); } i++; } } public TreeMap<String, String> getPrinterConfigMap() { TreeMap<String, String> map = new TreeMap<>(); for (int i = 0; i < SIZE; i++) { String name = nameList.get(i).getText(); String printer = (String) printerList.get(i).getSelectedItem(); if (!name.isEmpty()) { map.put(name, printer); } } return map; } public static GridBagConstraints createConstraints(int x, int y, int width, int height, double weightx, double weighty) { GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = x; gbc.gridy = y; gbc.gridwidth = width; gbc.gridheight = height; gbc.weightx = weightx; gbc.weighty = weighty; gbc.anchor = GridBagConstraints.CENTER; gbc.fill = GridBagConstraints.HORIZONTAL; return gbc; } }