1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package ca.uhn.hl7v2.testpanel.ui;
27
28 import java.awt.Component;
29 import java.awt.Dimension;
30 import java.awt.GridBagConstraints;
31 import java.awt.GridBagLayout;
32 import java.awt.Insets;
33 import java.nio.charset.Charset;
34 import java.util.ArrayList;
35 import java.util.Collections;
36 import java.util.List;
37
38 import javax.swing.Box;
39 import javax.swing.ButtonGroup;
40 import javax.swing.ComboBoxModel;
41 import javax.swing.DefaultComboBoxModel;
42 import javax.swing.JCheckBox;
43 import javax.swing.JComboBox;
44 import javax.swing.JLabel;
45 import javax.swing.JPanel;
46 import javax.swing.JRadioButton;
47
48 import ca.uhn.hl7v2.testpanel.controller.Prefs;
49 import ca.uhn.hl7v2.testpanel.util.LineEndingsEnum;
50
51 public class FileChooserSaveAccessory extends JPanel {
52 private JCheckBox mySaveCommentsCheckbox;
53 private JRadioButton myHl7LineEndingsRadio;
54 private JRadioButton myUnixLineEndingsRadio;
55 private JRadioButton myWindowsLineEndingsRadio;
56 private final ButtonGroup myLineEndingsButtonGroup = new ButtonGroup();
57 private JLabel mylabel;
58 private Component myverticalStrut;
59 private JComboBox myCharsetCombo;
60
61
62
63
64 public FileChooserSaveAccessory() {
65 GridBagLayout gridBagLayout = new GridBagLayout();
66 gridBagLayout.columnWidths = new int[] { 0, 0 };
67 gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
68 gridBagLayout.columnWeights = new double[] { 0.0, 1.0 };
69 gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
70 setLayout(gridBagLayout);
71
72 JLabel lblComments = new JLabel("Comments");
73 GridBagConstraints gbc_lblComments = new GridBagConstraints();
74 gbc_lblComments.insets = new Insets(0, 0, 5, 5);
75 gbc_lblComments.gridx = 0;
76 gbc_lblComments.gridy = 0;
77 add(lblComments, gbc_lblComments);
78
79 mySaveCommentsCheckbox = new JCheckBox("Strip Comments");
80 mySaveCommentsCheckbox.setSelected(Prefs.getInstance().getSaveStripComments());
81 GridBagConstraints gbc_SaveCommentsCheckbox = new GridBagConstraints();
82 gbc_SaveCommentsCheckbox.insets = new Insets(0, 0, 5, 0);
83 gbc_SaveCommentsCheckbox.anchor = GridBagConstraints.WEST;
84 gbc_SaveCommentsCheckbox.gridx = 1;
85 gbc_SaveCommentsCheckbox.gridy = 0;
86 add(mySaveCommentsCheckbox, gbc_SaveCommentsCheckbox);
87
88 Component verticalStrut = Box.createVerticalStrut(20);
89 GridBagConstraints gbc_verticalStrut = new GridBagConstraints();
90 gbc_verticalStrut.insets = new Insets(0, 0, 5, 5);
91 gbc_verticalStrut.gridx = 0;
92 gbc_verticalStrut.gridy = 1;
93 add(verticalStrut, gbc_verticalStrut);
94
95 JLabel lblLineEndings = new JLabel("Line Endings");
96 GridBagConstraints gbc_lblLineEndings = new GridBagConstraints();
97 gbc_lblLineEndings.insets = new Insets(0, 0, 5, 5);
98 gbc_lblLineEndings.gridx = 0;
99 gbc_lblLineEndings.gridy = 2;
100 add(lblLineEndings, gbc_lblLineEndings);
101
102 myHl7LineEndingsRadio = new JRadioButton("HL7 (ASCII-13)");
103 myLineEndingsButtonGroup.add(myHl7LineEndingsRadio);
104 GridBagConstraints gbc_Hl7LineEndingsRadio = new GridBagConstraints();
105 gbc_Hl7LineEndingsRadio.insets = new Insets(0, 0, 5, 0);
106 gbc_Hl7LineEndingsRadio.anchor = GridBagConstraints.WEST;
107 gbc_Hl7LineEndingsRadio.gridx = 1;
108 gbc_Hl7LineEndingsRadio.gridy = 2;
109 add(myHl7LineEndingsRadio, gbc_Hl7LineEndingsRadio);
110
111 myUnixLineEndingsRadio = new JRadioButton("Unix (ASCII-10)");
112 myLineEndingsButtonGroup.add(myUnixLineEndingsRadio);
113 GridBagConstraints gbc_UnixLineEndingsRadio = new GridBagConstraints();
114 gbc_UnixLineEndingsRadio.insets = new Insets(0, 0, 5, 0);
115 gbc_UnixLineEndingsRadio.anchor = GridBagConstraints.WEST;
116 gbc_UnixLineEndingsRadio.gridx = 1;
117 gbc_UnixLineEndingsRadio.gridy = 3;
118 add(myUnixLineEndingsRadio, gbc_UnixLineEndingsRadio);
119
120 myWindowsLineEndingsRadio = new JRadioButton("WIndows (ASCII-13,10)");
121 myLineEndingsButtonGroup.add(myWindowsLineEndingsRadio);
122 GridBagConstraints gbc_WindowsLineEndingsRadio = new GridBagConstraints();
123 gbc_WindowsLineEndingsRadio.insets = new Insets(0, 0, 5, 0);
124 gbc_WindowsLineEndingsRadio.anchor = GridBagConstraints.WEST;
125 gbc_WindowsLineEndingsRadio.gridx = 1;
126 gbc_WindowsLineEndingsRadio.gridy = 4;
127 add(myWindowsLineEndingsRadio, gbc_WindowsLineEndingsRadio);
128
129 myverticalStrut = Box.createVerticalStrut(20);
130 GridBagConstraints gbc_verticalStrut2 = new GridBagConstraints();
131 gbc_verticalStrut2.insets = new Insets(0, 0, 5, 5);
132 gbc_verticalStrut2.gridx = 0;
133 gbc_verticalStrut2.gridy = 5;
134 add(myverticalStrut, gbc_verticalStrut2);
135
136 mylabel = new JLabel("Charset");
137 GridBagConstraints gbc_label = new GridBagConstraints();
138 gbc_label.anchor = GridBagConstraints.EAST;
139 gbc_label.insets = new Insets(0, 0, 0, 5);
140 gbc_label.gridx = 0;
141 gbc_label.gridy = 6;
142 add(mylabel, gbc_label);
143
144 myCharsetCombo = new JComboBox();
145 myCharsetCombo.setMaximumSize(new Dimension(180, 32767));
146 myCharsetCombo.setPreferredSize(new Dimension(180, 27));
147 myCharsetCombo.setMinimumSize(new Dimension(180, 27));
148 GridBagConstraints gbc_CharsetCombo = new GridBagConstraints();
149 gbc_CharsetCombo.anchor = GridBagConstraints.WEST;
150 gbc_CharsetCombo.gridx = 1;
151 gbc_CharsetCombo.gridy = 6;
152 add(myCharsetCombo, gbc_CharsetCombo);
153
154 List<String> charSets = new ArrayList<String>(Charset.availableCharsets().keySet());
155 Collections.sort(charSets);
156 ComboBoxModel charsetModel = new DefaultComboBoxModel(charSets.toArray(new String[0]));
157 myCharsetCombo.setModel(charsetModel);
158 Charset openOrSaveCharset = Prefs.getInstance().getOpenOrSaveCharset();
159 myCharsetCombo.setSelectedItem(openOrSaveCharset.name());
160
161 initLocal();
162 }
163
164 private void initLocal() {
165 LineEndingsEnum lineEndings = Prefs.getInstance().getSaveLineEndings();
166 switch (lineEndings) {
167 case HL7:
168 myHl7LineEndingsRadio.setSelected(true);
169 break;
170 case UNIX:
171 myUnixLineEndingsRadio.setSelected(true);
172 break;
173 case WINDOWS:
174 myWindowsLineEndingsRadio.setSelected(true);
175 break;
176 }
177
178 }
179
180
181
182
183 public Charset getSelectedCharset() {
184 Charset retVal = Charset.forName((String) myCharsetCombo.getSelectedItem());
185 Prefs.getInstance().setOpenOrSaveCharset(retVal);
186 return retVal;
187 }
188
189
190
191
192 public LineEndingsEnum getSelectedLineEndings() {
193 LineEndingsEnum retVal = LineEndingsEnum.WINDOWS;
194 if (myHl7LineEndingsRadio.isSelected()) {
195 retVal = LineEndingsEnum.HL7;
196 } else if (myUnixLineEndingsRadio.isSelected()) {
197 retVal = LineEndingsEnum.UNIX;
198 }
199 Prefs.getInstance().setSaveLineEndings(retVal);
200 return retVal;
201 }
202
203
204
205
206 public boolean isSelectedSaveStripComments() {
207 boolean retVal = mySaveCommentsCheckbox.isSelected();
208 Prefs.getInstance().setSaveStripComments(retVal);
209 return retVal;
210 }
211
212 }