EOS 2  1.1.0
Einfache Objektbasierte Sprache
ConfigFrame.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.common.gui;
2 
3 import java.awt.GridLayout;
4 import java.text.DecimalFormat;
5 import java.text.NumberFormat;
6 import java.text.ParseException;
7 
8 import javax.swing.BoxLayout;
9 import javax.swing.JButton;
10 import javax.swing.JComboBox;
11 import javax.swing.JLabel;
12 import javax.swing.JPanel;
13 import javax.swing.JTextField;
14 
15 import de.lathanda.eos.base.util.ErrorBehavior;
16 import de.lathanda.eos.base.util.GuiToolkit;
17 import de.lathanda.eos.config.Language;
18 import de.lathanda.eos.config.LanguageConfig;
19 
20 import static de.lathanda.eos.base.icons.Icons.*;
21 import static de.lathanda.eos.gui.icons.Icons.*;
22 
28 public class ConfigFrame extends javax.swing.JFrame {
29  private static final long serialVersionUID = -7493228893699859641L;
33  private GuiConfiguration guiConf = GuiConfiguration.def;
34 
38  public ConfigFrame() {
39  initComponents();
40  }
41 
42  private static final NumberFormat FORMAT = DecimalFormat.getInstance();
43 
47  private void initComponents() {
48 
49  setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
50  getContentPane().setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));
51  setIconImage(LOGO);
52  generalPanel = new JPanel();
53  commandPanel = new JPanel();
54  lblLanguage = GuiToolkit.createLabel(Messages.getString("configuration.language"));
55  lblFontSize = GuiToolkit.createLabel(Messages.getString("configuration.fontsize"));
56  lblUnit = GuiToolkit.createLabel(Messages.getString("configuration.unit"));
57  lblDPI = GuiToolkit.createLabel(Messages.getString("configuration.dpi"));
58  lblErrorMode = GuiToolkit.createLabel(Messages.getString("configuration.errormode"));
59  txtFontSize = GuiToolkit.createTextField();
60  txtDPI = GuiToolkit.createTextField();
61  txtUnit = GuiToolkit.createTextField();
62 
63  cmbErrorMode = GuiToolkit.<ErrorBehaviorEntry>createComboBox();
64 
65  cmbErrorMode.addItem(ErrorBehaviorEntry.IGNORE);
66  cmbErrorMode.addItem(ErrorBehaviorEntry.WARN);
67  cmbErrorMode.addItem(ErrorBehaviorEntry.ABORT);
68  cmbErrorMode.addItem(ErrorBehaviorEntry.TRACE);
69 
70  comboLanguage = GuiToolkit.<LanguageConfig>createComboBox();
71  Language.def.getAvailableLanguageConfigs().forEach(item->comboLanguage.addItem(item));
72 
73  generalPanel.add(lblLanguage);
74  generalPanel.add(comboLanguage);
75  generalPanel.add(lblFontSize);
76  generalPanel.add(txtFontSize);
77  generalPanel.add(lblUnit);
78  generalPanel.add(txtUnit);
79  generalPanel.add(lblDPI);
80  generalPanel.add(txtDPI);
81  generalPanel.add(lblErrorMode);
82  generalPanel.add(cmbErrorMode);
83 
84  generalPanel.setBorder(GuiToolkit.createTitledBorder(Messages.getString("configuration.general")));
85  generalPanel.setLayout(new GridLayout(0, 2));
86  getContentPane().add(generalPanel);
87 
88  btnOk = GuiToolkit.createButton(OK, null, ae -> {
89  writeData();
90  setVisible(false);
91  });
92 
93  btnCancel = GuiToolkit.createButton(CLOSE, null, ae -> {
94  readData();
95  setVisible(false);
96  });
97 
98  commandPanel.add(btnOk);
99  commandPanel.add(btnCancel);
100  getContentPane().add(commandPanel);
101 
102  readData();
103  pack();
104  }
105 
109  private void readData() {
110  txtFontSize.setText(String.valueOf(guiConf.getFontsize()));
111  txtDPI.setText(String.valueOf(guiConf.getDpi()));
112  txtUnit.setText(FORMAT.format(guiConf.getUnit()));
113  switch (guiConf.getErrorBehavior()) {
114  case ABORT:
115  cmbErrorMode.setSelectedItem(ErrorBehaviorEntry.ABORT);
116  break;
117  case WARN:
118  cmbErrorMode.setSelectedItem(ErrorBehaviorEntry.WARN);
119  break;
120  case IGNORE:
121  cmbErrorMode.setSelectedItem(ErrorBehaviorEntry.IGNORE);
122  break;
123  case TRACE:
124  cmbErrorMode.setSelectedItem(ErrorBehaviorEntry.TRACE);
125  break;
126  }
127 
128  }
129 
133  public void writeData() {
134  try {
135  guiConf.setFontsize(Integer.parseInt(txtFontSize.getText()));
136  } catch (NumberFormatException e) {
137  txtFontSize.setText(String.valueOf(guiConf.getFontsize()));
138  }
139  try {
140  guiConf.setDpi(Integer.parseInt(txtDPI.getText()));
141  } catch (NumberFormatException e) {
142  txtDPI.setText(String.valueOf(guiConf.getDpi()));
143  }
144  try {
145  guiConf.setUnit(FORMAT.parse(txtUnit.getText()).doubleValue());
146  } catch (ParseException e) {
147  txtUnit.setText(FORMAT.format(guiConf.getUnit()));
148  }
149  guiConf.setErrorBehavior(((ErrorBehaviorEntry) cmbErrorMode.getSelectedItem()).errorBehavior);
150  }
151 
152  private JPanel generalPanel;
153  private JPanel commandPanel;
154  private JLabel lblLanguage;
155  private JComboBox<LanguageConfig> comboLanguage;
156  private JLabel lblFontSize;
157  private JTextField txtFontSize;
158  private JLabel lblUnit;
159  private JTextField txtUnit;
160  private JLabel lblDPI;
161  private JTextField txtDPI;
162  private JLabel lblErrorMode;
163  private JComboBox<ErrorBehaviorEntry> cmbErrorMode;
164  private JButton btnOk;
165  private JButton btnCancel;
166 
172  private static class ErrorBehaviorEntry {
173  public static final ErrorBehaviorEntry TRACE = new ErrorBehaviorEntry(
174  Messages.getString("configuration.errorbehavior.trace"), ErrorBehavior.TRACE);
175  public static final ErrorBehaviorEntry ABORT = new ErrorBehaviorEntry(
176  Messages.getString("configuration.errorbehavior.abort"), ErrorBehavior.ABORT);
177  public static final ErrorBehaviorEntry IGNORE = new ErrorBehaviorEntry(
178  Messages.getString("configuration.errorbehavior.ignore"), ErrorBehavior.IGNORE);
179  public static final ErrorBehaviorEntry WARN = new ErrorBehaviorEntry(
180  Messages.getString("configuration.errorbehavior.warn"), ErrorBehavior.WARN);
181  private final String label;
182  public final ErrorBehavior errorBehavior;
183 
184  private ErrorBehaviorEntry(String label, ErrorBehavior errorBehavior) {
185  this.label = label;
186  this.errorBehavior = errorBehavior;
187  }
188 
189  @Override
190  public String toString() {
191  return label;
192  }
193  }
194 }
static JLabel createLabel(String text)
static JButton createButton(Image image, String tooltip, ActionListener action)
static TitledBorder createTitledBorder(String title)
void setErrorBehavior(ErrorBehavior errorBehavior)
static String getString(String id)
Definition: Messages.java:29
Collection< LanguageConfig > getAvailableLanguageConfigs()
Definition: Language.java:56
Impressum