Lines 41-60
Link Here
|
41 |
|
41 |
|
42 |
package org.netbeans.core.ui.options.general; |
42 |
package org.netbeans.core.ui.options.general; |
43 |
|
43 |
|
|
|
44 |
import java.awt.Color; |
44 |
import java.awt.Component; |
45 |
import java.awt.Component; |
45 |
import java.awt.Cursor; |
46 |
import java.awt.Cursor; |
|
|
47 |
import java.awt.Image; |
46 |
import java.awt.event.ActionEvent; |
48 |
import java.awt.event.ActionEvent; |
47 |
import java.awt.event.ActionListener; |
49 |
import java.awt.event.ActionListener; |
|
|
50 |
import java.beans.PropertyChangeEvent; |
51 |
import java.beans.PropertyChangeSupport; |
48 |
import java.net.MalformedURLException; |
52 |
import java.net.MalformedURLException; |
49 |
import java.net.URL; |
53 |
import java.net.URL; |
50 |
import javax.swing.AbstractButton; |
54 |
import javax.swing.AbstractButton; |
51 |
import javax.swing.ButtonGroup; |
55 |
import javax.swing.ButtonGroup; |
|
|
56 |
import javax.swing.ImageIcon; |
52 |
import javax.swing.JLabel; |
57 |
import javax.swing.JLabel; |
53 |
import javax.swing.JPanel; |
58 |
import javax.swing.JPanel; |
|
|
59 |
import javax.swing.UIManager; |
60 |
import javax.swing.event.DocumentEvent; |
61 |
import javax.swing.event.DocumentListener; |
54 |
import org.netbeans.beaninfo.editors.HtmlBrowser; |
62 |
import org.netbeans.beaninfo.editors.HtmlBrowser; |
|
|
63 |
import org.netbeans.spi.options.OptionsPanelController; |
55 |
import org.openide.DialogDescriptor; |
64 |
import org.openide.DialogDescriptor; |
56 |
import org.openide.DialogDisplayer; |
65 |
import org.openide.DialogDisplayer; |
57 |
import org.openide.awt.Mnemonics; |
66 |
import org.openide.awt.Mnemonics; |
|
|
67 |
import org.openide.util.ImageUtilities; |
58 |
import org.openide.util.Lookup; |
68 |
import org.openide.util.Lookup; |
59 |
import org.openide.util.NbBundle; |
69 |
import org.openide.util.NbBundle; |
60 |
|
70 |
|
Lines 69-74
Link Here
|
69 |
private GeneralOptionsModel model; |
79 |
private GeneralOptionsModel model; |
70 |
private HtmlBrowser.FactoryEditor editor; |
80 |
private HtmlBrowser.FactoryEditor editor; |
71 |
private AdvancedProxyPanel advancedPanel; |
81 |
private AdvancedProxyPanel advancedPanel; |
|
|
82 |
private PropertyChangeSupport support = new PropertyChangeSupport(this); |
83 |
private boolean valid = true; |
72 |
|
84 |
|
73 |
|
85 |
|
74 |
/** |
86 |
/** |
Lines 76-81
Link Here
|
76 |
*/ |
88 |
*/ |
77 |
public GeneralOptionsPanel () { |
89 |
public GeneralOptionsPanel () { |
78 |
initComponents (); |
90 |
initComponents (); |
|
|
91 |
|
92 |
Color nbErrorForeground = UIManager.getColor("nb.errorForeground"); |
93 |
if (nbErrorForeground == null) { |
94 |
nbErrorForeground = new Color(255, 0, 0); |
95 |
} |
96 |
errorLabel.setForeground(nbErrorForeground); |
97 |
Image img = ImageUtilities.loadImage("org/netbeans/core/ui/resources/error.png"); //NOI18N |
98 |
errorLabel.setIcon(new ImageIcon(img)); |
99 |
errorLabel.setVisible(false); |
79 |
|
100 |
|
80 |
loc (lWebBrowser, "Web_Browser"); |
101 |
loc (lWebBrowser, "Web_Browser"); |
81 |
loc (lWebProxy, "Web_Proxy"); |
102 |
loc (lWebProxy, "Web_Proxy"); |
Lines 95-100
Link Here
|
95 |
cbWebBrowser.addActionListener (this); |
116 |
cbWebBrowser.addActionListener (this); |
96 |
tfProxyHost.addActionListener (this); |
117 |
tfProxyHost.addActionListener (this); |
97 |
tfProxyPort.addActionListener (this); |
118 |
tfProxyPort.addActionListener (this); |
|
|
119 |
|
120 |
tfProxyPort.getDocument().addDocumentListener(new DocumentListener(){ |
121 |
|
122 |
public void insertUpdate(DocumentEvent e) { |
123 |
validatePortValue(); |
124 |
} |
125 |
|
126 |
public void removeUpdate(DocumentEvent e) { |
127 |
validatePortValue(); |
128 |
} |
129 |
|
130 |
public void changedUpdate(DocumentEvent e) { |
131 |
validatePortValue(); |
132 |
} |
133 |
}); |
98 |
|
134 |
|
99 |
ButtonGroup bgProxy = new ButtonGroup (); |
135 |
ButtonGroup bgProxy = new ButtonGroup (); |
100 |
bgProxy.add (rbNoProxy); |
136 |
bgProxy.add (rbNoProxy); |
Lines 165-170
Link Here
|
165 |
jUsageCheck = new javax.swing.JCheckBox(); |
201 |
jUsageCheck = new javax.swing.JCheckBox(); |
166 |
lblUsageInfo = new javax.swing.JLabel(); |
202 |
lblUsageInfo = new javax.swing.JLabel(); |
167 |
lblLearnMore = new javax.swing.JLabel(); |
203 |
lblLearnMore = new javax.swing.JLabel(); |
|
|
204 |
errorLabel = new javax.swing.JLabel(); |
168 |
|
205 |
|
169 |
lWebBrowser.setLabelFor(cbWebBrowser); |
206 |
lWebBrowser.setLabelFor(cbWebBrowser); |
170 |
org.openide.awt.Mnemonics.setLocalizedText(lWebBrowser, org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.lWebBrowser.text")); // NOI18N |
207 |
org.openide.awt.Mnemonics.setLocalizedText(lWebBrowser, org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.lWebBrowser.text")); // NOI18N |
Lines 236-241
Link Here
|
236 |
} |
273 |
} |
237 |
}); |
274 |
}); |
238 |
|
275 |
|
|
|
276 |
errorLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); |
277 |
|
239 |
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); |
278 |
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); |
240 |
this.setLayout(layout); |
279 |
this.setLayout(layout); |
241 |
layout.setHorizontalGroup( |
280 |
layout.setHorizontalGroup( |
Lines 246-252
Link Here
|
246 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() |
285 |
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() |
247 |
.add(lWebBrowser) |
286 |
.add(lWebBrowser) |
248 |
.add(18, 18, 18) |
287 |
.add(18, 18, 18) |
249 |
.add(cbWebBrowser, 0, 1131, Short.MAX_VALUE) |
288 |
.add(cbWebBrowser, 0, 1132, Short.MAX_VALUE) |
250 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
289 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
251 |
.add(editBrowserButton)) |
290 |
.add(editBrowserButton)) |
252 |
.add(jSeparator2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1291, Short.MAX_VALUE) |
291 |
.add(jSeparator2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1291, Short.MAX_VALUE) |
Lines 260-270
Link Here
|
260 |
.add(layout.createSequentialGroup() |
299 |
.add(layout.createSequentialGroup() |
261 |
.add(17, 17, 17) |
300 |
.add(17, 17, 17) |
262 |
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
301 |
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
263 |
.add(bMoreProxy) |
302 |
.add(layout.createSequentialGroup() |
|
|
303 |
.add(bMoreProxy) |
304 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
305 |
.add(errorLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1105, Short.MAX_VALUE)) |
264 |
.add(layout.createSequentialGroup() |
306 |
.add(layout.createSequentialGroup() |
265 |
.add(lProxyHost) |
307 |
.add(lProxyHost) |
266 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
308 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
267 |
.add(tfProxyHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 957, Short.MAX_VALUE) |
309 |
.add(tfProxyHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1016, Short.MAX_VALUE) |
268 |
.add(12, 12, 12) |
310 |
.add(12, 12, 12) |
269 |
.add(lProxyPort) |
311 |
.add(lProxyPort) |
270 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
312 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
Lines 274-283
Link Here
|
274 |
.add(lUsage) |
316 |
.add(lUsage) |
275 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
317 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
276 |
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
318 |
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) |
277 |
.add(lblUsageInfo, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1171, Short.MAX_VALUE) |
319 |
.add(lblUsageInfo, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1205, Short.MAX_VALUE) |
278 |
.add(layout.createSequentialGroup() |
320 |
.add(layout.createSequentialGroup() |
279 |
.add(jUsageCheck) |
321 |
.add(jUsageCheck) |
280 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 690, Short.MAX_VALUE)) |
322 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 838, Short.MAX_VALUE)) |
281 |
.add(lblLearnMore)))) |
323 |
.add(lblLearnMore)))) |
282 |
.add(0, 0, 0)) |
324 |
.add(0, 0, 0)) |
283 |
); |
325 |
); |
Lines 307-313
Link Here
|
307 |
.add(tfProxyHost, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
349 |
.add(tfProxyHost, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
308 |
.add(lProxyPort)) |
350 |
.add(lProxyPort)) |
309 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
351 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) |
310 |
.add(bMoreProxy) |
352 |
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) |
|
|
353 |
.add(bMoreProxy) |
354 |
.add(errorLabel)) |
311 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
355 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
312 |
.add(jSeparator3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
356 |
.add(jSeparator3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) |
313 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
357 |
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) |
Lines 325-330
Link Here
|
325 |
bMoreProxy.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "LBL_GeneralOptionsPanel_bMoreProxy.AD")); // NOI18N |
369 |
bMoreProxy.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "LBL_GeneralOptionsPanel_bMoreProxy.AD")); // NOI18N |
326 |
editBrowserButton.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.editBrowserButton.AN")); // NOI18N |
370 |
editBrowserButton.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.editBrowserButton.AN")); // NOI18N |
327 |
editBrowserButton.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.editBrowserButton.AD")); // NOI18N |
371 |
editBrowserButton.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(GeneralOptionsPanel.class, "GeneralOptionsPanel.editBrowserButton.AD")); // NOI18N |
|
|
372 |
errorLabel.getAccessibleContext().setAccessibleName(""); // NOI18N |
328 |
}// </editor-fold>//GEN-END:initComponents |
373 |
}// </editor-fold>//GEN-END:initComponents |
329 |
|
374 |
|
330 |
private void editBrowserButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editBrowserButtonActionPerformed |
375 |
private void editBrowserButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editBrowserButtonActionPerformed |
Lines 358-363
Link Here
|
358 |
advancedPanel = new AdvancedProxyPanel (model); |
403 |
advancedPanel = new AdvancedProxyPanel (model); |
359 |
} |
404 |
} |
360 |
DialogDescriptor dd = new DialogDescriptor (advancedPanel, loc ("LBL_AdvancedProxyPanel_Title")); |
405 |
DialogDescriptor dd = new DialogDescriptor (advancedPanel, loc ("LBL_AdvancedProxyPanel_Title")); |
|
|
406 |
advancedPanel.setDialogDescriptor(dd); |
407 |
dd.createNotificationLineSupport(); |
361 |
advancedPanel.update (tfProxyHost.getText (), tfProxyPort.getText ()); |
408 |
advancedPanel.update (tfProxyHost.getText (), tfProxyPort.getText ()); |
362 |
DialogDisplayer.getDefault ().createDialog (dd).setVisible (true); |
409 |
DialogDisplayer.getDefault ().createDialog (dd).setVisible (true); |
363 |
if (DialogDescriptor.OK_OPTION.equals (dd.getValue ())) { |
410 |
if (DialogDescriptor.OK_OPTION.equals (dd.getValue ())) { |
Lines 407-412
Link Here
|
407 |
private javax.swing.JButton bMoreProxy; |
454 |
private javax.swing.JButton bMoreProxy; |
408 |
private javax.swing.JComboBox cbWebBrowser; |
455 |
private javax.swing.JComboBox cbWebBrowser; |
409 |
private javax.swing.JButton editBrowserButton; |
456 |
private javax.swing.JButton editBrowserButton; |
|
|
457 |
private javax.swing.JLabel errorLabel; |
410 |
private javax.swing.JSeparator jSeparator2; |
458 |
private javax.swing.JSeparator jSeparator2; |
411 |
private javax.swing.JSeparator jSeparator3; |
459 |
private javax.swing.JSeparator jSeparator3; |
412 |
private javax.swing.JCheckBox jUsageCheck; |
460 |
private javax.swing.JCheckBox jUsageCheck; |
Lines 424-430
Link Here
|
424 |
private javax.swing.JTextField tfProxyPort; |
472 |
private javax.swing.JTextField tfProxyPort; |
425 |
// End of variables declaration//GEN-END:variables |
473 |
// End of variables declaration//GEN-END:variables |
426 |
|
474 |
|
427 |
|
475 |
|
|
|
476 |
private void validatePortValue() { |
477 |
clearError(); |
478 |
|
479 |
boolean oldValid = valid; |
480 |
valid = isPortValid(); |
481 |
if (!valid) { |
482 |
showError(loc("LBL_GeneralOptionsPanel_PortError")); // NOI18N |
483 |
} |
484 |
|
485 |
if (oldValid != valid) { |
486 |
support.firePropertyChange( |
487 |
new PropertyChangeEvent(this, |
488 |
OptionsPanelController.PROP_VALID, oldValid, valid)); |
489 |
} |
490 |
} |
491 |
|
492 |
private boolean isPortValid() { |
493 |
String port = tfProxyPort.getText(); |
494 |
boolean portStatus = true; |
495 |
if (port != null && port.length() > 0) { |
496 |
try { |
497 |
Integer.parseInt(port); |
498 |
} catch (NumberFormatException nfex) { |
499 |
portStatus = false; |
500 |
} |
501 |
} |
502 |
|
503 |
return portStatus; |
504 |
} |
505 |
|
506 |
private void showError(String message) { |
507 |
errorLabel.setVisible(true); |
508 |
errorLabel.setText(message); |
509 |
} |
510 |
|
511 |
private void clearError() { |
512 |
errorLabel.setText(""); |
513 |
errorLabel.setVisible(false); |
514 |
} |
515 |
|
428 |
private static String loc (String key, String... params) { |
516 |
private static String loc (String key, String... params) { |
429 |
return NbBundle.getMessage (GeneralOptionsPanel.class, key, params); |
517 |
return NbBundle.getMessage (GeneralOptionsPanel.class, key, params); |
430 |
} |
518 |
} |
Lines 560-566
Link Here
|
560 |
} |
648 |
} |
561 |
|
649 |
|
562 |
boolean dataValid () { |
650 |
boolean dataValid () { |
563 |
return true; |
651 |
return isPortValid(); |
564 |
} |
652 |
} |
565 |
|
653 |
|
566 |
boolean isChanged () { |
654 |
boolean isChanged () { |
Lines 569-574
Link Here
|
569 |
if (!tfProxyPort.getText ().equals (model.getHttpProxyPort ())) return true; |
657 |
if (!tfProxyPort.getText ().equals (model.getHttpProxyPort ())) return true; |
570 |
return changed; |
658 |
return changed; |
571 |
} |
659 |
} |
|
|
660 |
|
661 |
@Override |
662 |
public void addPropertyChangeListener(java.beans.PropertyChangeListener l) { |
663 |
support.addPropertyChangeListener(l); |
664 |
} |
665 |
|
666 |
@Override |
667 |
public void removePropertyChangeListener(java.beans.PropertyChangeListener l) { |
668 |
support.removePropertyChangeListener(l); |
669 |
} |
572 |
|
670 |
|
573 |
public void actionPerformed (ActionEvent e) { |
671 |
public void actionPerformed (ActionEvent e) { |
574 |
changed = true; |
672 |
changed = true; |