Line 0
Link Here
|
|
|
1 |
/* |
2 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
3 |
* |
4 |
* Copyright 2012 Oracle and/or its affiliates. All rights reserved. |
5 |
* |
6 |
* Oracle and Java are registered trademarks of Oracle and/or its affiliates. |
7 |
* Other names may be trademarks of their respective owners. |
8 |
* |
9 |
* The contents of this file are subject to the terms of either the GNU |
10 |
* General Public License Version 2 only ("GPL") or the Common |
11 |
* Development and Distribution License("CDDL") (collectively, the |
12 |
* "License"). You may not use this file except in compliance with the |
13 |
* License. You can obtain a copy of the License at |
14 |
* http://www.netbeans.org/cddl-gplv2.html |
15 |
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the |
16 |
* specific language governing permissions and limitations under the |
17 |
* License. When distributing the software, include this License Header |
18 |
* Notice in each file and include the License file at |
19 |
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this |
20 |
* particular file as subject to the "Classpath" exception as provided |
21 |
* by Oracle in the GPL Version 2 section of the License file that |
22 |
* accompanied this code. If applicable, add the following below the |
23 |
* License Header, with the fields enclosed by brackets [] replaced by |
24 |
* your own identifying information: |
25 |
* "Portions Copyrighted [year] [name of copyright owner]" |
26 |
* |
27 |
* If you wish your version of this file to be governed by only the CDDL |
28 |
* or only the GPL Version 2, indicate your decision by adding |
29 |
* "[Contributor] elects to include this software in this distribution |
30 |
* under the [CDDL or GPL Version 2] license." If you do not indicate a |
31 |
* single choice of license, a recipient has the option to distribute |
32 |
* your version of this file under either the CDDL, the GPL Version 2 or |
33 |
* to extend the choice of license to its licensees as provided above. |
34 |
* However, if you add GPL Version 2 code and therefore, elected the GPL |
35 |
* Version 2 license, then the option applies only if the new code is |
36 |
* made subject to such option by the copyright holder. |
37 |
* |
38 |
* Contributor(s): |
39 |
* |
40 |
* Portions Copyrighted 2012 Sun Microsystems, Inc. |
41 |
*/ |
42 |
package org.netbeans.core.output2.options; |
43 |
|
44 |
import java.awt.Color; |
45 |
import java.awt.Font; |
46 |
import java.beans.PropertyChangeEvent; |
47 |
import java.beans.PropertyChangeListener; |
48 |
import java.beans.PropertyEditor; |
49 |
import java.beans.PropertyEditorManager; |
50 |
import java.io.IOException; |
51 |
import javax.swing.Action; |
52 |
import javax.swing.JComboBox; |
53 |
import org.netbeans.core.output2.Controller; |
54 |
import org.netbeans.core.output2.NbIOProvider; |
55 |
import org.openide.DialogDescriptor; |
56 |
import org.openide.DialogDisplayer; |
57 |
import org.openide.awt.ColorComboBox; |
58 |
import org.openide.util.Lookup; |
59 |
import org.openide.util.NbBundle; |
60 |
import org.openide.util.NbPreferences; |
61 |
import org.openide.util.RequestProcessor; |
62 |
import org.openide.windows.IOColorPrint; |
63 |
import org.openide.windows.IOContainer; |
64 |
import org.openide.windows.InputOutput; |
65 |
import org.openide.windows.OutputEvent; |
66 |
import org.openide.windows.OutputListener; |
67 |
|
68 |
@NbBundle.Messages({ |
69 |
"LBL_Description=Output Window Settings" |
70 |
}) |
71 |
public final class OutputSettingsPanel extends javax.swing.JPanel { |
72 |
|
73 |
private OutputOptions outputOptions; |
74 |
private InputOutput previewInputOutput = null; |
75 |
private final OutputSettingsOptionsPanelController controller; |
76 |
private LinkStyleModel linkStyleModel = new LinkStyleModel(); |
77 |
|
78 |
OutputSettingsPanel(OutputSettingsOptionsPanelController controller) { |
79 |
this.controller = controller; |
80 |
initComponents(); |
81 |
} |
82 |
|
83 |
/** |
84 |
* This method is called from within the constructor to initialize the form. |
85 |
* WARNING: Do NOT modify this code. The content of this method is always |
86 |
* regenerated by the Form Editor. |
87 |
*/ |
88 |
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents |
89 |
private void initComponents() { |
90 |
bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); |
91 |
|
92 |
lblTitle = new javax.swing.JLabel(); |
93 |
jPanel2 = new javax.swing.JPanel(); |
94 |
lblFontFamily = new javax.swing.JLabel(); |
95 |
lblStandardColor = new javax.swing.JLabel(); |
96 |
lblErrorColor = new javax.swing.JLabel(); |
97 |
lblBackgroundColor = new javax.swing.JLabel(); |
98 |
lblLinkColor = new javax.swing.JLabel(); |
99 |
cmbLinkColor = new ColorComboBox(); |
100 |
cmbBackgroundColor = new ColorComboBox(); |
101 |
cmbErrorColor = new ColorComboBox(); |
102 |
cmbStandardColor = new ColorComboBox(); |
103 |
lblFontSize = new javax.swing.JLabel(); |
104 |
spnFontSize = new javax.swing.JSpinner(); |
105 |
btnSelectFont = new javax.swing.JButton(); |
106 |
cmbLinkStyle = new javax.swing.JComboBox(); |
107 |
lblLinkStyle = new javax.swing.JLabel(); |
108 |
fldFontFamily = new javax.swing.JTextField(); |
109 |
cmbImportantLinkColor = new ColorComboBox(); |
110 |
jLabel1 = new javax.swing.JLabel(); |
111 |
previewPanel = new javax.swing.JPanel(); |
112 |
btnRestore = new javax.swing.JButton(); |
113 |
|
114 |
org.openide.awt.Mnemonics.setLocalizedText(lblTitle, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblTitle.text")); // NOI18N |
115 |
|
116 |
org.openide.awt.Mnemonics.setLocalizedText(lblFontFamily, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblFontFamily.text")); // NOI18N |
117 |
|
118 |
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, btnSelectFont, org.jdesktop.beansbinding.ObjectProperty.create(), lblFontFamily, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
119 |
bindingGroup.addBinding(binding); |
120 |
|
121 |
org.openide.awt.Mnemonics.setLocalizedText(lblStandardColor, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblStandardColor.text")); // NOI18N |
122 |
|
123 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbStandardColor, org.jdesktop.beansbinding.ObjectProperty.create(), lblStandardColor, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
124 |
bindingGroup.addBinding(binding); |
125 |
|
126 |
org.openide.awt.Mnemonics.setLocalizedText(lblErrorColor, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblErrorColor.text")); // NOI18N |
127 |
|
128 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbErrorColor, org.jdesktop.beansbinding.ObjectProperty.create(), lblErrorColor, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
129 |
bindingGroup.addBinding(binding); |
130 |
|
131 |
org.openide.awt.Mnemonics.setLocalizedText(lblBackgroundColor, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblBackgroundColor.text")); // NOI18N |
132 |
|
133 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbBackgroundColor, org.jdesktop.beansbinding.ObjectProperty.create(), lblBackgroundColor, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
134 |
bindingGroup.addBinding(binding); |
135 |
|
136 |
org.openide.awt.Mnemonics.setLocalizedText(lblLinkColor, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblLinkColor.text")); // NOI18N |
137 |
|
138 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbLinkColor, org.jdesktop.beansbinding.ObjectProperty.create(), lblLinkColor, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
139 |
bindingGroup.addBinding(binding); |
140 |
|
141 |
cmbLinkColor.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbLinkColor.toolTipText")); // NOI18N |
142 |
cmbLinkColor.addActionListener(new java.awt.event.ActionListener() { |
143 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
144 |
cmbLinkColorActionPerformed(evt); |
145 |
} |
146 |
}); |
147 |
|
148 |
cmbBackgroundColor.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbBackgroundColor.toolTipText")); // NOI18N |
149 |
cmbBackgroundColor.addActionListener(new java.awt.event.ActionListener() { |
150 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
151 |
cmbBackgroundColorActionPerformed(evt); |
152 |
} |
153 |
}); |
154 |
|
155 |
cmbErrorColor.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbErrorColor.toolTipText")); // NOI18N |
156 |
cmbErrorColor.addActionListener(new java.awt.event.ActionListener() { |
157 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
158 |
cmbErrorColorActionPerformed(evt); |
159 |
} |
160 |
}); |
161 |
|
162 |
cmbStandardColor.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbStandardColor.toolTipText")); // NOI18N |
163 |
cmbStandardColor.addActionListener(new java.awt.event.ActionListener() { |
164 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
165 |
cmbStandardColorActionPerformed(evt); |
166 |
} |
167 |
}); |
168 |
|
169 |
org.openide.awt.Mnemonics.setLocalizedText(lblFontSize, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblFontSize.text")); // NOI18N |
170 |
|
171 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, spnFontSize, org.jdesktop.beansbinding.ObjectProperty.create(), lblFontSize, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
172 |
bindingGroup.addBinding(binding); |
173 |
|
174 |
spnFontSize.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.spnFontSize.toolTipText")); // NOI18N |
175 |
spnFontSize.addChangeListener(new javax.swing.event.ChangeListener() { |
176 |
public void stateChanged(javax.swing.event.ChangeEvent evt) { |
177 |
spnFontSizeStateChanged(evt); |
178 |
} |
179 |
}); |
180 |
|
181 |
org.openide.awt.Mnemonics.setLocalizedText(btnSelectFont, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.btnSelectFont.text")); // NOI18N |
182 |
btnSelectFont.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.btnSelectFont.toolTipText")); // NOI18N |
183 |
btnSelectFont.addActionListener(new java.awt.event.ActionListener() { |
184 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
185 |
btnSelectFontActionPerformed(evt); |
186 |
} |
187 |
}); |
188 |
|
189 |
cmbLinkStyle.setModel(linkStyleModel); |
190 |
cmbLinkStyle.setSelectedIndex(0); |
191 |
cmbLinkStyle.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbLinkStyle.toolTipText")); // NOI18N |
192 |
cmbLinkStyle.addActionListener(new java.awt.event.ActionListener() { |
193 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
194 |
cmbLinkStyleActionPerformed(evt); |
195 |
} |
196 |
}); |
197 |
|
198 |
org.openide.awt.Mnemonics.setLocalizedText(lblLinkStyle, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.lblLinkStyle.text")); // NOI18N |
199 |
|
200 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbLinkStyle, org.jdesktop.beansbinding.ObjectProperty.create(), lblLinkStyle, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
201 |
bindingGroup.addBinding(binding); |
202 |
|
203 |
fldFontFamily.setEditable(false); |
204 |
fldFontFamily.setText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.fldFontFamily.text")); // NOI18N |
205 |
|
206 |
cmbImportantLinkColor.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.cmbImportantLinkColor.toolTipText")); // NOI18N |
207 |
cmbImportantLinkColor.addActionListener(new java.awt.event.ActionListener() { |
208 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
209 |
cmbImportantLinkColorActionPerformed(evt); |
210 |
} |
211 |
}); |
212 |
|
213 |
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.jLabel1.text")); // NOI18N |
214 |
|
215 |
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmbImportantLinkColor, org.jdesktop.beansbinding.ObjectProperty.create(), jLabel1, org.jdesktop.beansbinding.BeanProperty.create("labelFor")); |
216 |
bindingGroup.addBinding(binding); |
217 |
|
218 |
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); |
219 |
jPanel2.setLayout(jPanel2Layout); |
220 |
jPanel2Layout.setHorizontalGroup( |
221 |
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
222 |
.addGroup(jPanel2Layout.createSequentialGroup() |
223 |
.addContainerGap() |
224 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
225 |
.addGroup(jPanel2Layout.createSequentialGroup() |
226 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
227 |
.addComponent(lblLinkColor) |
228 |
.addComponent(lblFontFamily) |
229 |
.addComponent(lblBackgroundColor) |
230 |
.addComponent(lblFontSize) |
231 |
.addComponent(jLabel1) |
232 |
.addComponent(lblLinkStyle)) |
233 |
.addGap(79, 79, 79) |
234 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
235 |
.addComponent(cmbLinkStyle, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
236 |
.addComponent(cmbLinkColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
237 |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() |
238 |
.addComponent(fldFontFamily) |
239 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
240 |
.addComponent(btnSelectFont)) |
241 |
.addGroup(jPanel2Layout.createSequentialGroup() |
242 |
.addComponent(spnFontSize, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE) |
243 |
.addGap(0, 46, Short.MAX_VALUE)) |
244 |
.addComponent(cmbImportantLinkColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
245 |
.addComponent(cmbBackgroundColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) |
246 |
.addGroup(jPanel2Layout.createSequentialGroup() |
247 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
248 |
.addComponent(lblErrorColor) |
249 |
.addComponent(lblStandardColor)) |
250 |
.addGap(104, 104, 104) |
251 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
252 |
.addComponent(cmbErrorColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
253 |
.addComponent(cmbStandardColor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) |
254 |
.addContainerGap()) |
255 |
); |
256 |
jPanel2Layout.setVerticalGroup( |
257 |
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
258 |
.addGroup(jPanel2Layout.createSequentialGroup() |
259 |
.addContainerGap() |
260 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
261 |
.addComponent(lblFontFamily) |
262 |
.addComponent(btnSelectFont) |
263 |
.addComponent(fldFontFamily, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
264 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
265 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
266 |
.addComponent(lblFontSize) |
267 |
.addComponent(spnFontSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
268 |
.addGap(18, 18, 18) |
269 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
270 |
.addComponent(lblBackgroundColor) |
271 |
.addComponent(cmbBackgroundColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
272 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
273 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
274 |
.addComponent(cmbStandardColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
275 |
.addComponent(lblStandardColor)) |
276 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
277 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
278 |
.addComponent(cmbErrorColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
279 |
.addComponent(lblErrorColor)) |
280 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
281 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
282 |
.addComponent(lblLinkColor) |
283 |
.addComponent(cmbLinkColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
284 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
285 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
286 |
.addComponent(cmbImportantLinkColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
287 |
.addComponent(jLabel1)) |
288 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
289 |
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
290 |
.addComponent(cmbLinkStyle, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
291 |
.addComponent(lblLinkStyle)) |
292 |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
293 |
); |
294 |
|
295 |
previewPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED)); |
296 |
previewPanel.setLayout(new javax.swing.BoxLayout(previewPanel, javax.swing.BoxLayout.LINE_AXIS)); |
297 |
|
298 |
org.openide.awt.Mnemonics.setLocalizedText(btnRestore, org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.btnRestore.text")); // NOI18N |
299 |
btnRestore.setToolTipText(org.openide.util.NbBundle.getMessage(OutputSettingsPanel.class, "OutputSettingsPanel.btnRestore.toolTipText")); // NOI18N |
300 |
btnRestore.addActionListener(new java.awt.event.ActionListener() { |
301 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
302 |
btnRestoreActionPerformed(evt); |
303 |
} |
304 |
}); |
305 |
|
306 |
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); |
307 |
this.setLayout(layout); |
308 |
layout.setHorizontalGroup( |
309 |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
310 |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() |
311 |
.addContainerGap() |
312 |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
313 |
.addComponent(previewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
314 |
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
315 |
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() |
316 |
.addComponent(lblTitle) |
317 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) |
318 |
.addComponent(btnRestore))) |
319 |
.addContainerGap()) |
320 |
); |
321 |
layout.setVerticalGroup( |
322 |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
323 |
.addGroup(layout.createSequentialGroup() |
324 |
.addContainerGap() |
325 |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
326 |
.addComponent(lblTitle) |
327 |
.addComponent(btnRestore)) |
328 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
329 |
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
330 |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
331 |
.addComponent(previewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE) |
332 |
.addContainerGap()) |
333 |
); |
334 |
|
335 |
bindingGroup.bind(); |
336 |
}// </editor-fold>//GEN-END:initComponents |
337 |
|
338 |
private void btnSelectFontActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSelectFontActionPerformed |
339 |
PropertyEditor pe = PropertyEditorManager.findEditor(Font.class); |
340 |
if (pe != null) { |
341 |
pe.setValue(outputOptions.getFont()); |
342 |
DialogDescriptor dd = new DialogDescriptor(pe.getCustomEditor(), |
343 |
NbBundle.getMessage(Controller.class, |
344 |
"LBL_Font_Chooser_Title")); //NOI18N |
345 |
String defaultFont = NbBundle.getMessage(Controller.class, |
346 |
"BTN_Defaul_Font"); //NOI18N |
347 |
dd.setOptions(new Object[]{DialogDescriptor.OK_OPTION, |
348 |
defaultFont, DialogDescriptor.CANCEL_OPTION}); //NOI18N |
349 |
DialogDisplayer.getDefault().createDialog(dd).setVisible(true); |
350 |
if (dd.getValue() == DialogDescriptor.OK_OPTION) { |
351 |
Font f = (Font) pe.getValue(); |
352 |
outputOptions.setFont(f); |
353 |
} else if (dd.getValue() == defaultFont) { |
354 |
outputOptions.setFont(null); |
355 |
} |
356 |
updateFontField(); |
357 |
} |
358 |
}//GEN-LAST:event_btnSelectFontActionPerformed |
359 |
|
360 |
private void cmbStandardColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbStandardColorActionPerformed |
361 |
Color std = ((ColorComboBox) cmbStandardColor).getSelectedColor(); |
362 |
if (std != null) { |
363 |
outputOptions.setColorStandard(std); |
364 |
} |
365 |
}//GEN-LAST:event_cmbStandardColorActionPerformed |
366 |
|
367 |
private void spnFontSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spnFontSizeStateChanged |
368 |
int fontSize = (Integer) spnFontSize.getValue(); |
369 |
outputOptions.setFont(outputOptions.getFont().deriveFont( |
370 |
(float) fontSize)); |
371 |
updateFontField(); |
372 |
}//GEN-LAST:event_spnFontSizeStateChanged |
373 |
|
374 |
private void cmbBackgroundColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbBackgroundColorActionPerformed |
375 |
Color bg = ((ColorComboBox) cmbBackgroundColor).getSelectedColor(); |
376 |
if (bg != null) { |
377 |
outputOptions.setColorBackground(bg); |
378 |
} |
379 |
}//GEN-LAST:event_cmbBackgroundColorActionPerformed |
380 |
|
381 |
private void cmbErrorColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbErrorColorActionPerformed |
382 |
Color err = ((ColorComboBox) cmbErrorColor).getSelectedColor(); |
383 |
if (err != null) { |
384 |
outputOptions.setColorError(err); |
385 |
} |
386 |
}//GEN-LAST:event_cmbErrorColorActionPerformed |
387 |
|
388 |
private void cmbLinkColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbLinkColorActionPerformed |
389 |
Color link = ((ColorComboBox) cmbLinkColor).getSelectedColor(); |
390 |
if (link != null) { |
391 |
outputOptions.setColorLink(link); |
392 |
} |
393 |
}//GEN-LAST:event_cmbLinkColorActionPerformed |
394 |
|
395 |
private void cmbImportantLinkColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbImportantLinkColorActionPerformed |
396 |
Color iLink = ((ColorComboBox) cmbImportantLinkColor). |
397 |
getSelectedColor(); |
398 |
if (iLink != null) { |
399 |
outputOptions.setColorLinkImportant(iLink); |
400 |
} |
401 |
}//GEN-LAST:event_cmbImportantLinkColorActionPerformed |
402 |
|
403 |
private void btnRestoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestoreActionPerformed |
404 |
outputOptions.resetToDefault(); |
405 |
updateControlsByModel(); |
406 |
}//GEN-LAST:event_btnRestoreActionPerformed |
407 |
|
408 |
private void cmbLinkStyleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbLinkStyleActionPerformed |
409 |
outputOptions.setLinkStyle(linkStyleModel.getLinkStyle()); |
410 |
}//GEN-LAST:event_cmbLinkStyleActionPerformed |
411 |
|
412 |
void load() { |
413 |
if (previewInputOutput == null) { |
414 |
initPreview(); |
415 |
} |
416 |
updateControlsByModel(); |
417 |
} |
418 |
|
419 |
private void selectColor(JComboBox combo, Color color) { |
420 |
((ColorComboBox) combo).setSelectedColor(color); |
421 |
} |
422 |
|
423 |
private void updateFontField() { |
424 |
Font f = outputOptions.getFont(); |
425 |
fldFontFamily.setText(f.getFamily() + " " + f.getSize()); //NOI18N |
426 |
} |
427 |
|
428 |
void store() { |
429 |
Controller.getDefault().updateOptions(outputOptions); |
430 |
OutputOptions.getDefault().assign(outputOptions); |
431 |
RequestProcessor.getDefault().post(new Runnable() { |
432 |
@Override |
433 |
public void run() { |
434 |
OutputOptions.getDefault().saveTo( |
435 |
NbPreferences.forModule(Controller.class)); |
436 |
} |
437 |
}); |
438 |
} |
439 |
|
440 |
void cancel() { |
441 |
if (previewInputOutput != null) { |
442 |
previewInputOutput.closeInputOutput(); |
443 |
} |
444 |
} |
445 |
|
446 |
boolean valid() { |
447 |
// TODO check whether form is consistent and complete |
448 |
return true; |
449 |
} |
450 |
// Variables declaration - do not modify//GEN-BEGIN:variables |
451 |
private javax.swing.JButton btnRestore; |
452 |
private javax.swing.JButton btnSelectFont; |
453 |
private javax.swing.JComboBox cmbBackgroundColor; |
454 |
private javax.swing.JComboBox cmbErrorColor; |
455 |
private javax.swing.JComboBox cmbImportantLinkColor; |
456 |
private javax.swing.JComboBox cmbLinkColor; |
457 |
private javax.swing.JComboBox cmbLinkStyle; |
458 |
private javax.swing.JComboBox cmbStandardColor; |
459 |
private javax.swing.JTextField fldFontFamily; |
460 |
private javax.swing.JLabel jLabel1; |
461 |
private javax.swing.JPanel jPanel2; |
462 |
private javax.swing.JLabel lblBackgroundColor; |
463 |
private javax.swing.JLabel lblErrorColor; |
464 |
private javax.swing.JLabel lblFontFamily; |
465 |
private javax.swing.JLabel lblFontSize; |
466 |
private javax.swing.JLabel lblLinkColor; |
467 |
private javax.swing.JLabel lblLinkStyle; |
468 |
private javax.swing.JLabel lblStandardColor; |
469 |
private javax.swing.JLabel lblTitle; |
470 |
private javax.swing.JPanel previewPanel; |
471 |
private javax.swing.JSpinner spnFontSize; |
472 |
private org.jdesktop.beansbinding.BindingGroup bindingGroup; |
473 |
// End of variables declaration//GEN-END:variables |
474 |
|
475 |
private void initPreview() { |
476 |
previewInputOutput = initPreviewInputOutput(); |
477 |
outputOptions = ((Lookup.Provider) previewInputOutput). |
478 |
getLookup().lookup(OutputOptions.class); |
479 |
previewInputOutput.getOut().println("Standard Output"); //NOI18N |
480 |
previewInputOutput.getErr().println("Error Output"); //NOI18N |
481 |
OutputListener ol = new OutputListenerImpl(); |
482 |
try { |
483 |
IOColorPrint.print(previewInputOutput, "Standard Link", //NOI18N |
484 |
ol, false, null); |
485 |
previewInputOutput.getOut().println(); |
486 |
IOColorPrint.print(previewInputOutput, "Important Link", //NOI18N |
487 |
ol, true, null); |
488 |
previewInputOutput.getOut().print(" "); //NOI18N |
489 |
} catch (IOException ex) { |
490 |
ex.printStackTrace(previewInputOutput.getErr()); |
491 |
} |
492 |
previewInputOutput.getOut().close(); |
493 |
previewInputOutput.getErr().close(); |
494 |
outputOptions.addPropertyChangeListener(new PropertyChangeListener() { |
495 |
@Override |
496 |
public void propertyChange(PropertyChangeEvent evt) { |
497 |
controller.changed(); |
498 |
updateControlsByModel(); |
499 |
} |
500 |
}); |
501 |
} |
502 |
|
503 |
private InputOutput initPreviewInputOutput() throws NullPointerException { |
504 |
IOContainer ioContainer = IOContainer.create( |
505 |
new PreviewIOProvider(previewPanel)); |
506 |
InputOutput io = NbIOProvider.getDefault().getIO( |
507 |
"Preview", false, new Action[0], ioContainer); //NOI18N |
508 |
return io; |
509 |
} |
510 |
|
511 |
private void updateControlsByModel() { |
512 |
updateFontField(); |
513 |
spnFontSize.setValue(outputOptions.getFont().getSize()); |
514 |
selectColor(cmbStandardColor, outputOptions.getColorStandard()); |
515 |
selectColor(cmbErrorColor, outputOptions.getColorError()); |
516 |
selectColor(cmbBackgroundColor, outputOptions.getColorBackground()); |
517 |
selectColor(cmbLinkColor, outputOptions.getColorLink()); |
518 |
selectColor(cmbImportantLinkColor, |
519 |
outputOptions.getColorLinkImportant()); |
520 |
cmbLinkStyle.setSelectedItem( |
521 |
linkStyleModel.itemFor(outputOptions.getLinkStyle())); |
522 |
cmbLinkStyle.repaint(); |
523 |
} |
524 |
|
525 |
private static class OutputListenerImpl implements OutputListener { |
526 |
|
527 |
public OutputListenerImpl() { |
528 |
} |
529 |
|
530 |
@Override |
531 |
public void outputLineSelected(OutputEvent ev) { |
532 |
} |
533 |
|
534 |
@Override |
535 |
public void outputLineAction(OutputEvent ev) { |
536 |
} |
537 |
|
538 |
@Override |
539 |
public void outputLineCleared(OutputEvent ev) { |
540 |
} |
541 |
} |
542 |
} |